在我的project.properties文件中有一个属性proguard.config,当我运行ant时,它将运行proguard。 以下所有操作都将导致 proguard 运行
proguard.config
proguard.config=
proguard.config=proguard.cfg
属性文件中有没有办法打开/关闭 proguard?
否则,我将需要编写一个脚本来添加/删除或重命名proguard.config属性来控制这一点。 我宁愿只获取/设置属性。 我想要最好的解决方案。 现在我正在编写 replaceregexpr 以将 proguard.config 重命名为其他要关闭的内容。寻找更好的解决方案,并想知道其他人如何控制这一点?
方法是只拥有该行
#proguard.config=proguard.cfg
或者更好的是完全不理会它!这样,proguard就根本不会运行。
这是如何完成的:
不要在 project.properties 文件中设置 proguard.config=proguard.cfg。
在生成属性文件集中
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。
设置此属性
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'
}
}