Android、さまざまなCPUアーキテクチャパッケージ(v7a、v8a、x86)用のFlutterパッケージAPK

デフォルトでは、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はターゲットとしてサポートされなくなったためです。armeabiAndroid 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/です。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/adojayfan/article/details/122107605