kuan {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: “kuan”]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: “xiaomi”]
}
qh360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: “qh360”]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: “baidu”]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: “wandoujia”]
}
}
}
或者批量修改
android {
productFlavors {
kuan {}
xiaomi {}
qh360 {}
baidu {}
wandoujia {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
(3)执行打包操作
在AndroidStudio菜单栏点击Build菜单–>Generate signed APK–>选择key,并输入密码。最后选择打包渠道完成产生多渠道的APK包。
什么是代码混淆
对发出去的程序进行重新组织和处理,使得处理后的代码与处理前的代码完成相同的功能,这样的代码很难被反编译。简化代码的过程中将变量名、函数、类等名称变为简单的字母代号,一些不影响正常运行的信息也将永久丢失,这样编译后的jar文件体积大约能减少25%,达到精简程序的作用。
如何做到代码混淆
java源代码编译成中间字节码存储于class文件中,我们用java混淆器对java字节码进行混淆。
步骤为:
(1)在Android项目的根目录下创建一个proguard.cfg文件用来配置混淆选项
(2)在Android.mk中每个package类型的LOCAL_MODULE中的LOCAL_PACKAGE_NAME下面添加两行代码:在这里插入代码片
#指定当前的应用打开混淆
LOCAL_PROGUARD_ENABLED:=full
#指定混淆配置文件
LOCAL_PROGUARD_FLAG_FILES:=proguard.cfg
(3)编译时设置环境变量使用 . ./setenv.sh -bv user
(4)如何在项目中使用了第三方的SDK,则在混淆代码时需要按照第三方的SDK的要求来做。
实际工作中也可以使用第三方的混淆工具来混淆例如爱加密或者360加固助手。
简述不同SDK版本的两种代码混淆方式
低版本的SDK下,项目中同时包含proguard.cfg和project.properties文件,只需要在后者文件末尾添加proguard.config=proguard.cfg再将项目Exprot即可
高版本的SDK下同时包含上述两个文件,这时需要在proguard_project.txt文件中添加如下信息配置再将项目Exprot。
例如在project.properties中内容如下:
Project target
target=android-18
如果想保留某个包下的文件不被混淆,可以在proguard-project.txt文件中加入保留对应包名的语句:
Add any project specific keep options here:
-dontwarn com.cnki.android.cnkireader.**
-keep class com.cnki.android.cnkireader.** { *; }
如何加固APK
一般使用360和爱加密加固APK
- 360加固APK
(1)在360加固界面上传apk进行加固,加固前要对apk进行签名
(2)选择加固服务,有基础服务和增强服务。
(3)下载应用签名,下载应用后,需要对该apk进行再次签名保证前后的签名一致,否则加固后的应用无法再手机上运行,用多渠道打包的应用需要加固成功后在进行多渠道打包。
爱加密加固APK
(1)直接上传APK包,不用提供源代码
(2)爱加密提供多个加密方式(云加密,PC加密,本地加密,so文件本地加密,全自动加密服务,安全审核加密)
(2)加固完成后也要签名保证加固前后一致。
APK瘦身
APK越大消耗的流量就会越多,所以要瘦身
APK的辅助分析工具是NimbleDroid,是分析Android APP性能指标的系统。
APK瘦身的方式有:
(1)开启混淆,删除无用的Java文件,开启minifyEnable(开启混淆,删除无用的java文件),可减小APK中APK文件的大小。
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
}
}
(2)去除无用资源,同时去除工程中临时展示的图片。开启shrinkResources,同时去除工程中临时展示的图片可减小APK文件的大小,具体代码如下:
android {
buildTypes {
true
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
}
}
(2)去除无用资源,同时去除工程中临时展示的图片。开启shrinkResources,同时去除工程中临时展示的图片可减小APK文件的大小,具体代码如下:
android {
buildTypes {
|