私は主にC++で、通常どおり.so
ライブラリにNDKによってコンパイルされるアプリを開発しました。ネイティブアプリは、CPUアーキテクチャごとに個別にビルドする必要があることはわかっています。そのため、so
とarmeabi-v7a
に異なるarmeabi
ファイルを用意しています。 (これらのアーキテクチャを備えたAndroidデバイスはあまりリリースされていないため、x86
とmips
を意図的に省略しました。)
ただし、サイズが非常に大きく、各so
ファイルは約90 MB
のスペースを必要とするため、これを減らしたいと思います。
下位互換性があるため、armeabi-v7a
を省略できることはわかっていますが、その場合、アプリの実行速度は非常に遅くなります。
私のアプリがAndroid ICS以上(minSdkVersion="14"
))のみをサポートしているという事実を考慮して、armeabi
を安全に削除できますか?これらの新しいデバイスはすべてarmeabi-v7a
を使用していますか?または、一部のデバイスはarmeabi-v7a
アーキテクチャではなく古いarmeabi
を使用している可能性がありますか?
変更されていない、元の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、それでも絶対に問題ないはずです。
armeabi
をサポートするがarmeabi-v7a
をサポートしないAndroid 4以上のデバイスはないため、armeabi
を安全に削除できます。
これはGooglePlayで自分で確認できます。2つのAPK(1つはarmeabi
をサポートし1つはarmeabi-v7a
をサポート)を作成し、両方をGooglePlayにアップロードしてみてください。サポートされているデバイスの数が同じであることがわかります。
両方のアーキテクチャをサポートしようとしているときにAPKをアーキテクチャごとに分割すると、GooglePlayにアップロードするときにエラーが発生することもあります。
このアプリのバージョンxxxは、すべてのデバイスがより高いバージョンコードのAPKを受信するため、どのデバイスからもダウンロードできません。
Zenfone 2の所有者として、私はノーと言います-これらのデバイスはICS +を実行しますが、x86マイクロアーキテクチャーを備えています。グーグルでAndroid x86パーセント)を検索すると、さまざまなマイクロアーキテクチャの市場シェアを示す統一ページに出くわすことができるはずです。また、MIPSベースのCPUを使用するニッチな製品がいくつかあります。 ICS +を実行します。
X86 Androidデバイスがx86の場合なしでコンパイルされたapkを実行できるようにするメカニズムはありますが、他の欠点があります。