UNPKG

react-native-bluetooth-datecs-printer

Version:

Module to printer in a Datecs bluetooth Printer

184 lines (143 loc) 5.27 kB
# Configuração para Expo SDK 54 e Android SDK 36 Esta biblioteca foi atualizada para ser compatível com Expo SDK 54 e Android SDK 36. ## Mudanças Implementadas ### 1. Android Gradle Plugin e SDKs - ✅ Atualizado Android Gradle Plugin para 8.7.3 - ✅ Atualizado compileSdk para 36 - ✅ Atualizado targetSdk para 36 - ✅ Atualizado minSdk para 26 (requerido pelo Expo SDK 54) - ✅ Atualizado buildTools para 35.0.0 - ✅ Atualizado Gradle para 8.11.1 ### 2. Namespace - ✅ Adicionado `namespace` no build.gradle - ✅ Removido `package` do AndroidManifest.xml (deprecated) ### 3. Dependências - ✅ Removido jcenter (descontinuado) - ✅ Substituído `com.android.support:support-v4` por `androidx.legacy:legacy-support-v4` - ✅ Atualizado `com.google.zxing:core` para 3.5.3 - ✅ Atualizado dependência do React Native para usar `react-android` - ✅ Atualizado peerDependencies para React Native 0.76+ e React 18.3+ ### 4. Permissões Bluetooth - ✅ Adicionado `BLUETOOTH_CONNECT` (Android 12+) - ✅ Adicionado `BLUETOOTH_SCAN` com flag `neverForLocation` (Android 12+) - ✅ Limitado permissões antigas com `maxSdkVersion="30"` - ✅ Limitado permissões de localização com `maxSdkVersion="30"` ## Como Usar no Expo SDK 54 ### 1. Instalação ```bash npm install react-native-bluetooth-datecs-printer --save # ou yarn add react-native-bluetooth-datecs-printer ``` ### 2. Configuração no app.json Adicione a biblioteca aos plugins do Expo: ```json { "expo": { "plugins": [ [ "expo-build-properties", { "android": { "compileSdkVersion": 36, "targetSdkVersion": 36, "minSdkVersion": 26, "buildToolsVersion": "35.0.0" } } ] ] } } ``` ### 3. Permissões no app.json ```json { "expo": { "android": { "permissions": [ "BLUETOOTH", "BLUETOOTH_ADMIN", "BLUETOOTH_CONNECT", "BLUETOOTH_SCAN", "ACCESS_FINE_LOCATION", "ACCESS_COARSE_LOCATION" ] } } } ``` ### 4. Prebuild Como esta é uma biblioteca nativa, você precisará usar o Expo Prebuild: ```bash npx expo prebuild --clean ``` ### 5. Build Para desenvolvimento local: ```bash npx expo run:android ``` Para build de produção: ```bash eas build --platform android ``` ## Requisitos de Runtime ### Android - Android 8.0 (API 26) ou superior - Bluetooth habilitado - Permissões de Bluetooth concedidas pelo usuário ### Permissões Runtime (Android 12+) No seu código React Native, solicite as permissões em runtime: ```javascript import { PermissionsAndroid, Platform } from 'react-native'; async function requestBluetoothPermissions() { if (Platform.OS === 'android') { if (Platform.Version >= 31) { // Android 12+ const granted = await PermissionsAndroid.requestMultiple([ PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT, PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN, ]); return ( granted['android.permission.BLUETOOTH_CONNECT'] === PermissionsAndroid.RESULTS.GRANTED && granted['android.permission.BLUETOOTH_SCAN'] === PermissionsAndroid.RESULTS.GRANTED ); } else { // Android 11 e inferior const granted = await PermissionsAndroid.requestMultiple([ PermissionsAndroid.PERMISSIONS.BLUETOOTH_ADMIN, PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, ]); return ( granted['android.permission.BLUETOOTH_ADMIN'] === PermissionsAndroid.RESULTS.GRANTED && granted['android.permission.ACCESS_FINE_LOCATION'] === PermissionsAndroid.RESULTS.GRANTED ); } } return true; } ``` ## Troubleshooting ### Erro: "Namespace not specified" Certifique-se de que o `build.gradle` contém `namespace 'br.com.masfe.rnbluetoothdatecsprinter'` ### Erro: "compileSdkVersion is not specified" Verifique se as versões no `build.gradle` estão corretas e que o Expo está configurado com as mesmas versões ### Erro de Permissão Bluetooth - Verifique se as permissões estão declaradas no AndroidManifest.xml - Certifique-se de solicitar as permissões em runtime - Para Android 12+, use BLUETOOTH_CONNECT e BLUETOOTH_SCAN ### Build falha com erro Gradle - Execute `./gradlew clean` no diretório android - Delete a pasta `android/build` - Execute `npx expo prebuild --clean` novamente ## Notas Importantes 1. **AndroidX**: A biblioteca agora usa AndroidX. Certifique-se de que seu projeto também está usando AndroidX. 2. **React Native New Architecture**: Esta biblioteca ainda usa a antiga arquitetura. Para projetos que usam a New Architecture do React Native, pode ser necessário desabilitar temporariamente. 3. **Expo Go**: Esta biblioteca NÃO funciona com Expo Go. Você deve usar Expo Prebuild ou Development Build. 4. **EAS Build**: Para usar no EAS Build, certifique-se de que o `eas.json` está configurado corretamente. ## Versões Testadas - Expo SDK: 54 - React Native: 0.76.x - Android SDK: 36 - Gradle: 8.11.1 - Android Gradle Plugin: 8.7.3