Guqula noma veza uphawu ukulandelela kwestaki sokukhubazeka

Ukuphahlazeka nama-ANR ku-Android akhiqiza ukulandelela istaki, okuyisifinyezo sokulandelana kwemisebenzi esesidlekeni ebiziwe kuhlelo lwakho kufikela kusikhathi lapho luphahlazeke khona. Lezi zifinyezo zingakusiza ukuthi ukhombe uphinde ulungise noma yiziphi izinkinga emthonjeni.

Uma i-app noma igeyimu yakho ithuthukiswe kusetshenziswa i-Java futhi usebenzisa i-ProGuard ukuze ulungiselele uphinde wenze i-app yakho i-obfuscate, ungalayisha ifayela lokwenza imephu ye-ProGuard ngohlobo ngalunye lwe-app yakho ku-Play Console. Uma i-app yakho noma igeyimu ithuthukiswe kusetshenziswa ikhodi yomdabu, efana ne-C++, ungalayisha ifayela lezimpawu zokususa iphutha lohlobo ngalunye lwe-app yakho ku-Play Console. Lokhu kwenza kube lula ukuhlaziya nokulungisa ukuphahlazeka kwakho nama-ANR.

Okubalulekile: Amafayela okwenza imephu ahambisana ne-ReTrace kuphela asekelwe ekushintshweni kwezinhlelo zokusebenza ezihlanganiswe ku-Java. Lena ifomethi efanayo esetshenziswe i-ProGuard noma i-R8.

Isinyathelo 1: Khiqiza ifayela loshintsho noma uphawu

Ukuze wenze i-deobfuscate noma wenze isimbuli ukuphahlazeka kohlelo lwakho lokusebenza nama-ANR enguqulo yohlelo lwakho lokusebenza, okokuqala udinga ukukhiqiza amafayela adingekayo enguqulo efanayo yohlelo lwakho lokusebenza. Kuzomele ukhiqize uphinde ulayishe ifayela lenguqulo entsha ngayinye yohlelo lwakho lokusebenza lokushintsha noma lokwenza uphawu ukuze kusebenze.

I-Java: Khiqiza ifayela lokwenza imephu le-ProGuard

Ukuze wenze ushintshe ukulandelelwa kwesitaki se-Java, okokuqala udinga ukukhiqiza ifayela lokwenza imephu le-ProGuard. Ukuze ufunde ukuthi kanjani, hamba kusayithi Lonjiniyela be-Google.

Okomdabu: Khiqiza ifayela lezimpawu okususa iphutha

I-Android Grandle plugin eyinguqulo engu-4.1 nangemuva kwalokho

Uma iphrojekthi yakho yakha Inqwaba ye-App ye-Android, ungafaka ngokuzenzakalela ifayela lamasimbuli okususa iphutha kuyo. Ukuze ufake leli fayela, engeza okulandelayo kufayela lwe-build.gradle le-app yakho:

  • android.defaultConfig.ndk.debugSymbolLevel = 'FULL'

Qaphela: Umkhawulo wefayela lezimpawu zokususa iphutha ngu-800 MB. Uma izigxivizo zezinyawo zezimpawu zokususa iphutha zinkulu kakhulu, sebenzisa okuthi SYMBOL_TABLE esikhundleni sokuthi KUGCWELE ukuze wehlise usayizi wefayela.

Uma iphrojekthi yakho yakha i-APK, sebenzisa isilungiselelo sokwakha se-build.gradle esingaphezulu ukuze ukhiqize ifayela lophawu okususa iphutha ngokuhlukile. Layisha ngesandla ifayela lamasimbuli okususa iphutha ku-Google Play Console njengoba kuchazwe ngezansi Kusinyathelo 2: Layisha ushintsho noma ifayela lokwenza uphawu. Njengengxenye yenqubo yokwakha, i-Android Grandle plugin ikhipha leli fayela endaweni elandelayo yephrojekthi:

  • app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip

I-Android Grandle plugin yenguqulo 4.0 nangaphambili (kanye namanye amasistimu okwakhiwa)

Njengengxenye yenqubo yokwakha yenqwaba ye-app noma ye-APK, i-plugin ye-Android Grandle ikhophi yamalabhulari angaqaqiwe kuhla lwemibhalo yephrojekthi. Lolu hla lwemibhalo lulandela isakhiwo esifana nalesi:

app/build/intermediates/cmake/universal/release/obj

├── armeabi-v7a/

│   ├── libgamenegine.so

│   ├── libothercode.so

│   └── libvideocodec.so

├── arm64-v8a/

│   ├── libgamenegine.so

│   ├── libothercode.so

│   └── libvideocodec.so

├── x86/

│   ├── libgamenegine.so

│   ├── libothercode.so

│   └── libvideocodec.so

└── x86_64/

    ├── libgameengine.so

    ├── libothercode.so

    └── libvideocodec.so

Qaphela: Uma usebenzisa isistimu ehlukile yokwakha , ungayilungisa ukuze ugcine amalabhulari angahlukanisiwe kuhla lwemibhalo ngesakhiwo esidingekayo esingaphezulu.

  1. Bophezela ndawonye okuqukethwe kwalolu hla lwemibhalo:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Layisha ifayela le-symbols.zip athupha ku-Play Console njengoba kuchazwe ngezansi Kusinyathelo 2: Layisha ifayela lokushintsha noma lokwenza uphawu.

Umkhawulo wefayela lezimpawu zokususa iphutha ngu-800 MB. Uma ifayela lakho lilikhulu kakhulu, kungenza ukuthi amafayela wakho e-.so aqukethe ithebula lophawu (amagama omsebenzi), kanye nolwazi lokulungisa amaphutha lwe-DWARF (amagama amafayela nemigqa yekhodi). Lokhu akudingeki ekwenzeni isimbuli ikhodi yakho, futhi kungasuswa ngokuqalisa lo myalo:

  • $OBJCOPY --strip-debug lib.so lib.so.sym

Qaphela: I-$OBJCOPY ibheke kunguqulo ethile ye-ABI oyichachayo, njengesibonelo:ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy

Isinyathelo 2: Layisha ifayela loshintsho noma lokwenza uphawu

Ukuze wenze ushintsho noma wenze uphawu ukuphahlazeka kohlelo lwakho lokusebenza nama-ANR enguqulo yohlelo lwakho lokusebenza, kumele ulayishe amafayela e-deobfuscation noma okwenza isimbuli kunguqulo ngayinye yohlelo lwakho lokusebenza.

Okubalulekile: Lesi sinyathelo sidingeka kuphela konjiniyela abasebenzisa ama-APK. Uma usebenzisa Inqwaba yohlelo lokusebenza lwe-Android kanye ne-plugin ye-Android Grandle yohlobo 4.1 noma yangemuva kwalokho, akukho okumele ukwenze. Sizothatha ngokuzenzekela ifayela le-deobfuscation ukusuka kunqwaba futhi ungeqela Kusinyathelo 3: Buka ukulandelela izitaki zokuphahlazeka. Ungafunda kabanzi mayelana nezinqwaba ze-app kusayithi Lonjiniyela be-Android.

Layisha amafayela usebenzisa i-Play Console

Ukuze ulayishe ifayela loshintsho noma lokwenza uphawu:

  1. Vula i-Play Console.
  2. Khetha i-app.
  3. Kumenyu engakwesokunxele, khetha okuthi Khipha > Isihloli senqwaba ye-app.
  4. Usebenzisa isikhi kukhona phezulu ohlangothini lwesandla sangakwesokudla, khetha i-artifact ehambisanayo.
  5. Khetha ithebhu ethi Ukudawuniloda, bese uskrolela phansi engxenyeni ethi "Amafa".
  6. Chofoza umcibisholo wokulayisha wefayela lokwenza imephu noma izimpawu zokususa iphutha njengoba esebenza ukuze kulayishwe ifayela loshintsho noma lokwenza uphawu lohlobo lwe-app yakho.
Layisha amafayela usebenzisa i-Google Play Developer API

Ukuze ulayishe amafayela usebenzisa i-Google Play Developer API, iya kusayithi lonjiniyela we-Google.

Isinyathelo 3: Buka ukulandelelwa kwesitaki sokuphahlazeka esenziwe ushintsho

Ngemuva kokuthi ulayishe ifayela lokwenza imephu le-ProGuard noma ifayela lamasimbuli okususa iphutha kunguqulo yohlelo lwakho lokusebenza, ukuphahlazeka nama-ANR avela ngemuva kwalokho azokwenziwa ushintsho. Ungabuyekeza ukulandelelwa kwesitaki esenziwe ushintsho sokuphahlazeka okukodwa nama-ANR kukhasi lohlelo lwakho lokusebenza Lokuphahlazeka nama-ANR.

  1. Vula i-Play Console.
  2. Khetha i-app.
  3. Kumenyu engakwesokunxele, khetha Ikhwalithi > Okubalulekile kwe-Android > Ukuphahlazeka nama-ANR.
  4. Khetha ukuphahlazeka.
  5. Kusigaba sokuthi "Izitaki zokulandelela", uzobona ukulandelelwa kwesitaki kwakho kokushintshiwe nokwenziwe uphawu.

Okubalulekile: Uma usulayishe ifayela lokwenza imephu kunguqulo yohlelo lwakho lokusebenza, ukuphahlazeka kuphela okuzayo nama-ANR aleyo nguqulo yohlelo lwakho lokusebenza okuzokwenziwa i-deobfuscate. Ukuphahlazeka nama-ANR enguqulo yohlelo lwakho lokusebenza eyenzeka ngaphambi kokuthi ulayishe ifayela layo lokumepha elilandelana kahle ngeke ize ishintshiwe.

Imibuzo evamise ukubuzwa

Angifuni ukusebenzisa ushintsho/ukwenza uphawu kwe-Play Console. Ngingakwazi ukuyenza nje ngingaxhunyiwe ku-inthanethi?

I-Play Console isebenzisa okuthi ndk-stack ukuze yenze uphawu lokulandelela istaki sama-app omdabu, kanye ne-ReTrace yokuphahlazeka kwe-Java. Uma ukhetha ukungabelani namafayela akho ashintshiwe, ungakopisha izitaki zokuphahlazeka okungashintshiwe ukusuka ku-Play Console kanye nokusetshenziswa kwethuluzi elifanelekile ungaxhunyiwe ku-inthanethi ukuze ulenze uphawu. Kodwa, le nqubo kumele yenziwe ngesandla kusitaki ngasinye sokuphahlazeka, nokuyenza ukuthi ihambe kancane iphinde idle isikhathi. Ngokunikeza amafayela wakho ashintshiwe, i-Play Console izokuphathela lokhu.

Ngilayishe ifayela lokushintshiwe/ukwenziwa kophawu, ngakho-ke kungani ukuphahlazeka kwami nama-ANR angaguquliwe?

Ngemuva kokuthi ulayishe ifayela lokwenza imephu ye-ProGuard noma ifayela lezimpawu zokususa iphutha lohlobo lwe-app yakho, ukuphahlazeka kuphela nama-ANR enzeka ngemuva azokwenziwa i-deobfuscation. Kuzomele uvumele isikhathi ukuze ukuphahlazeka okusha nama-ANR abikwe amadivayisi abasebenzisi ngaphambi kokuthi ubone ukuphahlazeka kwe-deobfuscated nama-ANR ku-Play Console.

Ngemuva kokulayisha ifayela le-deobfuscation/lokwenza uphawu, kungani ukuphahlazeka kwami nama-ANR angashintshiwe ngokungaphelele kuphela?

Lokhu kubangelwa ukulayisha ifayela elingaphelele lokushintshiwe/ukwenza uphawu. Yenza isiqinisekiso sokuthi amafayela ophawu ayo yonke i-app yakho, ikakhulukazi uma usebenzisa inqubo yokwakha enzulu noma yeziteji eziningi. Isizathu esisodwa esivame kakhulu soshintsho engaphelele ukuthi uma usebenzisa ilabhulari yenkampani yangaphandle. Kulesi simo, ungakwazi ukuthola amafayela ashintshiwe kusukela kumhlinzeki welabhulari.

Ngemuva kokulayisha ifayela loshintsho/lokwenza uphawu, kungani ngithola ukuphahlazeka okumbalwa, kodwa okubucayi kakhulu nama-ANR?

Ngaphandle kwamafayela oshintsho, ukuphahlazeka okufanayo noma i-ANR kudivayisi ye-32-bit neye-64-bit, noma i-ARM nedivayisi ye-Intel izoboniswa ngokuhlukile. Ngokunikeza amafayela ashintshiwe, singahlanganisa lokhu kuphahlazeka ndawonye, sikunikeze ukubuka okungcono kokuphahlazeka okunomthelela omkhulu nama-ANR ohlelo lwakho lokusebenza.

Kwenzakalani uma ngikhohlwa ukulayisha ifayela?

Uma ukhohlwa ukulayisha ifayela lenguqulo entsha yohlelo lwakho lokusebenza, ukuphahlazeka nama-ANR azobuyela ekubeni obfuscated. Landela imiyalelo engaphezulu ukuze ulilayishe manje. Ngemuva kokuthi ulayishe ifayela lokwenza imephu ye-ProGuard noma ifayela lezimpawu zokususa iphutha lohlobo lwe-app yakho, ukuphahlazeka kuphela nama-ANR enzeka ngemuva azokwenziwa i-deobfuscation. Kuzomele uvumele isikhathi ukuze ukuphahlazeka okusha nama-ANR abikwe amadivayisi abasebenzisi ngaphambi kokuthi ubone ukuphahlazeka kwe-deobfuscated nama-ANR ku-Play Console.

Ukuze ugweme ingcuphe yokukhohlwa ukulayisha ifayela, cabanga ukushintsha inqubo yakho yokwakha ukuze usebenzise izinqwaba zohlelo lokusebenza nge-Android Gradle plugin yenguqulo engu-4.1 noma yangemuva kwalokho. Kulesi simo, ungafaka ngokuzenzakalela ifayela lamasimbuli okususa iphutha kunqwaba yohlelo lokusebenza ngokulandela imiyalelo elandelayo kusayithi lonjiniyela be-Android.

Kwenzakalani uma ngilayisha ifayela elingalungile?

Uma ulayishe ifayela elingalungile lenguqulo yohlelo lwakho lokusebenza, ukuphahlazeka nama-ANR azobuyela ekubeni ngangashintshiwe. Ukuze ulayishe inguqulo elungisiwe:

  1. Vula i-Play Console.
  2. Khetha i-app.
  3. Kumenyu engakwesokunxele, khetha okuthi Khipha > Isihloli senqwaba ye-app
  4. Usebenzisa isikhi kukhona phezulu ohlangothini lwesandla sangakwesokudla, khetha i-artifact ehambisanayo.
  5. Khetha ithebhu ethi Ukudawuniloda, bese uskrolela phansi engxenyeni ethi "Amafa".
  6. Chofoza isithonjana sokusula eduze kwefayela elingalungile le-deobfuscation noma lokwenza uphawu.
  7. Uma inguqulo engalungile isuswa, chofoza isithonjana sokulayisha uphinde ulayishe ifayela elilungile lenguqulo yohlelo lwakho lokusebenza.

Ngemuva kokuthi ulayishe ifayela lokwenza imephu elilungile le-ProGuard noma ifayela lamasimbuli okususa iphutha enguqulo yohlelo lwakho lokusebenza, ukuphahlazeka kuphela nama-ANR avela ngemuva azoshintshwa. Kuzomele uvumele isikhathi ukuze ukuphahlazeka okusha nama-ANR abikwe amadivayisi abasebenzisi ngaphambi kokuthi ubone ukuphahlazeka koshintsho nama-ANR ku-Play Console.

Ithiphu: Ukuze ugweme ingcuphe yokulayisha inguqulo engalungile yefayela, cabanga ukushintsha inqubo yakho yokwakha ukuze usebenzise izinqwaba zohlelo lokusebenza nge-Android Gradle plugin yenguqulo engu-4.1 noma engemuva kwalokho. Kulesi simo, ungafaka ngokuzenzakalela ifayela lamasimbuli okususa iphutha kunqwaba yohlelo lokusebenza ngokulandela imiyalelo elandelayo kusayithi lonjiniyela be-Android.

Okwamanje ngisebenzisa ama-APK. Ngishintshela kanjani ekusebenziseni izinqwaba zohlelo lokusebenza?

Vakashela isayithi Lonjiniyela be-Android ukuze uqalise.

Uhlelo lwami lokusebenza luqukethe kokubili ikhodi yomdabu neye-Java Ngingakwazi ukulayisha kokubili ifayela lomdabu lokwenza isimbuli kanye nefayela le-Java deobfuscation?

Yebo.

Kungani amanye ama-ANR engabonisi ukulandelela istaki?

Ngesinye isikhathi isitimu ihlangabezana ne-ANR kodwa ayikwazi ukuqoqa ukulandeleka isitaki. Esimweni esinjalo, i-ANR iyaboniswa ukukunikeza ukubuka okuphelele kokuzinza kwe-app yakho, kodwa ukulandelela istaki ngokwaso akukwazi ukuboniswa. Ama-ANR anganakho ukulandelela kwezitaki afakwa kuqembu ngohlobo nangomsebenzi, ngakho-ke ukubuyekeza nokulungisa ama-ANR afanayo kungasiza ukunciphisa inombolo ngaphandle kokulandelela kwezitaki.

Ingabe lokhu kube usizo?

Singayithuthukisa kanjani?

Udinga usizo olungaphezulu?

Zama lezi zinyathelo ezilandelayo:

Sesha
Sula usesho
Vala usesho
Imenyu eyinhloko
17817132148747851469
true
Sesha isikhungo sosizo
true
true
true
true
true
92637
false
false