Sobes.tech
Middle+

Ko jūs darītu, ja izlaiduma versija aplikācijai kritīs tajā vietā, kur darbojas atkļūdošanas versija?

sobes.tech AI

Atbilde no AI

  1. Ž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.

  2. 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.txt obfuskā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:debuggable ir iestatīts uz false.
    • 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ē.
  3. Obfuskācijas atšifrēšana: Ja avārija notiek obfuskētā kodā, izmantot mapping.txt avārijas atšifrēšanai, lai saprastu, kurā koda daļā notiek kļūda.

  4. 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).
  5. 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.

  6. Ž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.

  7. Ā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ē).

  8. Debuggera izmantošana: Ja iespējams, pieslēgties izlaiduma būvei ierīcē (kas var būt grūti, ja debuggable ir false) vai izmantot emulators, lai mēģinātu reproducēt un atkļūdot.

  9. 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).

  10. 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
        }
    }
}