使用属性打开/关闭 Proguard
Posted
技术标签:
【中文标题】使用属性打开/关闭 Proguard【英文标题】:Turning Proguard On/Off Using Properties 【发布时间】:2012-05-25 09:39:21 【问题描述】:在我的 project.properties 文件中有一个属性 proguard.config,当我运行 ant 时它会运行 proguard。以下所有情况都会导致 proguard 运行
proguard.config
proguard.config=
proguard.config=proguard.cfg
属性文件中是否有方法可以打开/关闭 proguard?
否则我将需要编写一个脚本来添加/删除或重命名 proguard.config 属性来控制它。我宁愿只获取/设置属性。我想要最好的解决方案。现在我正在编码 replaceregexpr 以将 proguard.config 重命名为要关闭的其他名称。正在寻找更好的解决方案并想知道其他人是如何控制的?
【问题讨论】:
【参考方案1】:更简单的方法是只需一行
#proguard.config=proguard.cfg
或者甚至最好还是完全忽略它!这样 proguard 根本不会运行。
【讨论】:
【参考方案2】:这是怎么做的:
不要在 project.properties 文件中设置 proguard.config=proguard.cfg。
在您的 build.properties 文件集中
proguarded=on # or whatever variable you chose
如果您正在构建 android,请定义这些宏,以便始终关闭调试:
<macrodef name="set-app-debuggable">
<sequential>
<echo>Updating AndroidManifest.xml with debuggable set to true</echo>
<replaceregexp file="./AndroidManifest.xml"
match='android:debuggable="(.*)"'
replace='android:debuggable="true"'
byline="false">
</replaceregexp>
</sequential>
</macrodef>
<macrodef name="set-app-not-debuggable">
<sequential>
<echo>Updating AndroidManifest.xml with debuggable set to false</echo>
<replaceregexp file="./AndroidManifest.xml"
match='android:debuggable="(.*)"'
replace='android:debuggable="false"'
byline="false">
</replaceregexp>
</sequential>
</macrodef>
然后根据您是否要在 proguard 构建之外保留调试设置这些条件或类似条件:
<target name="-set-mode-check">
<echo> set mode checking properties ... </echo>
<echo> Proguard Property value is '$proguard.config' </echo>
<echo> Proguard Property value is '$proguarded' </echo>
<condition property="proguard.config" value="proguard.cfg">
<isset property="proguarded"/>
</condition>
<echo> Proguard Property value after condition set is '$proguard.config' </echo>
<if condition="$proguarded">
<then>
<echo>**** This build is proguarded so setting debuggable off ****</echo>
<set-app-not-debuggable />
</then>
<else>
<echo>**** This build is not proguarded so setting debuggable on ****</echo>
<set-app-debuggable />
</else>
</if>
</target>
根本不需要在 project.properties 文件中设置 proguard.config。
【讨论】:
【参考方案3】:设置此属性
minifyEnabled false
在您的应用中build.gradle
像这样在调试和发布中也禁用:
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debug
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
【讨论】:
以上是关于使用属性打开/关闭 Proguard的主要内容,如果未能解决你的问题,请参考以下文章
asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串
设计计算机类要求如下:属性:品牌颜色cpu型号,内存容量,硬盘大小,价格,工作状态;方法:打开,关闭,休眠;创建一个计算机对象,调用打开关闭方法