react-native-bluetooth-datecs-printer
Version:
Module to printer in a Datecs bluetooth Printer
181 lines (149 loc) • 5.64 kB
Markdown
# Checklist de Migração - Expo SDK 54 & Android SDK 36
## ✅ Mudanças Implementadas
### 1. Android Build Configuration
- [x] Atualizado Android Gradle Plugin de 3.1.4 → 8.7.3
- [x] Atualizado Gradle de 3.1 → 8.11.1
- [x] Atualizado compileSdk de 30 → 36
- [x] Atualizado targetSdk de 24 → 36
- [x] Atualizado minSdk de 16 → 26 (requisito Expo SDK 54)
- [x] Atualizado buildTools de 30.0.3 → 35.0.0
- [x] Removido jcenter (deprecated)
- [x] Adicionado namespace 'br.com.masfe.rnbluetoothdatecsprinter'
### 2. Dependências Android
- [x] Substituído 'com.facebook.react:react-native:0.69.1' → 'com.facebook.react:react-android'
- [x] Substituído 'com.android.support:support-v4' → 'androidx.legacy:legacy-support-v4:1.0.0'
- [x] Atualizado 'com.google.zxing:core' de 3.3.0 → 3.5.3
- [x] Removido safeExtGet helper (não necessário)
### 3. AndroidManifest.xml
- [x] Removido atributo 'package' (deprecated no AGP 7+)
- [x] Adicionado BLUETOOTH_CONNECT para Android 12+
- [x] Adicionado BLUETOOTH_SCAN com usesPermissionFlags="neverForLocation"
- [x] Limitado permissões antigas com maxSdkVersion="30"
- [x] Limitado permissões de localização com maxSdkVersion="30"
### 4. Código Java
- [x] Removido import JavaScriptModule (deprecated)
- [x] Removido método createJSModules() (deprecated desde RN 0.47)
- [x] Código já compatível com AndroidX
### 5. Package.json
- [x] Atualizado peerDependencies: react-native ^0.76.0
- [x] Atualizado peerDependencies: react ^18.3.1
- [x] Removido react das dependencies (deve ser peerDependency)
- [x] Adicionado keyword "Expo"
### 6. Documentação
- [x] Criado EXPO_SETUP.md com guia completo
- [x] Criado app.json.example com configuração Expo
- [x] Criado ExpoExample.tsx com exemplo funcional
- [x] Atualizado README.md principal
- [x] Adicionada tabela de compatibilidade
- [x] Documentado requisitos de runtime permissions
## 📋 O que o Usuário Precisa Fazer
### No Projeto Expo (App que usa a biblioteca)
1. **Instalar a biblioteca atualizada:**
```bash
npm install react-native-bluetooth-datecs-printer@latest
# ou
yarn add react-native-bluetooth-datecs-printer@latest
```
2. **Instalar expo-build-properties:**
```bash
npx expo install expo-build-properties
```
3. **Configurar app.json:** (ver app.json.example)
```json
{
"expo": {
"plugins": [
["expo-build-properties", {
"android": {
"compileSdkVersion": 36,
"targetSdkVersion": 36,
"minSdkVersion": 26,
"buildToolsVersion": "35.0.0"
}
}]
],
"android": {
"permissions": [
"BLUETOOTH",
"BLUETOOTH_ADMIN",
"BLUETOOTH_CONNECT",
"BLUETOOTH_SCAN",
"ACCESS_FINE_LOCATION",
"ACCESS_COARSE_LOCATION"
]
}
}
}
```
4. **Fazer prebuild:**
```bash
npx expo prebuild --clean
```
5. **Implementar solicitação de permissões runtime:**
Ver exemplo em ExpoExample.tsx
6. **Executar:**
```bash
npx expo run:android
```
## 🔍 Verificações Necessárias
### Antes de publicar:
- [ ] Testar build em projeto Expo SDK 54 limpo
- [ ] Testar conexão Bluetooth em Android 12+
- [ ] Testar impressão em dispositivo Datecs real
- [ ] Verificar permissões runtime funcionando
- [ ] Testar em Android 14 (API 34) e Android 15 (API 35/36)
- [ ] Verificar que funciona sem Expo Go
- [ ] Testar EAS Build se aplicável
### Testes Recomendados:
1. Criar novo projeto Expo: `npx create-expo-app teste-printer`
2. Instalar a biblioteca: `npm install ../react-native-bluetooth-datecs-printer`
3. Configurar app.json conforme exemplo
4. Copiar ExpoExample.tsx para App.tsx
5. Executar: `npx expo prebuild && npx expo run:android`
## ⚠️ Breaking Changes
1. **minSdkVersion aumentado de 16 → 26**
- Dispositivos Android < 8.0 não são mais suportados
- Alinhado com requisitos do Expo SDK 54
2. **Permissões Bluetooth mudaram**
- Apps devem solicitar BLUETOOTH_CONNECT e BLUETOOTH_SCAN em Android 12+
- Permissões antigas limitadas a Android 11 e inferior
3. **Namespace obrigatório**
- Necessário para AGP 7+
- Package removido do AndroidManifest
## 📱 Compatibilidade
### Android Versions Suportadas:
- ✅ Android 15 (API 35-36)
- ✅ Android 14 (API 34)
- ✅ Android 13 (API 33)
- ✅ Android 12 (API 31-32)
- ✅ Android 11 (API 30)
- ✅ Android 10 (API 29)
- ✅ Android 9 (API 28)
- ✅ Android 8.1 (API 27)
- ✅ Android 8.0 (API 26)
- ❌ Android 7.x e inferior (não suportado)
### Frameworks:
- ✅ Expo SDK 54+
- ✅ React Native 0.76+
- ❌ Expo Go (não suportado - biblioteca nativa)
- ✅ Expo Development Builds
- ✅ EAS Build
## 🚀 Próximos Passos
1. Atualizar versão no package.json para 2.0.0 (breaking changes)
2. Publicar no npm
3. Criar GitHub Release com changelog
4. Atualizar exemplos no repositório
5. Testar em projetos reais
## 📝 Notas Importantes
- A biblioteca NÃO funciona no Expo Go (é nativa)
- Requer Expo Prebuild ou Development Build
- AndroidX é obrigatório
- Java 11+ é necessário para build
- Node.js 18+ recomendado
## 🆘 Suporte
Se encontrar problemas:
1. Consulte EXPO_SETUP.md
2. Verifique este checklist
3. Limpe o projeto: `npx expo prebuild --clean`
4. Verifique as permissões no AndroidManifest
5. Verifique se as permissões runtime estão sendo solicitadas