2011-03-15 3 views
13

मैं कई एंड्रॉइड प्रोजेक्ट्स बनाना चाहता हूं जो चींटी का उपयोग करके उसी जार फ़ाइलों का संदर्भ लें। मैं जार फ़ाइल को प्रोजेक्ट में प्रत्येक libs निर्देशिका में कॉपी नहीं करना चाहता (स्रोत नियंत्रण पेड़ कैसे स्थापित किया जाता है)। answers I find यहां "उन्हें libs निर्देशिका में डाल दें" जो इस समस्या को हल नहीं करता है।चींटी का उपयोग करके एंड्रॉइड प्रोजेक्ट बनाने के लिए मैं एक सामान्य निर्देशिका (libs नहीं) में बाहरी जार फ़ाइलों का संदर्भ कैसे लगा सकता हूं?

तो सवाल यह है कि, मैं प्रोजेक्ट के बाहर एक अलग निर्देशिका में एक सामान्य जार को संदर्भित करने के लिए अपने एंड्रॉइड चींटी बिल्ड स्क्रिप्ट को कैसे कॉन्फ़िगर कर सकता हूं ("libs" में नहीं)?

उत्तर

9

एसडीके में, tools/ant के तहत चींटी फ़ाइलें हैं। main_rules.xml में, आपको निम्न कोड अनुभाग पा सकते हैं:

<!-- Directory for the third party java libraries --> 
<property name="jar.libs.dir" value="libs" /> 
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" /> 
<!-- create a path with all the jar files, from the main project and the 
    libraries --> 
<path id="jar.libs.ref"> 
    <fileset dir="${jar.libs.absolute.dir}" includes="*.jar" /> 
    <path refid="project.libraries.jars" /> 
</path> 

यह कैसे चींटी निर्माण कोड निर्धारित करता है जहां से जार प्राप्त करने के लिए है। आप अपने build.properties में jar.libs.dir के मान को अधिभारित कर सकते हैं क्योंकि यह इस सेक्शन से पहले पढ़ा जाता है और मान को अधिभारित करता है। यह इंगित करते हुए कि आप जिस सामान्य निर्देशिका में उपयोग करना चाहते हैं, वह वही करेगा जो आप सुझा रहे हैं। जिस तरह से आप चाहते हैं उसे काम करने के लिए आपको इसके साथ कुछ खेलने की आवश्यकता हो सकती है।

एक चेतावनी यह है कि मुझे यकीन नहीं है कि यह अन्य निर्माण जीवन चक्र गतिविधियों पर नकारात्मक प्रभाव डालेगा या नहीं।

7

ऐसा लगता है कि नए एसडीके उपकरण इसे पूरा करना आसान बनाते हैं। मेरे पास एक मास्टर libs फ़ोल्डर है जो मेरी सभी एंड्रॉइड प्रोजेक्ट्स साझा करता है और मैंने इसे ant.properties फ़ाइल में जोड़ा है ताकि यह उन libs के लिए एक स्तर को देख सके।

jar.libs.dir=../libs 
+0

util परियोजना अन्य सभी परियोजनाओं द्वारा साझा की ओर इशारा करते भी पुष्टि काम कर, उदाहरण के लिए: jar.libs.dir = ../MyUtilAnd3rdPartyLibraryProject/libs – user77115

+0

अजीब .. यह मेरे लिए काम नहीं कर रहा है .. मैं गूंज की कोशिश की संकलन लक्ष्य से ठीक पहले 'jar.libs.dir' मान और यह '../ libs' दिखाता है लेकिन संकलन अभी भी विफल रहता है। यह एसडीके टूल्स 21.0.1 पर है। –

+0

समस्या मिली और एक उत्तर पोस्ट कर रहा हूँ –

-2

आप लिनक्स का उपयोग करते हैं, बस बाहरी जार फ़ाइलों की सांकेतिक लिंक बनाने के लिए, फिर उन सभी को libs में रखते हैं। चींटी ठीक काम करेगी।

संपादित

libs (नहीं उप निर्देशिका) में सभी सांकेतिक लिंक सीधे यकीन है कि जगह बनाओ। मुझे यकीन है कि यह चींटी स्क्रिप्ट द्वारा पुनः कॉन्फ़िगर किया जा सकता है। लेकिन मैं चींटी से परिचित नहीं हूं :-)

3

here प्रश्न के अनुसार और here से मेरा उत्तर लिया गया, प्रस्तावित समाधान अब तक काम नहीं करता है। जब तक दायर बग तय नहीं किया जाता है। संदर्भित उत्तर में उल्लिखित समाधान, नीचे कॉपी किया गया है।


मैं इसे अपने custom_rules.xml टेम्पलेट में जोड़ता हूं और ऐसा लगता है कि यह ठीक काम कर रहा है। मुझे लगता है कि ant.properties फ़ाइल तक पथ जोड़ने से केवल कुछ और लाइनें हैं जब तक कि हमें बेहतर समाधान न मिल जाए।

<target name="-pre-compile"> 
    <path id="project.all.jars.path"> 
    <path path="${toString:project.all.jars.path}"/> 
    <fileset dir="${jar.libs.dir}"> 
     <include name="*.jar"/> 
    </fileset> 
    </path> 
</target> 
संबंधित मुद्दे

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