使用属性打开/关闭Proguard

时间:2012-05-17 19:09:59

标签: java android ant proguard

在我的project.properties文件中有一个属性proguard.config,当我运行ant时,它将运行proguard。以下所有内容都会导致proguard运行

 proguard.config
 proguard.config=
 proguard.config=proguard.cfg

在属性文件中是否有办法打开/关闭proguard?

否则我将需要编写一个脚本来添加/删除或重命名proguard.config属性来控制它。我宁愿得到/设置属性。我想要最好的解决方案。现在我正在编写replaceregexpr来将proguard.config重命名为其他关闭的东西。寻找更好的解决方案,并想知道别人如何控制这个?

3 个答案:

答案 0 :(得分:7)

更简单的方法就是拥有行

#proguard.config=proguard.cfg

甚至更好还是完全放弃了!就这样,proguard根本不会运行。

答案 1 :(得分:1)

以下是如何完成的:

请勿在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。

答案 2 :(得分:0)

设置此属性

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'
        }

    }