APKの対象となるアーキテクチャを確認する方法は?


9

大量のAPKをテストするスクリプトを書いています。一部はx86で実行され、一部は腕で実行されます。どのapkがどのアーキテクチャ向けかを知る方法はありますか?

での適切なバッジに関するレポートを確認しましたaapt dump badging application.apk。一部のarm互換バージョンでは表示されますnative-code: 'armeabi-v7a'が、すべてのバージョンでは表示されません。また、x86互換APKが実行されているアーキテクチャの兆候も表示されません。

また、apktoolを使用してapkを分解し、AndroidManifest.xmlを調べました。チップアーキテクチャに関連するものも見当たらない。

何か案は?

回答:


17

APKのネイティブライブラリが構築されているアーキテクチャを確認する(かなり大雑把な)方法の1つは、それを解凍し(zipファイルのみです)、libsフォルダーを確認することです。アプリケーションにネイティブライブラリが含まれている場合、それらは分割されます。以下のサブフォルダー(コンパイルされたライブラリーがこれらの中にある):

APKの構造と上記のリストのソースの詳細については、Androidアプリケーションパッケージを参照してください。より完全な(MIPS64を含む)リストは、アーキテクチャ固有のものに関するいくつかの情報とともに、2016年4月18日にキャプチャされたアーカイブ済みバージョンのAndroid Developer ABI Managementページにあります。

興味深いことに、1つのABI(アプリに1つのアーキテクチャ用に設計されたネイティブライブラリが含まれている)をターゲットにしても、他のアーキテクチャを使用するデバイスでアプリが実行されないわけではありません。たとえば、ARMv8-aはARMおよびARMv7-aと下位互換性があり、Intelのx86 Androidデバイスには、ARMコードをx86デバイスで実行できる独自の変換レイヤーが含まれています(ARM専用アプリをx86プラットフォームで実行できます)。Androidデバイスが実行できるABIのリストはro.product.cpu.abilistプロパティにあります。これは、次のコマンドを使用して、シェルで(たとえば、デバイスのターミナルアプリを介して、またはadbを使用してadb shell)取得できます。getpropgetprop ro.product.cpu.abilist

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.