Mida teeksite, kui rakenduse väljalaseversioon kukub seal, kus silumisversioon töötab õigesti?
sobes.tech AI
Vastus AI-lt
-
Žurnālu un avāriju ziņojumu apkopošana: Aktivizēt un pārbaudīt žurnālu reģistrāciju izlaiduma būvniecībā (piemēram, ar Firebase Crashlytics vai analītiku). Apkopt visus pieejamos avāriju ziņojumus.
-
Atšķirību analīze starp būvēm:
- Kompilatora optimizācijas: Izlaiduma būve bieži izmanto ProGuard/R8 koda obfuskācijai, minimizācijai un optimizācijai. Pārbaudīt ProGuard/R8 noteikumus uz kļūdām, kas varētu izdzēst nepieciešamo kodu vai resursus, vai mainīt lietotnes uzvedību. Izpētīt ģenerēto failu
mapping.txtobfuskācijas atšifrēšanai. - Paraksti (signing): Pārliecināties, ka izlaiduma būve ir parakstīta ar pareizo atslēgu.
- Debuggable karogs: Pārliecināties, ka izlaiduma būvē
android:debuggableir iestatīts uzfalse. - Atšķirības atkarībās: Pārbaudīt izmantoto bibliotēku versijas abās būvēs.
- Būves konfigurācijas (build flavors/types): Izpētīt gradle failus uz specifiskām izlaiduma būves iestatījumiem, kas var ietekmēt uzvedību (piemēram, dažādi API URL, izslēgtas funkcijas).
- Resursu pārbaude: Pārliecināties, ka visi nepieciešamie resursi (drawable, layout, strings) ir pieejami un pieejami izlaiduma būvē.
- Kompilatora optimizācijas: Izlaiduma būve bieži izmanto ProGuard/R8 koda obfuskācijai, minimizācijai un optimizācijai. Pārbaudīt ProGuard/R8 noteikumus uz kļūdām, kas varētu izdzēst nepieciešamo kodu vai resursus, vai mainīt lietotnes uzvedību. Izpētīt ģenerēto failu
-
Obfuskācijas atšifrēšana: Ja avārija notiek obfuskētā kodā, izmantot
mapping.txtavārijas atšifrēšanai, lai saprastu, kurā koda daļā notiek kļūda. -
Kļūdas atkārtošana tuvāk izlaiduma apstākļiem:
- Mēģināt izveidot izlaiduma būvi ar izslēgtām ProGuard/R8 daļām, lai sašaurinātu meklēšanas loku.
- Izveidot lokālu testēšanas būvi, kas pēc iespējas līdzinās izlaidumam (piemēram, ar ProGuard/R8, bet bez izlaiduma paraksta).
-
Optimizāciju un obfuskācijas atslēgšana: Pakāpeniski atslēgt ProGuard/R8 optimizācijas izlaiduma būvē (piemēram, atslēgt obfuskāciju, tad minimizāciju), lai noteiktu, kura optimizācija izraisa problēmu.
-
Žurnālo ierakstu pievienošana izlaiduma būvē: Pagaidu pievienot žurnālo ierakstu kritiskajos koda posmos izlaiduma būvē, lai izsekotu izpildi pirms avārijas.
-
Ārējo faktoru pārbaude: Ņemt vērā, ka uzvedība var būt atkarīga no vides (piemēram, interneta savienojuma esamība, OS versija ierīcē).
-
Debuggera izmantošana: Ja iespējams, pieslēgties izlaiduma būvei ierīcē (kas var būt grūti, ja
debuggableir false) vai izmantot emulators, lai mēģinātu reproducēt un atkļūdot. -
Regresija (ja iespējams): Pārbaudīt, kurā brīdī radās problēma (piemēram, pēc jaunas funkcijas pievienošanas vai bibliotēkas atjaunināšanas).
-
Zināmo problēmu meklēšana: Pārbaudīt zināmās ProGuard/R8 problēmas ar izmantotajām bibliotēkām.
android {
buildTypes {
release {
// Pagaidu obfuskācijas atslēgšana atkļūdošanai
minifyEnabled true // Paliek minimizācija
shrinkResources true // Paliek resursu saspiešana
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// pagaidu obfuskācijas atslēgšana atkļūdošanai
// consumerProguardFiles 'proguard-debug.pro' // Pievienot atkļūdošanas noteikumus, ja nepieciešams
}
}
}