Android stuido 关于buildTypes的配置
最近公司接了很多项目,测试包、正式包每天要打很多遍,但是正式包是要关闭日志的,所以上网学了buildTypes。
1>首先,这个信息是在module文件下的build.gradle文件下配置,不管是我们要运行的app,还是依赖的library,都可以单独配置。
android{
buildTypes {
release {
buildConfigField "Boolean", "LOG_DEBUG", "false"
}
debug {
buildConfigField "Boolean", "LOG_DEBUG", "true"
}
}
}
buildConfigField方法需要传递3个参数,(“type”,“name”,“value”)第一个参数是类型,目前测试过int,String和Boolean,大小写要注意,不然会报错,后面2个参数是自己定义的。3个参数都需要用双引号包起来,如果是字符串,第3个参数需要在加上单引号。
buildConfigField "String", "other_name", ' "测试buildTypes" '
在build sync后,可以在对应module的BuildConfig类下找到自己设置的参数。该类在build文件下可以找到。
public final class BuildConfig {
public static final Boolean IS_DEBUG = false;
public static final String other_name = "测试buildTypes" ;
}
然后在代码中就可以引用该类的参数了。因为我的打印方法类在library中,所以每个项 目打包的时候也不需要专门配置了,非常的方便。
- 混淆
既然说到了buildTypes,把混淆的方法也记录下来。
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
混淆是通过设置minifyEnabled来判断是否需要混淆的,只有true和false2个变量,属于布尔类型。proguardFiles 是混淆文件。
一般第三方平台如个推、友盟这些都是要加的,官方文档都有记录,这里只记录阿里的fastjson。
#fastjson
-dontwarn Android.support.**
-dontwarn com.alibaba.fastjson.**
-dontskipnonpubliclibraryclassmembers
-dontskipnonpubliclibraryclasses
-keep class com.baidu.** { *; }
-keep class com.alibaba.fastjson.** { *; }
-keepclassmembers class * {
public <methods>;
}
-keepattributes Signature