Ի՞նչ կկատարեիք, եթե ծրագրի թողարկման հավաքածուն այն տեղում ձախողվեր, որտեղ դեբագիրվող հավաքածուն ճիշտ է աշխատում։
sobes.tech AI
Պատասխան AI-ից
-
Լոգների և սխալի հաշվետվությունների հավաքում: Ակտիվացրեք և ստուգեք լոգավորումը թողարկման տարբերակում (օրինակ, Firebase Crashlytics կամ վերլուծականների միջոցով): Հավաքեք բոլոր հասանելի սխալի հաշվետվությունները:
-
Տարբերությունների վերլուծություն կառուցվածքների միջև:
- Կոմպիլյատորի օպտիմիզացիաներ: Տպագրության կառուցվածքը հաճախ օգտագործում է ProGuard/R8՝ կոդի օբֆուսիկացիա, մինիմիզացիա և օպտիմիզացիա։ Ստուգեք ProGuard/R8 կանոնները՝ սխալների համար, որոնք կարող էին հեռացնել անհրաժեշտ կոդը կամ ռեսուրսները, կամ փոխել հավելվածի վարքագիծը։ Ուսումնասիրեք
mapping.txtֆայլը՝ օբֆուսիկացիայի հետևանքով ստացված stack trace-ների համար:
- Կոմպիլյատորի օպտիմիզացիաներ: Տպագրության կառուցվածքը հաճախ օգտագործում է ProGuard/R8՝ կոդի օբֆուսիկացիա, մինիմիզացիա և օպտիմիզացիա։ Ստուգեք ProGuard/R8 կանոնները՝ սխալների համար, որոնք կարող էին հեռացնել անհրաժեշտ կոդը կամ ռեսուրսները, կամ փոխել հավելվածի վարքագիծը։ Ուսումնասիրեք
-
Կնիքների (signing): Համոզվեք, որ թողարկման կառուցվածքը ճիշտ բանալիով է ստորագրված:
-
Debuggable նշանը: Համոզվեք, որ թողարկման կառուցվածքում
android:debuggableնշանը դրված էfalse: -
Հավասարության տարբերություններ գրադարանների տարբերակներում: Ստուգեք օգտագործվող գրադարանների տարբերակները երկու կառուցվածքներում:
-
Կառուցման կոնֆիգուրացիաներ (build flavors/types): Ուսումնասիրեք gradle ֆայլերը՝ տեսնելու համար, արդյոք կան հատուկ կարգավորումներ, որոնք կարող են ազդել վարքագծի վրա (օրինակ, տարբեր API URL-ներ, անջատված ֆունկցիաներ):
-
Ռեսուրսների ստուգում: Համոզվեք, որ բոլոր անհրաժեշտ ռեսուրսները (drawable, layout, strings) առկա և հասանելի են թողարկման կառուցվածքում:
-
Stack trace-ների դեբուֆակացիա: Եթե սխալը տեղի է ունենում օբֆուսիկացված կոդում, օգտագործեք
mapping.txt-ը՝ stack trace-ների դեբուֆակացիայի համար, որպեսզի հասկանաք, թե որ մասում է սխալը: -
Ստեղծել սխալի կրկնօրինակում՝ մոտեցող թողարկման պայմաններում:
- Փորձեք կազմել թողարկման կառուցվածքը՝ անջատելով ProGuard/R8 մասերը, որպեսզի սահմանափակեք որոնման շրջանակը:
- Ստեղծեք տեղական փորձնական կառուցվածք՝ առավելագույնը մոտեցող թողարկմանը (օրինակ՝ օգտագործելով ProGuard/R8, բայց առանց ստորագրման):
-
Օպտիմիզացիաների և օբֆուսիկացիայի անջատում: Աշխատեք աստիճանաբար անջատել ProGuard/R8 օպտիմիզացիաները՝ թողարկման կառուցվածքում, որպեսզի պարզեք, թե որ օպտիմիզացիան է առաջացնում խնդիրը:
-
Լոգավորում թողարկման կառուցվածքում: Ժամանակավոր ավելացրեք լոգավորում՝ կարևոր հատվածներում՝ սխալի առաջ, որպեսզի հետևեք կատարմանը:
-
Արտաքին գործոններ: Հաշվի առեք, որ վարքագիծը կարող է կախված լինել միջավայրից (օրինակ՝ ինտերնետ կապի առկայությունից, օպերացիոն համակարգի տարբերակից):
-
Դեբագեր օգտագործել: Եթե հնարավոր է, միացեք թողարկման կառուցվածքին սարքում՝ (որը կարող է դժվար լինել, եթե
debuggablefalse է), կամ օգտագործեք էմուլյատոր՝ կրկնօրինակում և դեբագի համար: -
Regress (վերադարձ): Ստուգեք, թե երբ է հայտնվել խնդիրը (օրինակ՝ նոր ֆունկցիայի ավելացումից կամ գրադարանի թարմացումից հետո):
-
Հայտնի խնդիրների որոնում: Ստուգեք հայտնի խնդիրները ProGuard/R8-ի հետ օգտագործվող գրադարանների համար:
android {
buildTypes {
release {
// Ժամանակավոր անջատում օբֆուսիկացիան՝ սխալների համար
minifyEnabled true // Մնացեք նվազեցումը
shrinkResources true // Մնացեք ռեսուրսների սեղմումը
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// ժամանակավոր անջատեք օբֆուսիկացիան՝ սխալների համար
// consumerProguardFiles 'proguard-debug.pro' // Ավելացրեք սխալների կանոններ, եթե անհրաժեշտ է
}
}
}