2012-12-20 18 views
20

को हटाने के लिए संकलित करते समय एक AndroidManifest संपादित करें मैं वर्तमान में एक एंड्रॉइड प्रोजेक्ट पर काम कर रहा हूं, और सीख रहा हूं कि गिट का उपयोग कैसे करें। मैं Git के साथ किसी समस्या के कारण अवरुद्ध कर रहा हूँ: मैं अपने गूगल मैप्स एपीआई कुंजी मेरी android-मैनिफ़ेस्ट फ़ाइल में घोषित किया है:API-key

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

अब, मैं GitHub में मेरी कोड पुश करने के लिए चाहते हैं, लेकिन मैं कर सकते हैं मेरे AndroidManifest को धक्का न दें, क्योंकि इसमें मेरी एपीआई कुंजी है (जिसे गुप्त रहना चाहिए)।

मैं जानना चाहता हूं कि प्रत्येक धक्का से पहले इसे संशोधित करने का कोई तरीका है या हर बार जब मैं अपना आवेदन संकलित करता हूं तो इसे संशोधित कर सकता हूं?

आपकी मदद के लिए धन्यवाद!

उत्तर

31

अपने res/values ​​में एक नई * .xml फ़ाइल बनाएं (इसे api-keys.xml या कुछ इसी तरह से कॉल करें)।

इस स्ट्रिंग भेजने के लिए अपना प्रकट बदलें

:

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

आप पहली बार सार्वजनिक, एक डमी कुंजी में डालने के लिए अपने परिवर्तनों को धक्का है।

फिर अपनी असली एपीआई कुंजी के साथ फ़ाइल को संपादित करें।

फिर फ़ाइल को अपनी .gitignore फ़ाइल में जोड़ें, इसलिए इसे फिर से धक्का नहीं दिया जाता है।

+3

आपको gitignore फ़ाइल बनाने से पहले अपनी api-keys.xml फ़ाइल को अनचाहे भी करना चाहिए। अन्यथा आप अभी भी परिवर्तन को दबाएंगे। [लिंक] (https://help.github.com/articles/ignoring-files) – piratemurray

+0

किसी कारण से, बस एक छोटा सा FYI, IntelliJIdea api-keys.xml नहीं चाहता है, इसलिए इसके बजाय api_keys.xml का उपयोग करें। – Rupert

+0

यह एक अच्छा जवाब है। किसी कारण से मैंने सोचा कि सभी स्ट्रिंग संसाधन xml फ़ाइलों को सम्मेलन द्वारा मूल्यों का नाम दिया जाना चाहिए। अब मैंने सीखा है कि मैं एंड्रॉइड पर वही काम कर सकता हूं जैसा कि मैं अपनी अन्य परियोजनाओं के लिए करता हूं! –

1

ठीक है, आप अपनी एंड्रॉइडमैनीफेस्ट.एक्सएमएल फ़ाइल को अपनी .gitignore फ़ाइल में डाल सकते हैं और इस तरह यह आपके शेष कोड के साथ धक्का नहीं देगा .. फिर बस एक रीडेमे फ़ाइल या कुछ दबाएं एक सामान्यीकृत AndroidManifest.xml स्रोत है कि किसी को भी अपना एप्लिकेशन बनाने के लिए AndroidManifest.xml फ़ाइल में कॉपी और पेस्ट करना होगा। इस तरह आप अपने ऐप में बदलाव कर सकते हैं, इसे आवश्यकतानुसार बना सकते हैं और फिर प्रत्येक निर्माण पर इसे सामान्यीकृत करने और स्रोत नियंत्रण में धक्का देने के साथ निपटने की ज़रूरत नहीं है।

0

जिस तरह से मैंने अतीत में इसी तरह के मुद्दों से संपर्क किया है, वह जघन्य धक्का के लिए मेरे गिट रेपो में विशिष्ट शाखाओं का उपयोग कर रहा है।

कहें कि आपके पास मैनिफेस्ट में अपनी कुंजी के साथ एक स्थानीय मास्टर शाखा है। जब आप जिथब (या कहीं और) को धक्का देने के लिए तैयार होते हैं तो आप बिना किसी इतिहास के एक नई "रिलीज" शाखा बना सकते हैं। आप यहां इसके बारे में कुछ और देख सकते हैं: How to push new branch without historygit branch --orphan release। एक बार जब आप ऐसा करते हैं तो सभी निजी सूचनाओं को हटा दें, सभी फाइलें करें और केवल उस शाखा को जिथब git push origin release पर दबाएं।

इसके साथ समस्या यह है कि आपके पास कोई प्रतिबद्धता इतिहास नहीं होगा, शायद कोई और कुछ बेहतर तरीके से आ सकता है।

संबंधित मुद्दे