2012-12-20 44 views
20

我目前工作的一個Android項目,並學習如何使用git時。 我阻止,因爲與git的一個問題:我在我的Android的清單文件我的谷歌地圖API密鑰聲明:編輯的AndroidManifest編譯刪除API密鑰

<meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="HEREISMYKEY"/> 

現在,我希望把我的代碼在github上,但我可以不推我的AndroidManifest,因爲它包含我的api密鑰(這應該是保密的)。

我想知道是否有每次推送之前對其進行修改,或者可能修改每個我編譯我的應用程序的時間呢?

謝謝您的幫助!

回答

31

創建您的RES /值(稱之爲api-keys.xml或類似的東西)一個新的* .xml文件。

更改您的清單指向這個字符串:

<meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="@string/GoogleMapsKey"/> 

當你第一次把你的變化給公衆,放在虛擬按鍵。

然後使用您的真實API密鑰編輯文件。

然後將該文件添加到.gitignore文件中,以免它再次被推入。

+3

你也應該創建gitignore文件之前untrack您的API-keys.xml文件。否則,您仍然會推送更改。 [鏈接](https://help.github.com/articles/ignoring-files) – piratemurray

+0

只是一個小僅供參考,出於某種原因,IntelliJIdea不希望API-keys.xml所以使用api_keys.xml代替。 – Rupert

+0

這是一個很好的答案。出於某種原因,我認爲所有字符串資源XML文件需要按照約定命名值。現在我已經瞭解到,我可以在Android上做同樣的事情,就像我爲其他項目做的一樣! –

1

那麼,你可以做的是把你的AndroidManifest.XML文件放在你的.gitignore文件中,這樣它就不會被你的代碼的其餘部分推上去。然後,只需要推送自述文件或其他東西有一個通用的AndroidManifest.xml源代碼,任何人都必須複製並粘貼到AndroidManifest.xml文件中才能構建應用程序。這樣,您可以對應用進行更改,根據需要進行構建,然後不必在每個構建中對其進行概括並將其推入源代碼管理。

0

我已經在過去接近類似問題的方式是,在我的git回購恥骨推使用特定的分支。

假設你有一個本地主分支,你的密鑰在清單中。當你準備推送到github(或其他任何地方)時,你可以創建一個沒有歷史記錄的新「發佈」分支。你可以在這裏看到更多的信息:How to push new branch without historygit branch --orphan release。一旦你這樣做,刪除所有的私人信息,提交所有文件,並推動只有該分支github git push origin release

的問題與此是你不會有一個提交歷史,也許別人能拿出更好的東西。