2016-02-25 95 views
3

我有兩種生成類型的項目設置:debugrelease在不生成已簽名APK的情況下調試版本生成類型

在我的應用程序模塊中,我有三個不同的目錄:debugreleasemain

我想要做的就是測試release目錄中的代碼,但唯一的辦法就是生成一個簽名的apk並將其加載到仿真器上。這意味着我無法正確調試它。

當我將app模塊的構建版本更改爲release時,在「編輯配置」彈出窗口中出現以下錯誤。

Error: The apk for your currently selected variant (app-release-unsigned.apk_ is not signed. Please specify a signing configuration for this variant (release).

我希望做的是同一個擴展release構建變量在build.gradle文件app模塊的然後將繼承在release目錄中的代碼調用debugRelease,但我將能夠從運行在IDE中。

我可能會看着這個錯誤的方式,我會很高興聽到任何其他技術。

我可以做我想做的事嗎?如果不是最好的解決方案是什麼?

+0

不字面。你尋求的語法要求'debug'是一個產品的味道,'debug'已經被用於構建類型。 – CommonsWare

+0

那麼我剩下什麼,將我的類從'release'目錄複製到另一個名爲debugRelease或類似的東西? – StuStirling

+0

恕我直言,在'release'中有重要的Java代碼是代碼味道。這就是說,你可以設置第三種構建類型(例如'fakerelease'),在那裏你配置這個構建類型以從release釋放它的Java代碼,資源等,並使用'debug'簽名配置。 Gradle非常靈活,不需要複製實際的代碼。 – CommonsWare

回答

3

經過大量的研究,我決定繼續我的debugRelease的想法,它似乎運作良好。

我在app/src下創建一個新目錄,名爲debugRelease/java。在那裏,我放置了任何代碼,當我生成已簽名的apk或發佈版本時,我想要有所不同。

這樣做使我能夠測試代碼並能夠對其進行調試。當然,這不是經常進行,它只是崩潰報告和日誌記錄差異,但是,我需要修復一個錯誤或某種東西,我可以。

在我的build.gradle文件中,我有以下設置。

buildTypes { 
    release { 

    } 

    debug { 

    } 

    debugRelease { 
     signingConfig signingConfigs.debug 
    } 
} 

sourceSets { 
    debugRelease { 
     res.srcDirs = ['src/debug/res'] // this uses the debug's res directory which contains a "debug" icon 
    } 

    release { 
     java.srcDirs = ['src/debugRelease/java'] // this avoids copying across code from the debugRelease java directory 
    } 
} 

所以現在當我想測試發佈代碼時,我只是將我的構建版本更改爲debugRelease