You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:20:03