在Unity5.6.1中,无法对特定工程指定混淆文件,只能去修改Unity目录下的Editor\Data\PlaybackEngines\AndroidPlayer\Tools\UnityProGuardTemplate.txt文件。
这是一个全局的混淆文件,也就是你所有使用Unity5.6.1的工程,都会受到这个文件的影响。
在Unity5.6.5中,已经开始支持自定义混淆文件,不过Unity官方并未提到这一点,是博主自己测试出来的。我们在工程的Plugins\Android目录下,新建一个文件proguard-user.txt,注意文件名不能错,否则Unity识别不了。这个文件就是混淆文件。
为了让Unity能识别这个文件,还需要在同级目录下新建一个mainTemplate.gradle文件,或者找到全局的mainTemplate文件——Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates\mainTemplate.gradle。将其中的
buildTypes {
debug {
jniDebuggable true
}
release {
// Set minifyEnabled to true if you want to run ProGuard on your project
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
**SIGNCONFIG**
}
}
修改为:
buildTypes {
debug {
jniDebuggable true
}
release {
// Set minifyEnabled to true if you want to run ProGuard on your project
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-user.txt'
**SIGNCONFIG**
}
}
这段话是什么意思呢?
其中debug、release分别是代表develop模式和release模式的包,我们可以分别控制这两种模式的混淆。一般来说,为了加密代码和优化性能、减小包体积,release打开混淆即可,debug不开。
minifyEnabled就是混淆开关,true代表开,false代表关。
getDefaultProguardFile(‘proguard-android.txt') 是获取默认的 ProGuard 设置。proguard-android.txt描述了系统提供的基础混淆配置信息,文件所在路径为:\sdk\tools\proguard\proguard-android.txt。后面的'proguard-user.txt'是我们指定的混淆文件,通过这个文件,我们可以去对Unity工程中的代码进行混淆。
参考链接:
https://www.jianshu.com/p/1b76e4c10495