为什么要打包
一般我们刚开始写Android的时候,我们都会想,我们直接运行过后,我们在项目的project目录的build/outputs/apk里能找见我们所运行后生成的apk,我们也是可以安装在手机上
image.png如上所示,我们生成的apk就在这里,这个是可安装在app上面的,但是我们为什么不这样做?
通过包名+签名来确定一个应用的唯一性,那个 debug.apk 只是系统用来给我们调试用的,如果上传到市场,怎么来保证他的安全性。
OK,我们已经解决了第一步—怎么打包。上传上去后,市场反馈发现我们的App写得太棒了,这时候老大让赶快多上些平台,主流的平台、非主流的平台都要放上去。
那么问题来了,为了方便统计各个平台的安装情况,配合运营推广,需要统计各个平台的安装情况。
打包过程
- 配置详情 ,我们先来介绍一下里面的具体意思
-
Library Reposiory当前的Module的仓库源.
这里可以定义一个地址,一个本地路径,或者是jcenter()和mavenCentral().
填写任何一个仓库,AS会自动下载对应的仓库,如果你随便填写一个,会提示你无法连接到该仓库.我这这里填写了mavenCentral() -
Ignore Assets Pattern:打包时候要忽略的文件
这将影响所有使用aapt的task.
这里我填写一个siyehua.
在对应的文件中可以看到多了以下代码:
Incremental Dex:增长DEX
Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行
如果将它设置为ture,可以看到对应的文件中增加了如下代码
dexOptions {
incremental true`
}
Source Compatibility:资源版本
Target Compatibility:目标版本
两个都选了1.7,可以看到增加了如下代码:
image image image.pngSigning签名
image.png它们之间的关系是:
一个keystroe就是一个签名文件.打开它需要一个密码,就是keystore密码.Keystrore中可以存放多个key Alias,每一个key alias有一个单独的密码.
Flavors(多样性,多渠道)
我们的应用经常需要多渠道打包.这个可以翻译为多渠道打包.
image.png-
Name:Flaveor的名字
-
Min Sdk Version:向下兼容的SDK版本
-
Application Id:包名
-
Proguard File:混淆文件
混淆文件,去除无用文件,并优化代码
- Signig Config:签名文件名.
签名的文件信息在前一个选项卡Signing中设置.在这里选择
-
Target Sdk Version:目标SDK版本
-
Test Instrumentation Runner:Test Runner
-
Test Application Id:测试时的ID
-
关于Test的介绍请点击:http://www.apihome.cn/api/android/Instrumentation.html
-
Version Code:Module版本
-
Version Name:Module版本名称
设置了以后可以看到这个渠道对应的信息
image image.png-
Name:Build Type名称
-
Debugable:是否可以调试
-
Jin Debuggable:是否可以调试JNI
-
Signing Config:签名信息
-
Renderscript Debuggale:是否使用RenderScript
-
Renderscript Optim Level:Rendescript版本.
RenderScript相关介绍http://www.cnblogs.com/TerryBlog/archive/2012/03/02/2377251.html
-
Minify Enabled:是否去除无用的资源
-
Pseudo Locales Enaled:是否支持本地化整理
关于本地化整理介绍http://blog.csdn.net/kieven2008/article/details/6873610
-
Proguard File:混淆,去重文件路径
-
Application Id Suffix:App id后缀
-
Version Name Suffix:版本名称后缀
-
Zip Align Enabled:是否支持Zip Align
关于ZipAlign介绍:http://www.cnblogs.com/xirihanlin/archive/2010/04/12/1710164.html
tesst_001设置好以后的对应属性:
image看完上面的的相信大家对Gradle,相应的配置,以及要怎么配置,在哪里配置.都有了一个大概的了解.
注意:直接修改gradle会直接修改对应的设置.
更多Gralde信息.比如说Flavors与Build Types之间有什么关系,对项目的构建会产生什么影响.
如何使用命令行配置等等问题
可以参考以下链接(这些链接也是我写这博文的参考基础.):
①Gradle翻译:在这里可以看到每个选项的作用是什么,翻译的非常好
http://blog.csdn.net/qinxiandiqi/article/category/2394347
②Gradle基础,学习之路大神最新教程
http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/
③Gralde官网
对应的部分使用翻译
http://somefuture.iteye.com/category/300603
④Gralde翻译以及使用
网友评论