2011-05-26 137 views
2

我在一個由幾個開發人員組成的團隊中工作。我們正在開發使用Google地圖的Android應用程序。由於我們每個人都有不同的調試密鑰庫,我們每個人都有不同的API密鑰。允許每個開發人員(和構建服務器)在構建應用程序時自動將其自己的密鑰替換爲應用程序的最佳方式是什麼?如何將Google Maps API密鑰注入Android應用程序?

回答

3

我們使用了一個屬性文件,我們在裏面存儲了我們的密鑰(保存在assets/config.properties中)。唯一的問題是你必須以編程方式創建MapView,而不是在你的xml中,因爲api鍵只能在構造函數中動態添加。

+0

這個解決方案是不compartible與使用Subversion。 – Fixpoint 2011-05-26 15:36:41

+1

是的。我們有一個示例屬性文件,其中設置了所有基礎知識。你只需創建你自己的文件,並忽略它的顛覆。在這種情況下,您必須在簽出源代碼時設置一次屬性文件。我們在我們的開發設置中有這個,生成服務器有他自己的屬性文件。如果屬性樣本比自己的副本更新,則構建制動器。因此,每隔幾周管理一個文件是迄今爲止唯一可能的解決方案。如果你有更好的主意,請分享它... – WarrenFaith 2011-05-26 20:55:39

+0

謝謝,現在這是有道理的。最後,我們結束了使用類似的解決方案,但有一個資源文件。一個ant腳本從'local.properties'中獲取了值,並將其注入模板並創建了文件'resources/values/api_keys.xml'。不幸的是,我們無法以無缺陷的方式將這種方法與Eclipse集成,但至少可以輕鬆看到缺少的資源。 – Fixpoint 2011-05-27 07:12:54

1

你可以在你的團隊之間分享你的debug.keystore文件。您可以在您的項目的根文件夾中找到它。如果Eclipse已經存在,那麼Eclipse不會覆蓋它,因此您可以使用與您的隊友相同的調試密鑰庫。所以你們都將擁有相同的Map API密鑰。

+0

項目的根目錄中沒有'debug.keystore'。儘管我的家庭文件夾中有一個,但我不喜歡這種分享的想法,因爲有時我會與不同的團隊一起處理好幾個項目。另外,在構建服務器上,我們有幾個構建(QA構建,發佈構建等),使用不同的鍵。 – Fixpoint 2011-05-26 15:34:42

4

你可以按照下面的過程

strings.xml文件中添加以下行

<string name="mapkey">your api key</string> 

使用地圖中的XML以下

android:apiKey="@string/mapkey" 

所以開發商不得不做出改變僅限於strings.xml文件。

由於 迪帕克

+0

使用Subversion不能分隔此解決方案。 – Fixpoint 2011-05-26 15:36:33