2

因此,簡單地說,當我從Android Studio構建替代buildType時,ProGuard不會混淆源,但在使用「生成簽名的APK ...」選項創建時適用apk文件。當從Android Studio構建替代buildType時,ProGuard不會混淆

而且一些更多的細節在這裏:安卓2.1.1工作室,搖籃版本:2.10,插件版本.2.1.0

我有3種構建類型具有以下配置:

buildTypes { 
    release { 
     minifyEnabled true 
     ... 
     proguardFile 'proguard-rules.pro' 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
     signingConfig signingConfigs.release 
    } 
    releaseDebug { 
     debuggable true 
     minifyEnabled true 
     ... 
     proguardFile 'proguard-rules.pro' 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
     signingConfig signingConfigs.release 
    } 
    debug { 
     debuggable true 
     minifyEnabled false 
     ... 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
     testProguardFile 'proguard-rules-test.pro' 
     signingConfig signingConfigs.release 
    } 
} 

我直接從Android Studio中運行的應用程序,有這樣的結果:

  • 發佈 - 混淆
  • releaseDebug - NOT混淆
  • 調試 - 不混亂

當我使用 「生成簽名APK ...」 選項:

  • 發佈 - 混淆
  • releaseDebug - 混淆
  • 調試 - 沒有被模糊化

它是一個構建系統問題還是我錯過了什麼?

P.S.只是澄清,minifyEnabled已經啓用releaseDebug構建類型和ProGuard正在工作,但不在這種特殊情況下。這與調試模式無關。

+0

[可以在調試模式下使用proguard嗎?](http://stackoverflow.com/questions/16559723/is-it-possible-to-use-proguard-in-debug-mode) –

+0

我很抱歉,但不是。 ProGuard正在工作,但不是在特定情況下。這與調試模式無關。 – comrade

回答

1

最後,一些測試後,我認識到,這個問題是由debuggable true聲明releaseDebug配置造成的。

因此,如果在替代構建類型中使用debuggable trueminifyEnabled true語句,Android Studio(或Gradle)將不會使用ProGuard混淆處理。