簡體   English   中英

如何在 Android Studio 中啟用 ProGuard 混淆?

[英]How to enable ProGuard obfuscation in Android Studio?

我必須通過在 Android Studio 中啟用 Proguard 混淆來保護我的應用程序。 我已經搜索了如何應用它的過程,但我沒有得到任何明確的解決方案。 當我嘗試時,我總是得到一個錯誤。 那么誰能告訴我在我的應用程序中應用它的明確步驟嗎?

我正在通過以下步驟執行此操作:

  1. 在 Android Studio 中,打開一個 Android 項目。

  2. 更改為項目視圖。

  3. 更改以下行:

    minifyEnable falseminifyEnable true

  4. 設置 ProGuard 規則(可選)

    4.1 在項目視圖中,選擇 proguard-rules.pro 文件。

    4.2 添加以下幾行以告訴 ProGuard 不要混淆某些類。

     -keepclassmembers class com.dom925.xxxx { public * }

我按照步驟得到的錯誤是

錯誤:任務 ':app:packageRelease' 的執行失敗。 無法計算 D:\\Android\\Pojectname\\app\\build\\intermediates\\classes-proguard\\release\\classes.jar 的哈希值

在 Android Studio 中啟用 ProGuard。

下面是如何在 Android Studio 中啟用默認 ProGuard 的示例。

  1. 進入app的build.gradle文件
  2. 啟用minifyEnabled true
  3. 啟用shrinkResources true以減少APK 大小
  4. proguardFiles getDefaultProguardFile('proguard-android.txt')啟用默認的。 如果您想使用自己的 proguard 文件,請使用以下規則。

     buildTypes { release { debuggable false minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { debuggable true minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }

這些鏈接中提供了包含適用於 Android 的 ProGuard 設置和其他設置的鏈接:

有關更多詳細信息,請訪問此鏈接

我解決了這個問題:

打開項目的 proguard-rules.pro 並將其添加到底部:

-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

基本上我是如何解決這個問題的,我試圖在“發布”模式下運行我的應用程序,但遇到了一堆類似於這里的人的錯誤: https : //github.com/square/okio/issues/144

我幾乎按照他說的去做並修復了它。

希望這可以幫助其他人生成他們的 APK!

在此處訪問更多詳細信息:

錯誤:任務 ':app:packageRelease' 的執行失敗。 > 無法計算 /../AndroidStudioProjects/../classes.jar 的哈希值

如果您使用 jack 構建 android 項目,那么它會自動進行收縮、混淆、重新打包和 multidex。 只需在下面添加:

defaultConfig {
       jackOptions {
            enabled true
        }        
    }

在構建類型中,提及項目proguard文件:

buildTypes {
        release {
            // Jack build environment does not require minifyEnabled or shrinkResources.
            // Conceptually, the jack compiler consolidates the functionality of javac, ProGuard, and dex in a single conversion step
            //minifyEnabled = true      
            //shrinkResources true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
       }

       debug {
...................
        }
    } 

要禁用 ProGuard 混淆,需要在 proguard-project.txt 文件中添加以下行

####No obfuscation
-dontobfuscate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM