デフォルトでは、AndroidとFlutterによってパッケージ化されたApkにはすべてのアーキテクチャが含まれているため、型指定されたapkのボリュームは単一アーキテクチャのapkのボリュームよりも少し大きくなります。
現時点では、異なるアーキテクチャパッケージを個別に入力する必要があります。
建築
一般的に、x86は32ビットCPUを表し、x64(またはx86-64)は64ビットCPUを表します。
Androidでは、独自のCPUアーキテクチャのサポートもアプリケーションバイナリインターフェイス(ABI)です。
Android開発者の公式ウェブサイトのドキュメントでサポートされているABI。
armeabi-v7a
このABIは32ビットARMベースのCPUに適用され、2016年以前のAndroidフォンのほとんどのCPUはこのアーキテクチャを使用しています。
arm64-v8a
このABIはARMv8-AベースのCPUに適しており、64ビットAArch64アーキテクチャをサポートします。通常、2016年以降、主流のAndroidフォンのCPUアーキテクチャはarm64です。
x86
このABIはX86アーキテクチャをサポートしており、IntelやAMDなどのCPUはこのアーキテクチャに基づいています。
2012年から2016年の間に、モバイルインターネットの波に追いつくために、IntelとNvidiaはAndroid携帯電話とタブレット用のX86ベースのCPUを特別に発売しましたが、残念ながらすべて失敗しました。APKをIntelタブレットにインストールする必要がない限り、通常、このアーキテクチャを今すぐ適応させる必要はありません。
x86_64
このABIは、x86-64ビットアーキテクチャのCPUをサポートします。同上
これらのアーキテクチャでは、Androidはサポートされ
mips
なくmips64
なりました(gradle 4.4に対応)。NDKr17以降、これらのABIはターゲットとしてサポートされなくなったためです。armeabi
Android Plugin for Gradle 3.1.0
APKサブパッケージ
アンドロイド
モジュールレベルのbuild.gradleファイルで、Androidコードブロックにsplitsモジュールを追加します。
基本構成は以下のとおりです。
android {
...
splits {
// 基于不同的abi架构配置不同的apk
abi {
// 必须为true,打包才会为不同的abi生成不同的apk
enable true
// 默认情况下,包含了所有的ABI。
// 所以使用reset()清空所有的ABI,再使用include指定我们想要生成的架构armeabi-v7a、arm-v8a
reset()
// 逗号分隔列表的形式指定 Gradle 应针对哪些 ABI 生成 APK。只与 reset() 结合使用,以指定确切的 ABI 列表。
include "armeabi-v7a", "arm64-v8a"
// 是否生成通用的apk,也就是包含所有ABI的apk。如果设为 true,那么除了按 ABI 生成的 APK 之外,Gradle 还会生成一个通用 APK。
universalApk false
}
}
}
フラッター
次のコマンドを使用すると、v7a、v8a、およびx86-64の3つのアーキテクチャのapkが自動的に生成されます。
flutter build apk --split-per-abi
ビルド場所はbuild/app / outputs /flutter-apk/です。