2014-06-13 78 views
2

現在Android Studio使用Gradle Build System:是否可以爲調試和發佈構建使用不同的源文件或編譯器開關。Gradle構建中的不同構建類型中的不同源文件?

事實上,在我的項目中有一些差異 - 例如,當我的應用程序以調試模式構建時,我想要有不同的端點URL或錯誤報告URL。

據我所知,在普通的Java這是不可能有編譯器開關就像

#if DEBUG 
    // do something when in debug build 
#else 
    // do something when not in debug build 
#endif 

在C#。

Gradle或Android Studio本身是否允許我編譯依賴於構建類型的不同代碼?以及如何做到這一點?

兩個例子:

@ReportsCrashes(formKey = "", formUri = "http://mydebugcrashreportserver/") 
//@ReportsCrashes(formKey = "", formUri = "http://myreleasecrashreportserver/") 
public class MyApplication extends Application { ... } 

依賴於構建類型,ACRA應到不同的服務器報告。

public class Configuration { 
    public static final String APPLICATION_BASE_URL = "https://mydebugendpoint/api/rest"; 
    // public static final String APPLICATION_BASE_URL = "https://myreleaseendpoint/api/rest"; 

    public static final String GA_TRACKING_ID = "UA-XXXXXXXX-Y"; // debug Analytics 
    // public static final String GA_TRACKING_ID = "UA-ZZZZZZZZ-Y"; // release Analytics 
} 

取決於構建類型,我的API端點和我的分析帳戶有所不同。

這很煩人,當我不得不提醒每次構建之前手動執行這些更改時都會有潛在的錯誤。

那麼如何在Android Studio和/或Gradle中自動執行此操作?

回答

2

好吧,我找到了解決方案。它在Android Docs中描述。

我必須創建名爲debug和release的其他文件夾,以及我想要的任何buildvariant,並將sourcefile依賴於那個變體。

+0

如果鏈接中斷,僅鏈接答案可能會失效。最好解釋這個鏈接是如何爲你工作的。你的研究和閱讀所有這些將有助於其他人。 – Sufian

相關問題