2013-07-22 49 views
6

當建立我的Android項目,我已經添加了以下到的build.gradle文件以啓用的ProGuard:Android的搖籃構建導致APK同時包含模糊和非混淆類

buildTypes { 
    release { 
     runProguard true 
     proguardFile 'proguard-project.txt' 
     proguardFile '../common/proguard-shared.txt' 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
    } 
    } 

一切都建立好了,但是當我反彙編得到的dex文件,結果表明混淆和非混淆的文件都在那裏。

例如,common.Base64和common.a都存在,第一個是非混淆的,第二個是。

不確定其相關,但該項目本身有一個非典型的結構。 這是我們擁有超過40個android應用程序的大型android代碼庫的結果。 我們正在嘗試基於現有基於Eclipse的構建並行創建基於Gradle的構建流程。

如果一切順利,我們打算將文件結構更改爲更加原生的gradle,並開始使用flavor和build-types來消除我們創建的許多庫,以適應缺乏口味等。 。上述

項目Ë依賴於這樣的庫的鏈:

ë - > d - 「ç - >乙 - >甲

例如E項目取決於圖書館D,它依賴於庫C ...一直到A.

回答

7

經過研究,我發現這是一個問題,如果您第一次構建時沒有啓用proguard,然後構建它啓用它。這是由於dex的增量模式。

啓用proguard後,您可以做一個乾淨的構建,它會解決這個問題。

編輯:我以前表示,你可以禁用增量模式在dex,但事實證明,實際上並沒有幫助!

+0

作品,謝謝@Xav!任何建議的方式在創建候選版本之前「強制」清理? – Guy

+2

'gradle clean assembleRelease'''是否適合你? –

+0

@ThuyTrinh它呢。只要確保對所有依賴關係都進行「乾淨」操作(即,如果您有多模塊項目,請先清除根目錄,然後組裝釋放您需要的子模塊)。 – Guy