2

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

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

属性文件中有没有办法打开/关闭proguard?

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

4

3 回答 3

7

一个更简单的方法是只有这条线

#proguard.config=proguard.cfg

甚至更好的是完全不使用它!这样 proguard 根本不会运行。

于 2012-05-18T19:16:19.510 回答
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。

于 2012-05-18T00:33:55.823 回答
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'
        }

    }
于 2016-08-20T06:47:18.643 回答