web-dev-qa-db-ja.com

Android 4以降ではarmeabi-v7aのみをサポートしても安全ですか?

私は主にC++で、通常どおり.soライブラリにNDKによってコンパイルされるアプリを開発しました。ネイティブアプリは、CPUアーキテクチャごとに個別にビルドする必要があることはわかっています。そのため、soarmeabi-v7aに異なるarmeabiファイルを用意しています。 (これらのアーキテクチャを備えたAndroidデバイスはあまりリリースされていないため、x86mipsを意図的に省略しました。)

ただし、サイズが非常に大きく、各soファイルは約90 MBのスペースを必要とするため、これを減らしたいと思います。

下位互換性があるため、armeabi-v7aを省略できることはわかっていますが、その場合、アプリの実行速度は非常に遅くなります。

私のアプリがAndroid ICS以上(minSdkVersion="14"))のみをサポートしているという事実を考慮して、armeabiを安全に削除できますか?これらの新しいデバイスはすべてarmeabi-v7aを使用していますか?または、一部のデバイスはarmeabi-v7aアーキテクチャではなく古いarmeabiを使用している可能性がありますか?

19
Mousa

変更されていない、元のAndroidのソースAndroid 4.0以降は、デフォルトでARMv5/ARMv6をサポートしていません(ただし、ARMv5/ARMv6用にビルドするように変更できますARMv6で実行されるカスタムビルドがあります)。そのようなAndroidリリースと互換性があると認定されたARMv6デバイスを取得できるかどうか、または非公式ファームウェアにのみ適用できるかどうかはわかりません。 Android 4.4なので、CDD(互換性の定義)にはARMv7が厳密に必要です。 https://Android.stackexchange.com/questions/34958/what-are-the-minimum-)を参照してください。詳細については、hardware-specifications-for-Android を参照してください。

そうです、おそらく、原則として、アプリでAndroid 4.0が必要な場合は、armeabiを削除できますが、そのような公式の保証があるかどうかはわかりません。必要な場合Android 4.4、それでも絶対に問題ないはずです。

22
mstorsjo

armeabiをサポートするがarmeabi-v7aをサポートしないAndroid 4以上のデバイスはないため、armeabiを安全に削除できます。

これはGooglePlayで自分で確認できます。2つのAPK(1つはarmeabiをサポートし1つはarmeabi-v7aをサポート)を作成し、両方をGooglePlayにアップロードしてみてください。サポートされているデバイスの数が同じであることがわかります。

両方のアーキテクチャをサポートしようとしているときにAPKをアーキテクチャごとに分割すると、GooglePlayにアップロードするときにエラーが発生することもあります。

このアプリのバージョンxxxは、すべてのデバイスがより高いバージョンコードのAPKを受信するため、どのデバイスからもダウンロードできません。

5
Cristan

Zenfone 2の所有者として、私はノーと言います-これらのデバイスはICS +を実行しますが、x86マイクロアーキテクチャーを備えています。グーグルでAndroid x86パーセント)を検索すると、さまざまなマイクロアーキテクチャの市場シェアを示す統一ページに出くわすことができるはずです。また、MIPSベースのCPUを使用するニッチな製品がいくつかあります。 ICS +を実行します。

X86 Androidデバイスがx86の場合なしでコンパイルされたapkを実行できるようにするメカニズムはありますが、他の欠点があります。

0
user930067