android - चींटी बिल्ड एएपीटी कंचन लाइब्रेरी संसाधन छवियों से ड्रॉ 9 की जानकारी खींच रहा है




ant android-drawable (2)

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

प्रयत्न

aapt crunch -v -S res -C bin/res

अपने पुस्तकालय के प्रोजेक्ट फ़ोल्डर में, और पुनर्निर्माण करें। यह मेरे लिए मदद की अब सवाल यह है कि कैसे इसे स्वचालित करना है

मेरे पास एक परियोजना है जो एक पुस्तकालय परियोजना का उपयोग कर रहा है लाइब्रेरी प्रोजेक्ट ने draw 9 (9.पीएनजीजी) फाइलें बनाई हैं और एपीके के जरिए चींटी के निर्माण के दौरान यह ड्रॉ 9 की जानकारी पैमाने पर और भरे हुए क्षेत्रों पर अलग कर रहा है। नतीजा यह है कि ऐप सिर्फ ड्रॉ 9 की जानकारी का उपयोग किए बिना छवियों को फैलाता है। Android के build.xml में

 <target name="-package-resources" depends="-crunch">

यह कमी बुला रही है, जो पूर्व-संसाधित PNG कैश को अपडेट करता है (कोई भी जानता है कि यह कैश कहां है?)।

-क्रंच एक एटीपी नामक एक्शन में काम चलाता है। लेकिन मैं तर्क पर कोई जानकारी नहीं मिल पाई है। ऐसा लगता है कि फाइल को रीसेट फ़ोल्डर से ले जा रहा है और इसे बाहर रिज़ोल फ़ोल्डर में डालकर (डिफ़ॉल्ट बिन / रेस द्वारा)

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

ध्यान दें कि जब मैं इसे ग्रहण के साथ बना देता हूँ तो ठीक है।

मेरे लिए काम करने वाला दूसरा समाधान लाइब्रेरी से मुख्य प्रोजेक्ट में इन छवियों को कॉपी करना है, लेकिन यह आदर्श समाधान नहीं है।

ऐसा लगता है कि किसी अन्य चीजों से कैश का उपयोग करता है एटीपी में ऐप्ट के साथ इस कमी / संसाधन पैकेजिंग के साथ समस्याएं हैं

इस बग रिपोर्ट में वे कैश के बारे में बताते हैं कि कैश को अद्यतन करने या नहीं, यह जांचने के लिए टाइमस्टैंप का उपयोग करते हुए कैश

यह एप्ट के लिए स्रोत कोड प्रतीत हो रहा है, लेकिन मुझे यह पता करने में परेशानी थी कि यह कैश कहां से पढ़ा जाता है।

समस्या को समझें

मेरे लिए जो समस्या पैदा हो रही थी, वह यह था कि मैं अपने आरईसी, सैर और बिन के लिए चींटी में अलग-अलग फ़ोल्डर्स (जानबूझकर) का उपयोग कर रहा था। एक refernce परियोजना है। Library.res.folder.path जो निर्भरता मैक्रो में भर जाता है। यह डिफ़ॉल्ट रेस को इंगित करता है, और परियोजना से बिन फ़ोल्डर। तो मैंने जो किया वो मेरे नए फ़ोल्डर्स को इंगित करने के लिए बदलना था। लेकिन ऐसा करते हुए कि मैं पुराने को बदल रहा था वे सूचीबद्ध थे। यह संसाधन पुस्तकालय परियोजना को विभिन्न पुस्तकालय परियोजनाओं में मिला देना शुरू कर रहा था जिसका उपयोग मैं एएपीटी चला रहा था। जब मैंने यह तय किया कि वह ठीक से संकलन कर रहा था मैंने यह परियोजना के लिए भी किया था। Library.bin.r.file.path


मुझे कल ही वही समस्या थी कल

मेरे पास एक कोडबेस है जिसका उपयोग मैं एपी के अलग-अलग स्वाद बनाने के लिए करता हूं (अंतर पैकेज-नाम और कुछ विशिष्ट संसाधन) चींटी का उपयोग कर

build.xml ठीक काम किया लेकिन ऐप का उपयोग करते समय 9 पैच खराब हो गए थे (जैसा कि आप कहते हैं, पीएनजी और फैला हुआ माना जाता है)।

मैंने चींटी में काम करने की समस्या को -crunch कर दिया (जैसा आपने किया था)।

मेरे मामले में मैं दो अलग-अलग res फ़ोल्डर्स का उपयोग करता हूं इसलिए मैंने इस से मूल क्रांति कार्य बदल दिया

<!-- Updates the pre-processed PNG cache -->
    <target name="-crunch">
        <exec executable="${aapt}" taskName="crunch">
            <arg value="crunch" />
            <arg value="-v" />
        <arg value="-S" />
            <arg path="${resource.absolute.dir}" />
            <arg value="-C" />
            <arg path="${out.res.absolute.dir}" />
        </exec>
    </target>

इसके लिए

 <target name="-crunch">
        <exec executable="${aapt}" taskName="crunch">
            <arg value="crunch" />
            <arg value="-v" />
            <arg value="-S" />
            <arg path="${resource.flavour.dir}" />
            <arg value="-S" />
            <arg path="${resource.absolute.dir}" />
            <arg value="-C" />
            <arg path="${out.res.absolute.dir}" />
        </exec>
    </target>

लेकिन यह 9 पचास कलाकृतियों (भी एफबी जैसे पुस्तकालयों में) का उल्लेख किया है .. इसलिए मैंने सोचा कि मैं इसे resourceflavour.dir फ्लेवॉर डीआईसी की प्रक्रिया में बदलूंगा, अगर यह कोई लाइब्रेरी न हो जो उचित परिणाम दे (9पैथक कलाकृतियां नहीं)

<target name="-crunch">
    <do-only-if-not-library elseText="Library project: do not package resources..." >
        <exec executable="${aapt}" taskName="crunch">
            <arg value="crunch" />
            <arg value="-v" />
            <arg value="-S" />
            <arg path="${resource.flavour.dir}" />
            <arg value="-C" />
            <arg path="${out.res.absolute.dir}" />
        </exec>
    </do-only-if-not-library>
        <exec executable="${aapt}" taskName="crunch">
            <arg value="crunch" />
            <arg value="-v" />
            <arg value="-S" />
            <arg path="${resource.absolute.dir}" />
            <arg value="-C" />
            <arg path="${out.res.absolute.dir}" />
        </exec>
</target>

यह आपको आपके मामले में उचित समाधान के लिए एक सुराग दे सकता है





aapt