2012-02-22 10 views
5

मैं इस पूरे "चींटी" बिल्डसिस्टम चीज़ पर एक संभाल पाने की कोशिश कर रहा हूं। मैंने build.xml बनाया है जो एंड्रॉइड मूल रूप से कमांड का उपयोग करके मुझे देता है: android update project -p .चींटी का उपयोग कर एंड्रॉइड प्रोजेक्ट को संकलित और जार कैसे करें?

हालांकि इसने मुझे टेम्पलेट build.xml फ़ाइल दी है, मुझे कुछ और विकल्प चाहिए। विशेष रूप से, मैं JAR और/या संकलन मेरी परियोजना में सक्षम होना चाहता हूं; अधिमानतः एक संस्करण संख्या के साथ।

बोनस प्रश्न: मैं अपने जेएआर बिल्ड से फ़ाइलों को कैसे बाहर निकाल सकता हूं। उदाहरण के लिए, मेरे पास एक गतिविधि है जिसका मैंने अपनी कार्यक्षमता का परीक्षण करने के लिए उपयोग किया है, लेकिन मैं नहीं चाहता कि इसे अंतिम जार में शामिल किया जाए।

एंड्रॉइड ने मुझे बनाया है कि मेरी build.xml फ़ाइल Gisted here है क्योंकि यह काफी लंबी है (ज्यादातर टिप्पणियां)।

संपादित करें: मैं इंटेलिजे का भी उपयोग कर रहा हूं इसलिए कोई ग्रहण विनिर्देश नहीं है, कृपया!

+2

एंड्रॉइड एप्लिकेशन जेएआर फाइल नहीं हैं, इस पर विचार करते हुए, "JAR और Compile My Project" का क्या मतलब है? – CommonsWare

+0

@ कॉमन्सवेयर, मैं वास्तव में दो "लक्ष्य" का मतलब है। 1।मेरे कोड को संकलित करें ताकि कक्षाएं और डीएक्स फाइलें और जो भी उनकी सही निर्देशिका में हों। 2. उन क्लास फाइलों को JAR जो मैं चाहता हूं ताकि मैं अपने एंड्रॉइड "लाइब्रेरी" को उचित रूप से वितरित कर सकूं। – hwrdprkns

+0

इसके अलावा, मुझे स्पष्ट करना चाहिए। मुझे नहीं पता कि मेरी परियोजना "पुस्तकालय" परियोजना के रूप में योग्य है या नहीं। लेकिन मेरे पास सिर्फ कोड है जो एंड्रॉइड एसडीके का उपयोग करता है जिसे मैं जारड करना चाहता हूं ताकि मैं इसे किसी अन्य एप्लिकेशन में उपयोग कर सकूं। गतिविधियां नहीं, बस अन्य कोड। – hwrdprkns

उत्तर

14

विशेष रूप से, मैं अपनी परियोजना को जेएआर और/या संकलित करने में सक्षम होना चाहता हूं; अधिमानतः एक संस्करण संख्या के साथ।

एंड्रॉइड में, संस्करण संख्याएं ऐप्स के लिए हैं, जार नहीं।

<target name="jar" depends="debug"> 
    <jar 
     destfile="bin/whatever-you-want-to-call-the.jar" 
     basedir="bin/classes" 
    /> 
</target> 

फिर, चलाने ant jar संकलन और जार फ़ाइल पैकेज:

कहा जा रहा है, एक jar लक्ष्य जोड़ने नीचे की ओर अपने build.xml फ़ाइल को यह जोड़ने की बात है।

आप my GitHub area में अधिकांश पुन: प्रयोज्य एंड्रॉइड घटकों में इस पैटर्न को देखेंगे (cwac- रिपोज़ देखें)।

बोनस प्रश्न: मैं अपने जेएआर बिल्ड से फ़ाइलों को कैसे बाहर निकाल सकता हूं। उदाहरण के लिए, मेरे पास एक गतिविधि है जिसका मैंने अपनी कार्यक्षमता का परीक्षण करने के लिए उपयोग किया है, लेकिन मैं नहीं चाहता कि इसे अंतिम जार में शामिल किया जाए।

उपयोग excludes या excludesfile, jar Ant task documentation में वर्णित है।

+0

बिल्कुल सही। एक तरफ के रूप में, 'बहिष्कृत = "**/बहिष्कृत File.class" उस फ़ाइल को बहिष्कृत करता है जिसे आप पसंद नहीं करते हैं। और 'निर्भर करता है =" डीबग "' वह जादू है जिसके लिए पूर्व-संकलन की आवश्यकता होती है। – hwrdprkns

+0

@hwrdprkns क्या आप "जादू के लिए पूर्व-संकलन की आवश्यकता वाले" द्वारा थोड़ा सा समझा सकते हैं? क्या आप कह रहे हैं कि "निर्भर करता है = 'डीबग' निर्दिष्ट करता है" जार बनाने से पहले संकलन करने के लिए चींटी को मजबूर करता है? संपादित करें: वास्तव में और पढ़ने के बाद, क्या इसका मतलब यह है कि जब आप "चींटी जार" कहते हैं तो यह महसूस होता है कि इसे पहले "चींटी डीबग" करने की आवश्यकता है? और मुझे लगता है कि हम रिलीज के बजाय डीबग का उपयोग करते हैं क्योंकि हमें जार के लिए साइनिंग करने की परवाह नहीं है? –

1

एंड्रॉइड और गैर-एंड्रॉइड परियोजनाओं के पुन: उपयोग के लिए मैं सुझाव दूंगा कि आप एंड्रॉइड मेवेन प्लगइन पर एक नज़र डालें। यह निर्भरता प्रबंधन और मेवेन की अन्य शक्तिशाली विशेषताओं का लाभ उठाता है और आप जो करना चाहते हैं उसके लिए अधिक उपयुक्त होंगे।

webpage and documentation पर चेकआउट करें और शायद के अध्याय के बारे में मैंने थोड़ा और समझने के साथ-साथ मेवेन को देखने के लिए कुछ लिखा है।

एंड्रॉइड प्लगइन सामान्य जार कलाकृतियों के लिए पुन: उपयोग का समर्थन करता है और यदि कोड के भीतर एंड्रॉइड निर्भरताएं हैं तो आप एपीकेलिब परियोजनाओं का उपयोग कर सकते हैं। Roboguice, robolectric, actionbarsherlock और अन्य जैसी कई परियोजनाएं इस सुविधा का सफलतापूर्वक उपयोग करती हैं।

+0

प्रश्न के लिए क्या नहीं पूछा गया, लेकिन +1 क्योंकि यह एक अद्भुत उपकरण जैसा दिखता है जिसे मुझे जानना चाहिए। – hwrdprkns

+0

कोई समस्या नहीं .. एक बार जब आप चींटी निर्माण को अनुकूलित करना शुरू कर देते हैं तो आपको एक्सएमएल नरक से बचाने और कई अपग्रेड दर्द की कोशिश कर रहा है .. –