Bir APK'nın hangi mimariye yönelik olduğunu nasıl anlayabilirim?


9

Ben büyük miktarda apks test etmek için bir senaryo yazıyorum. Bazıları x86'da, bazıları kolda koşuyor. Hangi uygulamaların hangi mimari için tasarlandığını anlamanın bir yolu var mı?

Aapt rozetiyle ilgili raporu inceledim aapt dump badging application.apk. Bazı kol uyumlu sürümleri native-code: 'armeabi-v7a'için görüyorum, ancak hepsi için değil ve x86 uyumlu uygulamaların hangi mimaride çalıştığına dair herhangi bir gösterge göremiyorum.

Ayrıca apk koparmak ve AndroidManifest.xml incelemek için apktool kullanmayı denedim. İçindeki çip mimarisiyle ilgili hiçbir şey görmüyorum.

Herhangi bir fikir?

Yanıtlar:


17

Bir APK'nın yerel kitaplıklarının hangi mimariyi oluşturduğunu görmenin (oldukça kaba) bir yolu onu açmak (sadece bir zip dosyasıdır) ve libs klasörüne bakmaktır - uygulama herhangi bir yerel kitaplık içeriyorsa, içinde aşağıdaki alt klasörler (bunların içinde derlenmiş kitaplıklar bulunur):

APK'nın yapısı ve yukarıdaki listenin kaynağı hakkında daha fazla bilgi için Android Uygulama Paketi'ne bakın . Mimariye özgü şeyler hakkında bazı bilgilerin yanı sıra daha eksiksiz (MIPS64 dahil) bir liste, 18 Nisan 2016'da yakalanan Android Geliştirici ABI Yönetimi sayfasının arşivlenmiş bir sürümünde bulunabilir .

İlginç bir şekilde, tek bir ABI'yi (bir uygulamanın bir mimari için tasarlanmış yerel kütüphaneleri içerdiği) hedeflemek, uygulamanın diğer mimarileri kullanan cihazlarda çalışmayacağı anlamına gelmez. Örneğin ARMv8-a, ARM ve ARMv7-a ile geriye dönük olarak uyumludur ve Intel'in x86 Android cihazları , ARM kodunun x86 cihazlarda çalışmasına izin veren özel bir çeviri katmanı içerir (yalnızca ARM uygulamalarının x86 platformlarında çalışmasına izin verir). Android cihazının çalıştırabileceği ABI'lerin bir listesi, şu komutu kullanarak ro.product.cpu.abilistbir kabukta (örn. Cihazdaki bir terminal uygulaması aracılığıyla veya adb kullanarak adb shell) elde edilebilen mülkte bulunabilir .getpropgetprop ro.product.cpu.abilist

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.