Sobes.tech
Middle+

Агар барномаи нашрӣ дар ҷое ки барномаи дебаг дуруст кор мекунад, фурӯ равад, шумо чӣ мекунед?

sobes.tech AI

Ҷавоб аз AI

  1. Ҷамъоварии логҳо ва ҳисоботҳои хато: Актив гардонед ва санҷед логгириро дар нусхаи нашр (масалан, бо Firebase Crashlytics ё аналитика). Ҳама ҳисоботҳои хато дар дастро ҷамъ кунед.

  2. Таҳлили фарқиятҳо байни бинов:

    • Оптимизатсияҳои компилятор: Нусхаи нашр одатан истифода мекунад ProGuard/R8 барои обфускатсия, минимизатсия ва оптимизатсия кардани код. Қоидаҳои ProGuard/R8-ро барои хатоҳо, ки метавонанд коди заруриро ё захираҳоро нест кунанд ё рафторро тағир диҳанд, санҷед. Файли mapping.txt-ро барои деобфускатсияи stack trace-ҳо омӯзед.
    • Имзо (signing): Боварӣ ҳосил кунед, ки нусхаи нашр бо калиди дуруст имзо шудааст.
    • Флаги Debuggable: Боварӣ ҳосил кунед, ки дар нусхаи нашр android:debuggable ба false гузошта шудааст.
    • Фарқият дар вобастагиҳо: Вариантҳои китобхонаҳоро дар ду намуди бино санҷед.
    • Конфигуратсияҳои бино (build flavors/types): Файлҳои gradle-ро барои мавҷудияти танзимоти махсуси нусхаи нашр омӯзед, ки метавонанд рафторро таъсир расонанд (масалан, URL-ҳои API, функсияҳои ғайрифаъол).
    • Таҳқиқи захираҳо: Боварӣ ҳосил кунед, ки ҳамаи захираҳои зарурӣ (drawable, layout, strings) мавҷуд ва дастрас мебошанд.
  3. Деобфускатсияи stack trace-ҳо: Агар хато дар коди обфускатшуда рух диҳад, mapping.txt-ро барои деобфускатсия истифода баред, то фаҳмед, ки дар кадом қисмати коди хато рух медиҳад.

  4. Таҳия кардани хато дар шароити наздик ба нашр:

    • Сохтани нусхаи нашр бо қисмҳои ProGuard/R8 ғайрифаъол, то доираи ҷустуҷӯро маҳдуд кунед.
    • Таҳия кардани нусхаи тестӣ, ки ба нусхаи нашр наздик аст (масалан, бо истифода аз ProGuard/R8, аммо бе имзо кардани нусхаи нашр).
  5. Ғайрифаъол кардани оптимизатсияҳо ва обфускатсия: Баъд аз тадриҷӣ ғайрифаъол кардани оптимизатсияҳои ProGuard/R8 дар нусхаи нашр (масалан, ғайрифаъол кардани обфускатсия, сипас минимизатсия), барои муайян кардани оптимизатсия, ки мушкилотро ба вуҷуд меорад.

  6. Логгирӣ дар нусхаи нашр: Вақте лозим аст, логгиро дар қисмҳои муҳимтарини коди нусхаи нашр илова кунед, то иҷрои то лаҳзаи хато пайгирӣ шавад.

  7. Факторҳои беруна: Дар назар дошта бошед, ки рафтор метавонад вобаста ба муҳит бошад (масалан, пайвастшавӣ ба интернет, версияи ОС дар дастгоҳи корбар).

  8. Истифодаи debugger: Агар имконпазир бошад, ба нусхаи нашр дар дастгоҳ пайваст шавед (ки метавонад душвор бошад, агар debuggable false бошад) ё аз эмулятор барои кӯшиши такрор ва ташхис истифода баред.

  9. Регрессия: Бинед, ки кай мушкилот пайдо шуд (масалан, пас аз илова кардани функсияи нав ё навсозии китобхона).

  10. Ҷустуҷӯи мушкилоти маълум: Бинед, ки мушкилоти маълум бо ProGuard/R8 ва китобхонаҳои истифодашударо санҷед.

android {
    buildTypes {
        release {
            // Вақтӣ ғайрифаъол кардани обфускатсия барои ташхис
            minifyEnabled true // Минимализатсияро боқӣ мегузорем
            shrinkResources true // Тамом кардани захираҳоро боқӣ мегузорем
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // Вақтӣ ғайрифаъол кардани обфускатсия барои ташхис
            // consumerProguardFiles 'proguard-debug.pro' // Қоидаҳои ташхис илова кунед, агар лозим бошад
        }
    }
}