1.动态添加自定义的资源
使用的是resValue方法,有3个参数,type:定义的资源类型,name:定义的资源名称,value:定义的资源的值。
注意定义类型首字母不能大写,要和value文件内容的格式相一致。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
resValue("string","app_token","123")
resValue 'string','build_type','release'
resValue("bool","rel","true")
resValue("integer","num","4")
}
debug{
resValue("string","app_token","456")
resValue 'string','build_type','debug'
resValue("bool","rel","false")
resValue("integer","num","5")
}
}
productFlavors{
baidu{
resValue("string","channel_name","baidu")
}
google{
resValue("string","channel_name","google")
}
}
在java代码中使用,使用方法和定义在values文件夹下的资源用法是一致的。
String appToken = getResources().getString(R.string.app_token);
String buildType = getResources().getString(R.string.build_type);
getResources().getBoolean(R.bool.rel);
getResources().getInteger(R.integer.num);
String channelName=getResources().getString(R.string.channel_name);
android会将我们定义的资源生成在build文件中
打开后发现动态的生成的文件和我们自己定义的values文件下的格式是一样的
2.设置java的编译版本
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
设置adb选项
adbOptions{
//超时时间
timeOutInMs=5*1000
//-l:锁定程序 -r:替换程序 -t:允许测试包 -s:把程序安装到sd卡上 -d:允许进行降级安装 -g:为应用授予所有运行权限
installOptions '-r','-s'
}
设置dex选项
dexOptions{
// 配置dx命令时为其分配的最大的内存
javaMaxHeapSize '4g'
// 有时代码太多,需要开启这个模式才能构建成功
jumboMode true
// 默认true,用来配置是否执行dex libraries工程 ,如果分包可能要设置false
preDexLibraries true
// 用来配置运行dx命令时的线程数量
threadCount 2
}
3.删除无用的资源
设置shrinkResources true
但是必须配合下面混淆使用
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
但是这样的清除无用资源,对于清除图片是有用的,但是对于清除布局文件是没有作用的。
当我们在代码中使用反射等方式引用资源文件的时候,使用shrinkResources就不能区分这些文件是否正被使用。需要我们使用keep方法来配置那些不想被清除的资源。
新增res/raw/keep.xml文件,在里面把需要保留的资源文件列举出来
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@drawable/aaa"/>
如果是多个的话,就用逗号, 隔开,例如:
tools:keep="@drawable/a,@layout/b,@layout/c"
keep.xml还有一个属性,是tools:shrinkMode,用于配置自动清理资源的模式,默认是safe。还有strict模式。