2011-02-28 26 views
7

के साथ प्लग में चाहते एडीटी प्लग-इन इंस्टॉल है, तो निम्न बिल्डरों एक Android परियोजना के लिए सक्रिय हैं:मैं जबकि अभी भी एंड्रॉयड ग्रहण एडीटी का उपयोग कर निर्माण प्रक्रिया को अनुकूलित करने के

  • Android संसाधन प्रबंधक
  • एंड्रॉयड पूर्व संकलक
  • जावा बिल्डर
  • Android पैकेज बिल्डर

उत्पादन निर्देशिका को देखते हुए, followi एनजी कलाकृतियों बनाई गई हैं:

  • resources.ap_ (सिर्फ एक APK/संसाधनों के साथ ज़िप और कोई कोड)
  • जनरल/R.java (संसाधनों की ऑटोजनरेटेड सूची)
  • .class जावा बाईटकोड
  • के साथ फ़ाइलें
  • classes.dex
  • $ {परियोजना नाम}

.apk अपने प्रोजेक्ट के लिए, मैं कई कोड कलाकृतियों autogenerate और सामान्य जरूरत में निर्माण की प्रक्रिया का नियंत्रण हासिल रों। सबसे पहले, मुझे लगा कि संसाधन प्रबंधक संसाधन.एपी_ बनाने के लिए ज़िम्मेदार था, प्रीकंपेलर आर। जावा ने बनाया, जावा बिल्डर ने स्पष्ट किया, और फिर एंड्रॉइड पैकेज बिल्डर ने class.dex बनाया, फिर संयुक्त classes.ex और resource.ap_ एपीके फ़ाइल बनाने के लिए।

मैंने पहले दो चरणों को अक्षम कर दिया और एक कस्टम प्री-बिल्डर बनाया जिसने संसाधनों की एक प्रति निर्धारित की। Ap_, यह समझा जाएगा कि यह बराबर होगा। ऐसा भाग्य नहीं।

दुर्भाग्यवश, अंतिम एंड्रॉइड पैकेज बिल्डर संसाधनों को सीधे res/से संसाधनों को slurp लगता है और मेरे संसाधनों को अनदेखा करता है .ap_। वास्तव में, पहले दो निर्माण कदम आर। जावा उत्पन्न करने के अलावा अन्य कुछ नहीं करते हैं।

यह वह जगह है जहां यह वास्तव में समस्याग्रस्त हो जाता है।

[2011-02-27 20:25:28 - android-premium] ------------------------------ 
[2011-02-27 20:25:28 - android-premium] Android Launch! 
[2011-02-27 20:25:28 - android-premium] adb is running normally. 
[2011-02-27 20:25:28 - android-premium] Could not find android-premium.apk! 

तो मैं अटक कर रहा हूँ: मैं अंतिम निर्माण कदम को निष्क्रिय और अपने खुद के APK फ़ाइल (सटीक ही नाम के साथ) लेट है, मैं निम्नलिखित त्रुटि मिलती है (Android पैकेज बिल्डर के साथ जो कोई समझदार विन्यास नहीं है), मुझे व्यक्तिगत ./res/ फ़ाइलों को आपूर्ति करना है। इसके बिना, मैं डिवाइस पर लॉन्च करने के लिए प्रोजेक्ट नहीं प्राप्त कर सकता (ग्रहण से नहीं)।

किसी के पास इस स्थान में कोई बेहतर विचार/अनुभव है?

उत्तर

12

चींटी स्क्रिप्ट के संबंध में, एंड्रॉइड ऐप बनाने के लिए एंटी चरणों का मेरा एक-एक-एक टेम्पलेट निम्नलिखित है (यह ग्रहण के निर्माण के लिए प्रयास करने वाले अन्य लोगों के लिए उपयोगी हो सकता है क्योंकि यह बहुत आसान और अधिक पारदर्शी है एंड्रॉयड उपकरणों के साथ स्वतः जेनरेट की अपारदर्शी संस्करण) से:

<property name="workspace.dir" value="/workspace" /> 
<property name="project.dir" location="." /> 
<property name="android-platform.name" value="android-1.5" /> 


<!-- Framework Paths --> 
<property name="android-sdk.dir" value="${workspace.dir}/EpicFramework/android-sdk"/> 
<property name="android-tools.dir" value="${android-sdk.dir}/tools" /> 
<property name="android-platform.dir" value="${android-sdk.dir}/platforms/${android-platform.name}" /> 
<property name="android-platform-tools.dir" value="${android-platform.dir}/tools"/> 
<property name="android-platform-jar" value="${android-platform.dir}/android.jar"/> 
<property name="android-framework-src.dir" value="${workspace.dir}/EpicFramework/EpicAndroid"/> 

<!-- Tool Binaries --> 
<property name="adb" value="${android-tools.dir}/adb"/> 
<property name="apkbuilder" value="${android-tools.dir}/apkbuilder"/> 
<property name="aapt" value="${android-platform-tools.dir}/aapt"/> 
<property name="dx" value="${android-platform-tools.dir}/dx"/> 

<!-- Project Paths --> 
<property name="src.dir" value="${project.dir}/src" /> 
<property name="gen.dir" value="${project.dir}/gen" /> 
<property name="res.dir" value="${project.dir}/res" /> 
<property name="lib.dir" value="${project.dir}/lib" /> 
<property name="build.dir" value="${project.dir}/bin" /> 
<property name="build.classes.dir" value="${build.dir}/classes" /> 

<property name="resources.file" value="${build.dir}/resources.ap_"/> 
<property name="dex.file" value="${build.dir}/classes.dex" /> 
<property name="debug-apk.file" value="${build.dir}/${ant.project.name}-debug.apk"/> 


<target name="dirs"> 
    <echo>Creating output directories if needed...</echo> 
    <mkdir dir="${res.dir}" /> 
    <mkdir dir="${gen.dir}" /> 
    <mkdir dir="${lib.dir}" /> 
    <mkdir dir="${build.dir}" /> 
    <mkdir dir="${build.classes.dir}" /> 
</target> 

<target name="android-resource-src" depends="dirs"> 
    <echo>Generating R.java from the resources...</echo> 
    <exec executable="${aapt}" failonerror="true"> 
     <arg value="package" /> 
     <arg value="-M" /> 
     <arg path="AndroidManifest.xml" /> 
     <arg value="-S" /> 
     <arg path="${res.dir}" /> 
     <arg value="-I" /> 
     <arg path="${android-platform-jar}" /> 
     <arg value="-m" /> 
     <arg value="-J" /> 
     <arg path="${gen.dir}" /> 
    </exec> 
</target> 

<target name="android-compile" depends="android-resource-src"> 
    <echo>Compiling java files into class files...</echo> 
    <javac 
     encoding="ascii" 
     target="1.5" 
     debug="true" 
     extdirs="" 
     destdir="${build.classes.dir}" 
     includeAntRuntime="false" 
     bootclasspath="${android-platform-jar}"> 
     <src path="${android-framework-src.dir}" /> 
     <src path="${src.dir}" /> 
     <src path="${gen.dir}" /> 
     <classpath> 
      <fileset dir="${lib.dir}" includes="*.jar"/> 
     </classpath> 
    </javac> 
</target> 

<target name="android-dex" depends="android-compile"> 
    <echo>Converting compiled files and 3rd party libraries into ${dex.file} ...</echo> 
    <apply executable="${dx}" failonerror="true" parallel="true"> 
     <arg value="--dex" /> 
     <arg value="--output=${dex.file}" /> 
     <arg path="${build.classes.dir}" /> 
     <fileset dir="${lib.dir}" includes="*.jar"/> 
    </apply> 
</target> 

<target name="android-package-resources"> 
    <echo>Packaging Android resources into ${resources.file} ...</echo> 
    <exec executable="${aapt}" failonerror="true"> 
     <arg value="package" /> 
     <arg value="-M" /> 
     <arg path="AndroidManifest.xml" /> 
     <arg value="-S" /> 
     <arg path="./res" /> 
     <arg value="-I" /> 
     <arg path="${android-platform-jar}" /> 
     <arg value="-f" /> 
     <arg value="-F" /> 
     <arg value="${resources.file}" /> 
    </exec> 
</target> 

<target name="android-debug" depends="android-dex, android-package-resources"> 
    <echo>Packaging app and signing it with the debug key</echo> 
    <exec executable="${apkbuilder}" failonerror="true"> 
     <arg value="${debug-apk.file}" /> 
     <arg value="-d" /> 
     <arg value="-z" /> 
     <arg value="${resources.file}/" /> 
     <arg value="-f" /> 
     <arg value="${dex.file}" /> 
    </exec> 
</target> 

<target name="android-release" depends="android-dex, android-package-resources"> 
    <echo>Packaging App without signing, so that it can be signed with the official publishing key ...</echo> 
    <exec executable="${apkbuilder}" failonerror="true"> 
     <arg value="${release-apk.file}" /> 
     <arg value="-u" /> 
     <arg value="-d" /> 
     <arg value="-z" /> 
     <arg value="${resources.file}/" /> 
     <arg value="-f" /> 
     <arg value="${dex.file}" /> 
    </exec> 
    <echo>All generated packages need to be signed with jarsigner before they are published.</echo> 
</target> 

<target name="android-install" depends="android-debug"> 
    <echo>Removing all com.epicapplications APK files from default emulator ...</echo> 
    <exec executable="${adb}" inputstring="echo hi; rm -f /data/app/com.epicapplications.*; exit; 
    "> 
     <arg value="shell"/> 
    </exec> 
    <echo>Installing ${debug-apk.file} onto default emulator...</echo> 
    <exec executable="${adb}" failonerror="true"> 
     <arg value="install" /> 
     <arg value="-r" /> 
     <arg path="${debug-apk.file}" /> 
    </exec> 
</target> 

क्या मैं देख रहा हूँ सभी या इस चींटी निर्माण स्क्रिप्ट के टुकड़े का उपयोग करने में सक्षम हो, लेकिन अभी भी है ऐप लॉन्च करने और डिबग करने के लिए एक्लिप्स एकीकरण है।

+15

वाह, विडंबना। मैंने एक नई परियोजना बनाई और मेरी बिल्ड स्क्रिप्ट खोद नहीं सका .... इसलिए मैंने गुगल किया ..... और यह पाया ..... और जब मैं नीचे गया तो मुझे एहसास हुआ कि मैंने इसे लिखा था । –

+0

यदि मैं सिर्फ अपने एंड्रॉइड-डीएक्स लक्ष्य को पकड़ना चाहता हूं और नियमित डीएक्स लक्ष्य के स्थान पर चलता हूं, तो मैं यह कैसे करूँगा? – Mark

2

हमने एंड्रॉइड परियोजनाओं के लिए निर्माण प्रक्रिया करने के लिए चींटी स्क्रिप्ट का उपयोग किया है, अन्य ने मेवेन का भी उपयोग किया है। तब तक आपकी मदद से आप अपने सीआई बिल्ड सिस्टम के हिस्से के रूप में रात के निर्माण के हिस्से के रूप में हर दिन दौड़ने के लिए उन्हें स्क्रिप्ट कर सकते हैं। एक उन्नत स्तर पर आप रिलीज टैग, प्री-संकलन और पोस्ट-संकलन AndroidManifest.xml संशोधनों और हस्ताक्षर के साथ रिलीज बिल्ड करने के लिए इसे स्क्रिप्ट कर सकते हैं।

+1

हां, मेरे पास एक चींटी बिल्ड स्क्रिप्ट भी है, जो कमांड लाइन से अच्छी तरह से काम करती है। हालांकि, मैं जिस वर्कफ़्लो को ढूंढ रहा हूं वह है: 1) जावा फ़ाइल में कुछ पंक्तियां बदलें, 2) रन (सीटीएल-शिफ्ट-एफ 11), 3) ऐप डिवाइस पर शुरू होता है। मैं चींटी से सबकुछ बनाने के साथ ठीक हो जाऊंगा। वास्तव में, ग्रहण की श्रृंखला श्रृंखला में एक चींटी लिपि को एकीकृत करना बेहद आसान है। मुद्दा यह है कि एडीटी ने आखिरी मोनोलिथिक बिल्ड चरण को चलाने के बिना अपना ऐप लॉन्च करने से इंकार कर दिया। –

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