安卓新发布机制----app bundle
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:
打开build.gradle:
appbundle减少包大小,我所理解的是它将包内容拆分成各个包,然后根据手机类型来安装它所需要的包,这样多余的内容就不需要安装进手机了(apk是将所有内容打包安装进手机),从而减少包大小
开启拆分:
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
gradle工具版本: build.gradle:
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
}
gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
我之前打出appbundle包安装到手机上启动就会崩溃,然后查了资料,各种测试,发现gradle工具版本如果对应不上也是部分原因,
com.android.tools.build:gradle:3.2.0对应的是gradle-4.6-all.zip 前置条件完成(你得同步成功吧),接下来就是打包成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路径(xxx/adb.exe)"
测试方法二:
新建一个.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/platform-tools/adb.exe
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);
安卓新发布机制----app bundle的更多相关文章
- 使用Hbuilder将自己app发布到App Store(一)
1.如果你有mac系统那请看第二步. 首先需要一台虚拟机,还需要个插件要不没法装,都在这链接里面了 链接:https://pan.baidu.com/s/1N_pWJWFk-EJILTXuFr6w5g ...
- iOS9新系统下APP Store 应用上传新指南
一 iTunes Connect介绍 iTunes Connect是面向iOS应用开发人员的苹果门户网站,供开发人员管理其应用,跟踪下载情况.今年1月份闹得沸沸扬扬的iTunes Connect BU ...
- 【Egret】Wing3发布移动APP功能,打包APK流程以及会遇到的问题
流程:1.安装好wing 3,然后 插件--Egret项目工具--发布移动APP--Build android native project 2.配置发布环境: Android 1.egret eng ...
- Unity上线google商店 用IL2Cpp打包64位版本和Android APP Bundle优化 及产生的bug
ios刚上线,这边着手改成android版本,我开始使用的是unity2017.4.1版本 上传谷歌商店是出现这两个警告: 要支持64位,但是在2017版本上没有找到64位的打包选项,猜测应该是版本的 ...
- iOS9新系统下App Store应用上传新指南
http://www.cocoachina.com/appstore/20151010/13691.html 最近频繁收到小伙伴们的反馈,说经过前期学习已对ASO规则略有了解,但APP的提交审核是由技 ...
- 【Unity3D】Android App Bundle(aab)打包上架Google Play介绍
总体说来,Android App Bundle打包有3种方式,每种方式都有成功上架Google Play进行测试通过,因此实用程度还是挺高的.能够理解以下内容的前提是会打apk包,知道如何生成Asse ...
- 苹果IOS开发者账号总结--发布应用APP时team name是否可以随意写?
个人账号(Individual): 费用99美金一年, 该账号在App Store销售者只能显示个人的ID,比如zhitian zhang,单人使用.个人账号只能有一个开发者.100个苹果的iOS设备 ...
- UWP/Win10新特性系列—App Service
Win10中,新增了一个很实用的新特性叫做App Service,App Service允许App不在前台运行的情况下提供出一个或多个对外服务供其他App使用,这看起来就好像Web开发中的Web Ap ...
- benchmark pm2的cluster模式发布web app的性能与相关问题解决方法
pm2以cluster集群方式发布app,可以高效地利用多核cpu,有效提升吞吐量.在上周对公司的redmine服务器进行性能调优后,深感ruby on rails的性能低下,这次测试nodejs的s ...
随机推荐
- js栈和堆的区别
一. 堆(heap)和栈(stack) 栈(stack)会自动分配内存空间,会自动释放.堆(heap)动态分配的内存,大小不定也不会自动释放. 二. 基本类型和引用类型 基本类型:简单的数据段,存 ...
- React造轮子:拖拽排序组件「Dragact」
先来一张图看看: 项目地址:Github地址 (无耻求星!) 在线观看(第一次加载需要等几秒):预览地址 说起来不容易,人在国外没有过年一说,但是毕竟也是中国年,虽然不放假,但是家里总会主内一顿丰盛的 ...
- 微软Blazor组件发布,DevExpress v19.1.8中可用:Charts新功能
点击获取DevExpress v19.2.3最新完整版试用下载 DevExpress UI for Blazor在v19.1.8中可用,此次更新发布包括DevExpress Blazor组件的主要功能 ...
- 小程序swiper组件的bindchange方法重复执行问题
这是官方文档的说法给出了swiper组件一直来回滑动的bug原因 以下是修正方法 <swiper autoplay="{{autoplay}}" interval=" ...
- Vue习题作业练习
作业一: 用table表格标签渲染以上数据,表格第一列是学生总分排名,最后一列是学生总分 <!DOCTYPE html> <html lang="en"> ...
- hive元数据
本文介绍Hive元数据库中一些重要的表结构及用途,方便Impala.SparkSQL.Hive等组件访问元数据库的理解. 1.存储Hive版本的元数据表(VERSION) 该表比较简单,但很重要. V ...
- Netty入门 零基础
因为接下来的项目要用到netty,所以就了解一下这个程序,奈何网上的教程都是稍微有点基础的,所以,就写一篇对于netty零基础的,顺便也记录一下. 先扔几个参考学习的网页: netty 官方API: ...
- Vue 工程化最佳实践
目录结构 总览 api 目录用于存放 api 请求,文件名与模型名称基本一致,文件名使用小驼峰,方法名称与后端 restful 控制器一致. enums 目录存放 常量,与后端的常量目录对应 ...
- BZOJ 4269: 再见Xor 线性基+贪心
Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行一个正整数N. 接下来一行N个非负整数. ...
- Gym 100971A Treasure Island BFS 思维题
A - Treasure Island Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64 ...