一、构建的应用类型
- 在Gradle工程中,内置了debug和release两种构建类型,这两种模式的差别在于,能否在设备上调试以及签名不一样,其他代码和资源文件都是一样的
- 如果想要增加新的构建类型,可以再buildTypes{}代码块中继续添加元素就可以了,buildTypes和signingConfigs一样,也是Android的一个方法,接受的参数是一个域对象NamedDomainObjectContainer,添加的每一个都是BuildType类型,下面列举常用配置
1.applicationIdSuffix
- 是BuildType的一个属性,用于配置基于默认applicationId的后缀,比如默认defaultConfig中配置的applicationId为org.flysnow.app.example82.我们在debug的BuildType中的指定applicationSuffix为debug,那么构建生成的包名就是org.flysnow.app.example82.debug
2.debuggable
- 配置是否生成一个可供调试的apk,其值为true或者false
3.jniDebuggable
- 用于配置是否生成一个可以供调试Jni代码的apk,接受boolean类型的值
4.minifyEnabled
- 用于配置该BuildType是否可以使用Proguard混淆,接受一个boolean类型值
5.multiDexEnabled
- 用于配置该BuildType是否启用自动拆分多个Dex的功能
6.proguardFile
- 用于配置Proguard混淆使用的配置文件,和前面讲的defaultConfig中的proguardFile一样
7.proguardFiles
- 用于配置Proguard混淆使用的配置文件,该方法可以同时配置多个Proguard配置文件
8.shrinkResources
- 用于配置是否自动清理未使用的资源,默认为false
9.signingConfig
- 配置该BuildType使用的签名配置
每一个BuildTYpe都会生成一个SourceSet,默认位置就是src//
每一个SourceSet都包含源代码,资源文件信息
新增的BuildTYpe名字,不能是main、androidTest,这两个已经被占用了
每个BuildType还会生成相应的assemble任务,如果常用的assembleRelease和assembleDebug就是Gradle自动生成的两个Task任务,他们是release和debug,这两个BuildType自动创建生成的,执行相应的assemble任务,就能生成对应BuildType的所有apk。
二、使用混淆
- 启用混淆
- BuildType中的属性minifyEnabled的值设置为true
android {
buildTypes {
release {
minifyEnabled true
}
debug {
}
}
}
- 使用Proguard来配置文件,现在为我们的混淆指定配置文件
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro')
}
debug {
}
}
}
三、启用zipalign优化
- 这是一个整理优化apk文件的工具,提供系统和应用的运行效率,更快地读写apk中的资源,降低内存的使用,所以对于要发布的app,一定要使用zipalign进行优化
- 只需要开启开关即可,剩下的android SDK会搞定
android {
buildTypes {
release {
zipAlignEnabled true
}
}
}
- zipAlignEnabled是BuildType的一个属性,接受一个boolean类型的值
四、使用共享库
- Android一些包,比如android.content,android.view等是默认包含在SDK之中的,app使用的时候,系统会自动链接它们,还有一些库com.google.android.maps\android.test.runner等,这些库都是独立的,并不会被系统自动链接,所以在我们使用的它们的话,就需要单独进行生成使用,这类的库就可以称之为共享库
- 在AndroidManifest文件中,我们可以指定要使用的库:
<uses-library
android:name"com.google.android.maps"
android:required="true" />
- 声明了需要的共享库,在安装apk的时候,就会根据定义,检测手机系统是否有我们需要的共享库,因为已经设置了android:required=“true”, 如果手机系统不满足,将不能安装该应用
- 除了标准的SDK,还有两种库
- add-ons库,位于add-ons目录下,这些库大部分是第三方厂商或者公司开发的,一般是为了让开发者使用,但是又不想暴露具体标准实现
- optional库,位于platforms/android-xx/optional目录下面,一般是为了兼容旧版本的API,比如org.apache.http.legacy,这是一个HttpClient的库,就必须使用og.apache.legacy这个库
五、源码
- gitee路径:https://gitee.com/dongqianrui/AndroidStudioProject/tree/master/Test1
- CSDN:https://blog.csdn.net/weixin_44630050