如何向ProGuard配置文件传入程序版本参数?
如何给ProGuard配置文件传入外部版本参数?
要实现从外部传入版本号到ProGuard配置,分两步操作:
1. 修改ProGuard配置文件,替换硬编码版本为变量
把配置里所有硬编码的1.0.0-RELEASE替换成${VERSION},配置文件会自动读取外部传入的VERSION变量值。修改后的配置如下:
-injars 'C:\Users\jmurray\Desktop\OBF\MyProgram\MyProgram-${VERSION}\MyProgram-${VERSION}.jar' -outjars 'C:\Users\jmurray\Desktop\OBF\MyProgram\MyProgram-${VERSION}\MyProgram-${VERSION}-OBF.jar' -libraryjars 'C:\Program Files\Java\jdk-11\jmods\java.base.jmod' -libraryjars 'C:\Program Files\Java\jdk-11\jmods\java.desktop.jmod' -libraryjars 'C:\Program Files\Java\jdk-11\jmods\java.datatransfer.jmod' -libraryjars 'C:\Users\jmurray\Desktop\OBF\MyProgram\MyProgram-${VERSION}\lib' -dontusemixedcaseclassnames -dontnote -dontwarn ##---------------Begin: proguard configuration for Gson ---------- # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature # For using GSON @Expose annotation -keepattributes *Annotation* # Gson specific classes -keep class sun.misc.Unsafe { *; } #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.google.gson.examples.android.model.** { *; } ##---------------End: proguard configuration for Gson ---------- -keep public class com.jmurray.MyProgram.main.* { public <fields>; public <methods>; }
2. 运行ProGuard时传入版本参数
在启动ProGuard的命令里,通过-DVERSION=你的版本号参数传入变量值,示例命令如下:
proguard @proguard-config.pro -DVERSION=1.0.0-RELEASE
补充:用构建工具传递参数(以Gradle为例)
如果用Gradle管理项目,可在ProGuard任务中通过systemProperty传递变量:
task proguard(type: ProGuardTask) { configuration file('proguard-config.pro') systemProperty 'VERSION', '1.0.0-RELEASE' }
内容的提问来源于stack exchange,提问作者BabaNew
相关产品推荐
相关产品推荐

