【问题标题】:Is App Bundle enough or the APK Splits necessary to reduce an APK size?App Bundle 是否足够或减少 APK 大小所需的 APK 拆分?
【发布时间】:2019-12-14 09:57:17
【问题描述】:

我正在使用 OpenCV Library v4.1.2 来实现 GrabCut 算法,我只使用以下:

import org.opencv.android.Utils;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Rect;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

生成 APK 后,它的大小非常大70MB

Gradle:

defaultConfig {
    applicationId "abc.app"
    minSdkVersion 21
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

我的问题:

Android App Bundle 是否足以减少 APK 大小,还是我应该按每个架构拆分它?

【问题讨论】:

    标签: android apk opencv4android android-app-bundle


    【解决方案1】:

    发布 Android App Bundle 时,Play 会为您按 ABI(以及 DPI 和语言)进行拆分。这是 Android App Bundle 的主要优势之一:您只需发布具有单个 versionCode 的单个工件,Play 可以代表您管理有关减小应用大小的所有最佳实践。

    【讨论】:

    • 谢谢,我知道了,我想虽然我用的是abb,但还是需要拆分APK
    【解决方案2】:

    虽然您可以将大小小于 100MB 的应用程序上传到 Google Play 商店,但强烈建议您使用 Android Abb Bundle 功能。很容易实现:

    bundle {
       language {
           enableSplit = true
       }
       density {
           enableSplit = true
       }
       abi {
           enableSplit = true
       }
    }
    

    由于您支持四个 abis:'armeabi-v7a''arm64-v8a''x86''x86_64',使用 Android Abb Bundle 将显着减少用户从 Google Play 商店下载的最终包的大小。根据您提供的信息,我猜它会降低一半,大约为 30-40MB。

    如果您没有将您的应用本地化为其他语言,或者本地化文件不占用太多空间,您可以设置language {enableSplit = false},如果您没有占用太多空间,同样的逻辑适用于密度通过不同的密度依赖文件。

    【讨论】:

    • 请注意enableSplit 的默认值是true,因此如果您对这些值感到满意,可以省略整个bundle {} 块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多