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 ფაილები, რომ ნახოთ სპეციფიკური პარამეტრები, რომლებიც გავლენას ახდენენ ქცევაზე (მაგ., API URL-ები, გამორთული ფუნქციები).
    • რესურსების შემოწმება: დარწმუნდით, რომ ყველა საჭირო რესურსი (drawable, layout, strings) არსებობს და ხელმისაწვდომია გამოშვების ბილდში.
  3. Stack trace-ების დობფუსკაცია: თუ შეცდომა ხდება ობფუსკირებულ კოდში, გამოიყენეთ mapping.txt დობფუსკაციისთვის, რათა გაიგოთ, რომელ ნაწილში ხდება შეცდომა.

  4. შეცდომის გამეორება გამოშვების პირობებთან ახლოს:

    • სცადეთ შექმნათ გამოშვების ბილდი გამორთული ProGuard/R8 ნაწილებით, რათა შეზღუდოთ ძიების სფერო.
    • შექმენით ადგილობრივი ტესტური ბილდი, მაქსიმალურად ახლოს გამოშვებისთან (მაგ., ProGuard/R8-ის გამოყენებით, მაგრამ გარეშე ხელმოწერის).
  5. ოპტიმიზაციების და ობფუსკაციის გამორთვა: ეტაპობრივად გამორთეთ ProGuard/R8 ოპტიმიზაციები, რათა იპოვოთ, რომელმა ოპტიმიზაციამ გამოიწვია პრობლემა.

  6. ლოგირება გამოშვების ბილდში: დროებით დაამატეთ ლოგირება კრიტიკულ ნაწილებში, რათა თვალყური ადევნოთ შესრულებას შეცდომამდე.

  7. გარე ფაქტორები: გაითვალისწინეთ, რომ ქცევა შეიძლება იყოს დამოკიდებული გარემოზე (მაგ., ინტერნეტთან დაკავშირება, ოპერაციული სისტემის ვერსია მოწყობილობაზე).

  8. დაბაგერის გამოყენება: თუ შესაძლებელია, დაუკავშირდით გამოშვების ბილდს მოწყობილობაზე (რაც შეიძლება რთული იყოს, თუ 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' // დაამატეთ დეფექტების წესები საჭიროებისამებრ
        }
    }
}