使用属性打开/关闭 Proguard



在我的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'
        }
    }

相关内容

  • 没有找到相关文章

最新更新