安卓新发布机制----appbundle
Android App Bundle是⼀种改进的应⽤程序打包⽅式,能⼤幅度减少应⽤体积
unity可以直接导出appbundle,只需要在导出的时候勾选
但是通常项⽬有sdk离不开java端,我这⾥是⽤unity导出的gradle来做的
我的unity版本2018.4.0,android studio版本3.4
unity设置:
scripting backend选⽤il2cpp
armv7是肯定需要的;arm64在今后的版本提交android包必须要有,不然会给你警告;x86可选
arm64和x86勾选上的话,每个项通常会给包⼤⼩增加10M,(都勾选的话增加了20M)
所以,不管是为了⾕歌新发布机制(以后都会⽤appbundle提包,apk会不再使⽤),还是为了减少包⼤⼩,app bundle是趋势
File->Build Setting->(Android平台)Player Setting->Other Settings
设置完后导出gradle吧:File->Build Setting->(Android平台)勾选导出->Export
这是我导出的gradle:
打开adle:
appbundle减少包⼤⼩,我所理解的是它将包内容拆分成各个包,然后根据⼿机类型来安装它所需要的包,这样多余的内容就不需要安装进⼿机了(apk是将所有内容打包安装进⼿机),从⽽减少包⼤⼩
开启拆分:
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
gradle⼯具版本:
buildscript {
dependencies {
classpath 'ls.build:gradle:3.2.0'
}
}
gradle-wrapper.properties:
distributionUrl=https\:///distributions/gradle-4.6-all.zip
我之前打出appbundle包安装到⼿机上启动就会崩溃,然后查了资料,各种测试,发现gradle⼯具版本如果对应不上也是部分原因,
ls.build:gradle:3.2.0对应的是gradle-4.6-all.zip简易安卓app开发
前置条件完成(你得同步成功吧),接下来就是打包成appbundle了:
⽣成.aab⽂件:跟⽣成apk⽂件⼀样,Android Studio⾥⾯Build->Generate Signed Bundle or APK->Android App Bundle
--------导出的key
编译完成后的.aab⽂件就是我们需要的东西了,这个时候其实已经over了,如果测试没问题,就可以⽤.aab⽂件发布了
接下来测试:
测试⽅法⼀:
测试⼯具:bundletool-all-0.6.0.jar 这个东西unity已经帮你下好了,路径:Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools
步骤是,使⽤⼯具将.aab⽂件导出⼀个.apks⽂件,再⽤.apks⽂件安装到你的⼿机上,
⽤到的命令⾏:
.aab⽂件导出.apks⽂件:
java -jar "⼯具bundletool-all-0.6.0.jar路径" build-apks --bundle=".aab⽂件路径" --output="导出的.apks⽂件路径,你想放哪放哪" --
ks="keystore路径" --ks-key-alias="keystore别名" --ks-pass="keystore密码"
.
apks⽂件安装到⼿机(需连接设备):
java -jar "⼯具bundletool-all-0.6.0.jar路径" install-apks --apks=".apks⽂件路径" --adb="adb路径()"
测试⽅法⼆:
新建⼀个.sh⽂件,输⼊下⾯内容,将对应的路径和名字密码改成你⾃⼰的,记住这⾥路径不同于windows的c://xxxx,⽽是/c/xxx
#!/bin/sh
KEYSTORE=/C/Users/Administrator/Desktop/AndroidAppBundle/windforce_keystore
KS_ALIAS="windforce games"
PASS='pass:Wfwindforce123'
BUNDLETOOL_PATH=/C/Users/Administrator/Desktop/AndroidAppBundle/bundletool-all-0.6.0.jar
TMP_APKS_PATH=/C/Users/Administrator/Desktop/AndroidAppBundle/DragnMerge.apks
AAB_PATH=/C/Users/Administrator/Desktop/AndroidAppBundle/DragnMerge.aab
ADB_PATH=/G/Users/Administrator/AppData/Local/Android/Sdk/
echo "Creating $TMP_APKS_PATH from $AAB_PATH"
java -jar $BUNDLETOOL_PATH build-apks --bundle=$AAB_PATH --output=$TMP_APKS_PATH \
--ks=$KEYSTORE --ks-key-alias="$KS_ALIAS" --ks-pass=$PASS && \
echo "Installing $TMP_APKS_PATH" && \
java -jar $BUNDLETOOL_PATH install-apks --apks=$TMP_APKS_PATH --adb=$ADB_PATH
保存.sh⽂件,你可以下载⼀个Git来运⾏它
----------------------------------------------------------------------------------------------------------------------------------------------
后记:
⽣成出来的.apks⽂件可以改后缀为.zip解压看看⾥⾯的内容(此步骤可省略,只为看appbundle本质)
Google play到时候安装到玩家⼿机上时,会⾃动根据玩家的机型配置安装对应的.apk,达到减⼩包⼤⼩的⽬的
⼩⽶8测试:
安装后⼤⼩对⽐
前⾯提到闪退,⼀个原因是gradle⼯具版本号不对应,另外⼀个原因就是我在unity⾥⾯使⽤了Marshal下⾯的这个函数public static IntPtr StringToCoTaskMemAnsi(string s);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论