2011-03-11 5 views
22

आम तौर पर हम आदेशचींटी के साथ एंड्रॉइड एपीके बनाने के दौरान फ़ाइल नाम में वर्जन स्ट्रिंग को कैसे शामिल किया जाए?

ant debug 

साथ डिबग मोड में एंड्रॉयड पैकेज का निर्माण और apk फ़ाइल नाम AppName-debug.apk मिला है।

क्या AppName-debug-<version-number>.apk के प्रारूप में एपीके फ़ाइल उत्पन्न करने का कोई तरीका है सीधे 'एमवी' कमांड के बिना?

धन्यवाद।

उत्तर

38

मैंने एंड्रॉइड मैनिफेस्ट से जानकारी का उपयोग करके इसे स्वचालित तरीके से किया है।

मेरे दृष्टिकोण मास्टर फ़ाइल आपके स्थानीय फ़ाइल <SDK>/tools/ant/build.xml पर स्थित है में आयात किया जाता SDK के नवीनतम संस्करण में मास्टर build.xml फ़ाइल की एक कस्टम प्रतिलिपि आयात करने के लिए, स्थानीय परियोजना चींटी build.xml फ़ाइल को संशोधित करने के लिए किया गया था (android_rules था पिछले संस्करणों में .xml) import लाइन को अपने प्रोजेक्ट में डिफ़ॉल्ट build.xml फ़ाइल में नोट करें।

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

कस्टम नियम फ़ाइल जोड़ें:

<xmlproperty file="AndroidManifest.xml" prefix="mymanifest" collapseAttributes="true"/> 

यह एक कस्टम उपसर्ग के साथ, चींटी गुण का एक सेट के रूप में प्रकट में पढ़ता है कोई नाम नहीं टक्कर सुनिश्चित करने के लिए।

फिर आप $ {mymanifest.manifest.android:versionName} धब्बे कि apk नाम परिभाषित किया गया है में से किसी के लिए, बस कस्टम नियम फ़ाइल में .apk के लिए खोज जोड़ सकते हैं।

मैंने बिल्ड प्रक्रिया से संस्करण फ़ाइलों को स्वचालित करने के लिए इस प्रक्रिया का उपयोग किया है।

कुछ अतिरिक्त बदलावों के साथ आपके रिलीज ऐप को स्वचालित रूप से हस्ताक्षर करना भी संभव है, गुणों में पासवर्ड सेट करना और हस्ताक्षर कार्य में उन लोगों का उपयोग करना। वास्तविक पासवर्ड जहां एक अलग गुण फ़ाइल में संग्रहीत किया गया है जो केवल बिल्ड सर्वर पर रहता है। एक मामूली सुरक्षा जोखिम होने पर, कुछ मामलों में यह अंत निर्माण स्वचालन के पूर्ण अंत की आवश्यकता से वजन कम हो जाता है।

+0

धन्यवाद। आपका सुझाव अच्छी तरह से काम करता है। मेरी build.xml में टिप्पणी निम्नलिखित लाइनों के साथ एक सा गाड़ी है: नियम फ़ाइल /platforms//templates/android_rules.xml इसके बजाय 'android_rules.xml' सहित से आयात किया जाता, आपको ' /tools/ant/ant_rules_r3.xml' शामिल करना चाहिए। अन्यथा निर्माण विफल हो जाएगा। –

+0

क्या एक्लिप्स एपीके निर्यात के साथ इसे स्वचालित करने का कोई तरीका है? – Sney

+0

ऐसा नहीं है कि मुझे पता है। एएनटी का उद्देश्य वह जगह है जहां आप स्वचालन का निर्माण करते हैं। आप इसे एडीटी टीम के फीचर अनुरोध के रूप में दर्ज कर सकते हैं। – cistearns

-4

हां एपीके फ़ाइल जेनरेट करने का कोई तरीका है जिसे मैं आपके द्वारा प्राप्त की गई प्रक्रिया को कम करने के लिए एक प्रक्रिया देता हूं। आपके नाम का उल्लेख करें।

1-पैकेज एक्सप्लोरर में एप्लिकेशन पर राइट क्लिक करें। 2-चेस निर्यात। 3-एंड्रॉइड 4- निर्यात एंड्रॉइड एप्लिकेशन चुनें। 5-नई कीस्टोर बनाएं। 6- फॉर्म भरें। 7-: एपीके फ़ाइल का नाम दें जो आप चाहते हैं 8-: एपीके स्टोर करने के लिए एपीके को स्थान दें।

फिर आपको अपनी समस्या का समाधान मिल जाता है। मुझे उम्मीद है कि यह मददगार है।

+0

क्षमा करें, लेकिन मेरा मतलब ग्रहण आईडीई के बजाय 'चींटी' कमांड का मुश्किल से उपयोग करना है। मैं वर्तमान में ग्रहण का उपयोग नहीं कर रहा हूँ। –

+1

मुझे यह भी लगता है कि आपने सवाल को गलत समझा है, पूछताछकर्ता फ़ाइल नाम के संस्करण संख्या के स्वचालित जोड़ के लिए खोज कर रहा है। – Peterdk

9

एक और अधिक एंड्रॉइड-जैसे समाधान XPATH कार्य का उपयोग करना है क्योंकि यह $ {sdk.dir}/tools/ant/build में किया जाता है।xml:

<xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName" 
         output="versionName" default="unknown"/> 
<echo message="name: ${versionName}"></echo> 

इस कार्य की परिभाषा की आवश्यकता:

<path id="android.antlibs"> 
    <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" /> 
</path> 

<taskdef name="xpath" 
     classname="com.android.ant.XPathTask" 
     classpathref="android.antlibs" /> 

मैं कम से कम एसडीके संस्करण है पता नहीं है, लेकिन यह SDK14 साथ काम करता है।

सादर, माइकल

+0

+1 ने मुझे एनीके नाम में संस्करण नाम को एकीकृत करने में सहायता की चींटी द्वारा निर्मित – AgentKnopf

+0

यह निश्चित रूप से ऐसा करने का सही तरीका है। –

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

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