我正在使用OpenCV库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
等级:
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的大小,或者我应该按每种体系结构拆分它?
尽管可以将大小不超过100MB的应用上传到Google Play商店,但强烈建议您使用Android Abb捆绑功能。这很容易实现:
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
[由于您支持四个abis:'armeabi-v7a'
,'arm64-v8a'
,'x86'
和'x86_64'
,因此使用Android Abb捆绑包将大大减少用户从Google Play商店下载的最终软件包的烦恼。根据您提供的信息,我想它将减少一半,至大约30-40MB。
如果您没有将应用程序本地化为其他语言,或者本地化文件不占用太多空间,则可以设置language {enableSplit = false}
,如果您不占用太多空间,则可以使用相同的逻辑进行密度计算不同的密度相关文件。
[发布Android应用程序捆绑包时,Play会为您按ABI(以及DPI和语言)进行拆分。这是Android App Bundle的主要优点之一:您只需要发布具有单个version的单个工件Code,并且Play可以代表您管理减小应用程序大小的所有最佳实践。