Агар барномаи нашрӣ дар ҷое ки барномаи дебаг дуруст кор мекунад, фурӯ равад, шумо чӣ мекунед?
sobes.tech AI
Ҷавоб аз AI
-
Ҷамъоварии логҳо ва ҳисоботҳои хато: Актив гардонед ва санҷед логгириро дар нусхаи нашр (масалан, бо Firebase Crashlytics ё аналитика). Ҳама ҳисоботҳои хато дар дастро ҷамъ кунед.
-
Таҳлили фарқиятҳо байни бинов:
- Оптимизатсияҳои компилятор: Нусхаи нашр одатан истифода мекунад ProGuard/R8 барои обфускатсия, минимизатсия ва оптимизатсия кардани код. Қоидаҳои ProGuard/R8-ро барои хатоҳо, ки метавонанд коди заруриро ё захираҳоро нест кунанд ё рафторро тағир диҳанд, санҷед. Файли
mapping.txt-ро барои деобфускатсияи stack trace-ҳо омӯзед. - Имзо (signing): Боварӣ ҳосил кунед, ки нусхаи нашр бо калиди дуруст имзо шудааст.
- Флаги Debuggable: Боварӣ ҳосил кунед, ки дар нусхаи нашр
android:debuggableбаfalseгузошта шудааст. - Фарқият дар вобастагиҳо: Вариантҳои китобхонаҳоро дар ду намуди бино санҷед.
- Конфигуратсияҳои бино (build flavors/types): Файлҳои gradle-ро барои мавҷудияти танзимоти махсуси нусхаи нашр омӯзед, ки метавонанд рафторро таъсир расонанд (масалан, URL-ҳои API, функсияҳои ғайрифаъол).
- Таҳқиқи захираҳо: Боварӣ ҳосил кунед, ки ҳамаи захираҳои зарурӣ (drawable, layout, strings) мавҷуд ва дастрас мебошанд.
- Оптимизатсияҳои компилятор: Нусхаи нашр одатан истифода мекунад ProGuard/R8 барои обфускатсия, минимизатсия ва оптимизатсия кардани код. Қоидаҳои ProGuard/R8-ро барои хатоҳо, ки метавонанд коди заруриро ё захираҳоро нест кунанд ё рафторро тағир диҳанд, санҷед. Файли
-
Деобфускатсияи stack trace-ҳо: Агар хато дар коди обфускатшуда рух диҳад,
mapping.txt-ро барои деобфускатсия истифода баред, то фаҳмед, ки дар кадом қисмати коди хато рух медиҳад. -
Таҳия кардани хато дар шароити наздик ба нашр:
- Сохтани нусхаи нашр бо қисмҳои ProGuard/R8 ғайрифаъол, то доираи ҷустуҷӯро маҳдуд кунед.
- Таҳия кардани нусхаи тестӣ, ки ба нусхаи нашр наздик аст (масалан, бо истифода аз ProGuard/R8, аммо бе имзо кардани нусхаи нашр).
-
Ғайрифаъол кардани оптимизатсияҳо ва обфускатсия: Баъд аз тадриҷӣ ғайрифаъол кардани оптимизатсияҳои ProGuard/R8 дар нусхаи нашр (масалан, ғайрифаъол кардани обфускатсия, сипас минимизатсия), барои муайян кардани оптимизатсия, ки мушкилотро ба вуҷуд меорад.
-
Логгирӣ дар нусхаи нашр: Вақте лозим аст, логгиро дар қисмҳои муҳимтарини коди нусхаи нашр илова кунед, то иҷрои то лаҳзаи хато пайгирӣ шавад.
-
Факторҳои беруна: Дар назар дошта бошед, ки рафтор метавонад вобаста ба муҳит бошад (масалан, пайвастшавӣ ба интернет, версияи ОС дар дастгоҳи корбар).
-
Истифодаи debugger: Агар имконпазир бошад, ба нусхаи нашр дар дастгоҳ пайваст шавед (ки метавонад душвор бошад, агар
debuggablefalse бошад) ё аз эмулятор барои кӯшиши такрор ва ташхис истифода баред. -
Регрессия: Бинед, ки кай мушкилот пайдо шуд (масалан, пас аз илова кардани функсияи нав ё навсозии китобхона).
-
Ҷустуҷӯи мушкилоти маълум: Бинед, ки мушкилоти маълум бо ProGuard/R8 ва китобхонаҳои истифодашударо санҷед.
android {
buildTypes {
release {
// Вақтӣ ғайрифаъол кардани обфускатсия барои ташхис
minifyEnabled true // Минимализатсияро боқӣ мегузорем
shrinkResources true // Тамом кардани захираҳоро боқӣ мегузорем
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// Вақтӣ ғайрифаъол кардани обфускатсия барои ташхис
// consumerProguardFiles 'proguard-debug.pro' // Қоидаҳои ташхис илова кунед, агар лозим бошад
}
}
}