一、什么是aab?aab如何在google上安装
aab是Android App Bundle缩写;
Google Play上一种新的上传格式,以前是传apk,现在可以传Bundle;
Google Play 会使用您的 App Bundle 针对每种设备配置生成并提供经过优化的 APK,因此只会下载特定设备所需的代码和资源来运行您的应用;您不必再构建、签署和管理多个 APK 来优化对不同设备的支持,而用户也可以获得更小且更优化的下载文件包。
aab限制
仅限于通过 Google Play 发布的应用;
签名计划,就是你的签名需要上传到googleplay后台:Google 的 beta program enroll your app in app signing by Google Play in the Play Console;
最低支持版本Android 5.0 (API level 21);
二、aab怎么打包,怎么测试
之前发过一篇文章详细的可以看
aab开发、aab测试脚本
Android开发编程,公众号:Android开发编程GooglePlay为何强推Appbundle?一起来一探究竟
三、aab升级有什么影响
1、用googleplay商店内升级
之前传的包apk,之后传的包aab:可以正常升级没问题 例子:我们app用aab已经一年了,都没什么大的问题;
aab升级aab包,肯定没问题,签名都是一样的;
aab升级到apk,经过测试是没问题的,但是一旦用过aab了,肯定不会用apk;
2、应用内升级
应用内升级只能下载apk,不要下载aab---重点
①用户从googleplay商店aab下载包,通过本地下载apk升级到最新版本,没问题的;
②用户用apk安装,通过googleplay升级,这个也是可以的;只要签名没问题,版本号没问题就可以的;
四、app渠道和分包影响
1、不走googleplay商店,直接上第三方市场:
打包还是apk,不要aar;
渠道直接打到包里就可以了;
签名要和aab一样,不要乱用不同的签名;
版本号要正确
2、只上googleplay
用第三方比如appsFlyer、Adjust获取渠道
用谷歌提供的方法自己解析:Install Referrer API, 点击带有referrer的链接(形如http://xxxx&referrer=test%3Dtest111)跳转到Google Play后,Google Play会记录(Capture)附带的参数,下载安装后(经测试,必须从Play商店点击下载并安装才可行),首次打开APP时,Gooogle Play会将参数给APP
dependencies {
...
implementation 'com.android.installreferrer:installreferrer:1.0'
}
try {
final InstallReferrerClient installReferrerClient = InstallReferrerClient.newBuilder(context).build();
installReferrerClient.startConnection(new InstallReferrerStateListener() {
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
// Connection established, get referrer
if (installReferrerClient != null) {
try {
ReferrerDetails response = installReferrerClient.getInstallReferrer();
String referrer = response.getInstallReferrer();// 你要得referrer值
if (!TextUtils.isEmpty(referrer)) {
}
installReferrerClient.endConnection();
} catch (Exception ex) {
Log.e("InstallReferrerHelper", ex.toString());
}
}
break;
case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// API not available on the current Play Store app
Log.d("InstallReferrerHelper", "FEATURE_NOT_SUPPORTED");
break;
case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
// Connection could not be established
Log.d("InstallReferrerHelper", "SERVICE_UNAVAILABLE");
break;
}
}
public void onInstallReferrerServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
} catch (Exception ex) {
Log.e("InstallReferrerHelper", ex.toString());
}
3、aab对分包的影响
bundle {
language {
// Specifies that the app bundle should not support
// configuration APKs for language resources. These
// resources are instead packaged with each base and
// dynamic feature APK.
enableSplit = false
}
density {
// This property is set to true by default.
enableSplit = true
}
abi {
// This property is set to true by default.
enableSplit = true
}
}
language 语言
abi so包
density 资源包:比如图片
enableSplit true开启 false 关闭
app里如果有so库,一定要支持32位和64位;
图片资源和国际语言,如果没有做到位,就不要开启分包了;
分包后对于崩溃和订阅是没有影响的,大家放心使用;
总结:
1、aab打包一定要测试,测试脚本在公众号里可以获取
2、在googleplay后台要上传签名,这个一定要小心小心在小心,不然传错了很麻烦的
3、关于aab的细节还有很多,有问题了直接发信息