Android aab的打包、调试、安装 |
您所在的位置:网站首页 › adb命令安装apk到手机应用无法启动 › Android aab的打包、调试、安装 |
一、前言
Google Play在今年3月发出了一个 Google Play新政策通知,即在今年8月后新应用必须以 API 级别 30 (Android 11) 为目标平台,并使用 Android App Bundle(aab)发布格式,对于现有应用是不受强制影响的。 首先声明一点: aab是开发者上传至应用市场的应用包格式,不是手机解析安装的格式 目的是为了用户用更少流量下载到机型匹配的apk包,同时开发者也能更放心的使用多abi架构的so库, 不用担心so兼容对apk大小的影响 很多媒体带节奏发新闻说aab是代替apk格式,目的是针对华为或者国内手机厂商,纯属扯淡,简直离离原上谱 如果我没记错的话,早在18年Google就已经提出了aab这个东西
Google官方说平均减少包体积15%,对于使用很多so库的应用这个数字还是太过保守,据我实际测试下来so库占用apk总体积的53.8%情况下,aab格式比apk格式的分发下载直接减小了25%,别的不说就光从这一点上面就已经很有吸引力了。 二、.aab的本质.aab实际上和.apk一样是个压缩包,你可以直接改后缀为.zip然后解压,解压后有如下目录: .aab不能直接安装到设备上,需要通过工具命令把它转成.apks,再使用工具命令组合多个apk部署到设备(这个过程是工具内部根据adb连接的设备自动组合的)。操作.aab格式的文件,需要下载官方工具bundletool。 转aab为apks命令: build-apks // --bundle为输入文件的全路径(当前目录直接使用文件名) --output为输出文件全路径 bundletool build-apks --bundle=my.aab --output=my.apks直接使用如上命令应该是会报错找不到命令的command not found: bundletool,正确执行jar文件方式是到bundletool.jar的文件夹下或者使用全路径 java -jar bundletool-xxx.jar build-apks --bundle=my.aab --output=my.apks以上方式仅适合在项目目录下运行,因为这个过程其实是需要签名文件和相关参数的,默认情况下会按照未二次签名的debug版本处理,下面会介绍到带参数转aab 安装命令: install-apks java -jar bundletool-xxx.jar install-apks --apks=myapp.apks 带参数转aab为apks: build-apks java -jar bundletool-xxx.jar build-apks --bundle=my.aab --output=my.apks --ks=/path/xxx.jks --ks-pass=pass:xxx --ks-key-alias=xxx --key-pass=pass:xxx常规的一次.aab转.apks大概需要指定如下参数 // 请注意:以下命令因带换行格式无法直接使用 bundletool build-apks --bundle=my_app.aab --output=my_app.apks –ks=/MyApp/keystore.jks –ks-pass=file:/MyApp/keystore.pwd –ks-key-alias=MyKeyAlias –key-pass=file:/MyApp/key.pwd –ks 签名文件的全路径 –ks-pass 签名文件密码,可以使用pass:xxx指定明文密码,也可以使用file:xxx指定文件密码 –ks-key-alias 签名别名 –key-pass 签名密码,可以使用pass:xxx指定明文密码,也可以使用file:xxx指定文件密码 从现有的 APK 集中提取设备专用 APK: extract-apks java -jar bundletool-xxx.jar extract-apks --apks=my.apks --output-dir=my.aab --device-spec=xxx.json// 请注意:以下命令因带换行格式无法直接使用 bundletool extract-apks –apks=/MyApp/my_existing_APK_set.apks –output-dir=/MyApp/my_pixel2_APK_set.apks –device-spec=/MyApp/bundletool/pixel2.json 其中json文件可以手动创建,也可以根据已连接的adb设备自动创建,这里展示一下手动创建的参数格式 { "supportedAbis": ["arm64-v8a", "armeabi-v7a"], "supportedLocales": ["en", "fr"], "screenDensity": 640, "sdkVersion": 27 } 预估打包成aab格式后下载文件的大小: get-size java -jar bundletool-xxx.jar get-size total --apks=my.apks 更多命令的用法可查看 bundletool官方文档。 四、打包发布流程 工具栏中选择进行应用签名![]() ![]() ![]() ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |