2013-03-06 131 views
2

某些Android庫(如Google Analytics)使用資源進行配置(例如ga_trackingId)。調試和生產資源

在這些情況下,我有不同的調試和生產值。我目前所做的是在調試時手動評論生產值,反之亦然。它看起來像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- DEBUG --> 
    <string name="ga_trackingId">UA-12345678-1</string> 
    <integer name="ga_dispatchPeriod">1</integer> 
    <bool name="ga_debug">true</bool> 

    <!-- PRODUCTION -->  
    <!--string name="ga_trackingId">UA-87654321-1</string> 
    <integer name="ga_dispatchPeriod">120</integer> 
    <bool name="ga_debug">false</bool--> 
</resources> 

的開關配置這種方式是繁瑣且容易出錯的,如果我不小心產生不必要的資源庫的變化。有沒有更好的辦法?

(例如:在iOS中使用了帶有IF DEBUG宏觀條件編譯)

+0

像res/values-debug這樣的東西會很棒。 – hpique 2013-03-06 08:45:39

回答

2

我曾與他們依賴於簽名谷歌地圖按鍵類似的問題。我所做的就是使用ant腳本,該腳本有條件地生成/複製項目資源。您可以在Eclipse下的Project項目>屬性>構建器中包含ant腳本

如果您需要在代碼中使用DEBUG值,則可以創建一個靜態值的java文件,這些靜態值也將包含在內。

如果ant環境變量正常工作,請發表評論(您可以在腳本執行後在控制檯中看到「Build type:」消息)。

<project name="build-res"> 
<property name="conditional.resources.dir" value="myresources" /> 
<property name="keys_file" value="res/values/keys.xml" /> 

<target name="copy-release" if="${build.mode.release}" > 
    <property name="build.type" value="Release" /> 
    <echo message="Build type: ${build.type}" /> 
    <property name="google.maps.key" value="nanana-value-for-release" /> 
    <copy file="${conditional.resources.dir}/Release.java" tofile="gen/com/example/project/BuildInfo.java" /> 
</target> 

<target name="copy-debug" if="${build.mode.debug}"> 
    <property name="build.type" value="Debug" /> 
    <echo message="Build type: ${build.type}" /> 
    <property name="google.maps.key" value="lalala-value-for-debug" /> 
    <copy file="${conditional.resources.dir}/Debug.java" tofile="gen/com/example/project/BuildInfo.java" /> 
</target> 

<target name="build-res" depends="copy-debug,copy-release"> 
    <echo file="${keys_file}" message="&lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;resources&gt;&lt;string name='google_maps_key'&gt;${google.maps.key}&lt;/string&gt;&lt;/resources&gt;" /> 
</target> 
</project> 
0

src文件夾,你可能有您儲存的所有共享的東西一個main文件夾。但是您可以擁有特定的風味或構建類型資源。

將一個名爲debug的文件夾放在src文件夾下,您將在其中放置xml文件的副本,但帶有適當的內容。你必須debug下保持文件夾結構,所以global_tracker.xml需要被放置在../src/debug/res/xml

你的文件夾結構應該是這樣的:

enter image description here

的Android Studio會感覺到,這個XML文件有多個版本。

這是你應該在AS看到:

enter image description here

您可以使用此對所有類型的資源,即具有相同文件的多個版本,這將是「神奇」選擇不當。