android builder
网上有不少的文章 http://sinfrancis.iteye.com/blog/721582
介绍了android用builder编译,运行,安装。深受启发。以前没玩过ant,汗。。。现在发现这个是个好东西。对于我调试代码有很大的帮助。抄别人的东东,加上修改一下,为以后自己工作方面找资料。
<?xml version="1.0" encoding="UTF-8"?> <!-- step: 1.generate R.java by aapt 2.compile java to class by javac.exe 3.generate classes.dex by dx.bat 4.package resources by aapt 5. package resource and classes.dex by apkbuilder.bat 6.sign apk by jarsinger --> <project name="HelloWorld" default="for—work-install" basedir="."> <!-- Tools --> <property name="aapt" value="${sdk-platform-tools}/aapt.exe" /> <property name="aidl" value="${sdk-platform-tools}/aidl.exe" /> <property name="dx" value="${sdk-platform-tools}/dx.bat" /> <property name="adb" value="${sdk-platform-tools}/adb" /> <property name="apkbuilder" value="${sdk-tools}/apkbuilder.bat" /> <property name="android-jar" value="${sdk-platform}/android.jar" /> <property name="jarsigner" value="${jdk-home}/bin/jarsigner.exe" /> <property name="zipalign" value="${sdk-tools}/zipalign.exe" /> <property name="apksigner" value="${signer-dir}/signer.jar" /> <property name="android-framework" value="${sdk-platform}/framework.aidl" /> <property name="apk-builder" location="${sdk-tools}/apkbuilder.bat" /> <!-- Eclipse uses "bin" for its own output, so we do the same. --> <property name="outdir-bin" value="out" /> <property name="outdir-gen" value="gen" /> <!-- source directories --> <property name="res-dir" value="res" /> <property name="assets-dir" value="assets" /> <property name="src-dir" value="src" /> <property name="src-dir-ospath" value="${basedir}/${src-dir}" /> <property name="external-libs" value="libs" /> <property name="external-libs-ospath" value="${basedir}/${external-libs}" /> <!-- dest directories --> <property name="des-res-dir" value="${outdir-bin}/res" /> <property name="des-assets-dir" value="${outdir-bin}/assets" /> <property name="des-src-dir" value="${outdir-bin}/src" /> <property name="des-src-dir-ospath" value="${basedir}/${des-src-dir}" /> <property name="des-external-libs" value="${outdir-bin}/libs" /> <property name="des-external-libs-ospath" value="${basedir}/${des-external-libs}" /> <!-- Output directories --> <property name="outdir-classes" value="${outdir-bin}/classes" /> <property name="outdir-obfuscate-classes" value="${outdir-bin}/classes" /> <property name="outdir-obfuscate-classes-ospath" value="${basedir}/${outdir-obfuscate-classes}" /> <!-- Intermediate files --> <property name="dex-file" value="classes.dex" /> <property name="intermediate-dex" value="${outdir-bin}/${dex-file}" /> <property name="intermediate-dex-ospath" value="${basedir}/${intermediate-dex}" /> <!-- The final package file to generate --> <property name="resources-package" value="${outdir-bin}/${ant.project.name}.ap_" /> <property name="resources-package-ospath" value="${basedir}/${resources-package}" /> <property name="out-debug-package" value="${outdir-bin}/${ant.project.name}-debug.apk" /> <property name="out-debug-package-ospath" value="${basedir}/${out-debug-package}" /> <property name="out-unsigned-package" value="${outdir-bin}/${ant.project.name}-unsigned.apk" /> <property name="out-unsigned-package-ospath" value="${basedir}/${out-unsigned-package}" /> <property name="out-signed-package" value="${outdir-bin}/${ant.project.name}-signed.apk" /> <property name="out-signed-package-ospath" value="${basedir}/${out-signed-package}" /> <!-- init --> <target name="init"> <echo>Creating all output directories </echo> <delete dir="${outdir-bin}" /> <mkdir dir="${outdir-bin}" /> <mkdir dir="${outdir-classes}" /> </target> <!-- Generate the R.java file for this project's resources. --> <target name="resource-src" depends="init"> <echo>Generating R.java / Manifest.java from the resources...</echo> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-m" /> <arg value="-J" /> <arg value="${outdir-gen}" /> <arg value="-M" /> <arg value="AndroidManifest.xml" /> <arg value="-S" /> <arg value="${res-dir}" /> <arg value="-I" /> <arg value="${android-jar}" /> </exec> </target> <!-- Generate java classes from .aidl files. --> <target name="aidl" depends="init"> <echo>Compiling aidl files into Java classes...</echo> <apply executable="${aidl}" failonerror="true"> <arg value="-p${android-framework}" /> <arg value="-I${src-dir}" /> <fileset dir="${src-dir}"> <include name="**/*.aidl" /> </fileset> </apply> </target> <!-- Compile this project's .java files into .class files. --> <target name="compile" depends="init, resource-src, aidl"> <javac encoding="utf-8" target="1.6" debug="true" extdirs="" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}"> <classpath> <fileset dir="${external-libs}" includes="*.jar" /> </classpath> </javac> </target> <!-- Convert this project's .class files into .dex files. --> <target name="dex" depends="compile"> <echo>Converting compiled files and external libraries into ${outdir}/${dex-file}...</echo> <apply executable="${dx}" failonerror="true" parallel="true"> <arg value="--dex" /> <arg value="--output=${intermediate-dex-ospath}" /> <arg path="${outdir-obfuscate-classes-ospath}" /> <fileset dir="${external-libs}" includes="*.jar" /> </apply> </target> <!-- Put the project's resources into the output package file. --> <target name="package-res-and-assets"> <echo>Packaging resources and assets...</echo> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-f" /> <arg value="-M" /> <arg value="AndroidManifest.xml" /> <arg value="-S" /> <arg value="${resource-dir}" /> <arg value="-A" /> <arg value="${asset-dir}" /> <arg value="-I" /> <arg value="${android-jar}" /> <arg value="-F" /> <arg value="${resources-package}" /> </exec> </target> <!-- Same as package-res-and-assets, but without "-A ${asset-dir}" --> <target name="package-res-no-assets"> <echo>Packaging resources...</echo> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-f" /> <arg value="-M" /> <arg value="AndroidManifest.xml" /> <arg value="-S" /> <arg value="${res-dir}" /> <!-- No assets directory --> <arg value="-I" /> <arg value="${android-jar}" /> <arg value="-F" /> <arg value="${resources-package}" /> </exec> </target> <!-- Invoke the proper target depending on whether or not an assets directory is present. --> <!-- TODO: find a nicer way to include the "-A ${asset-dir}" argument only when the assets dir exists. --> <target name="package-res"> <available file="${asset-dir}" type="dir" property="res-target" value="and-assets" /> <property name="res-target" value="no-assets" /> <antcall target="package-res-${res-target}" /> </target> <!-- Package the application and sign it with a debug key. This is the default target when building. It is used for debug. --> <target name="debug" depends="dex, package-res"> <echo>Packaging ${out-debug-package}, and signing it with a debug key...</echo> <exec executable="${apk-builder}" failonerror="true"> <arg value="${out-debug-package-ospath}" /> <arg value="-z" /> <arg value="${resources-package-ospath}" /> <arg value="-f" /> <arg value="${intermediate-dex-ospath}" /> <arg value="-rf" /> <arg value="${src-dir-ospath}" /> <arg value="-rj" /> <arg value="${external-libs-ospath}" /> </exec> </target> <!-- Package the application without signing it. This allows for the application to be signed later with an official publishing key. --> <target name="package" depends="dex, package-res"> <echo>Packaging ${out-unsigned-package} for release...</echo> <exec executable="${apk-builder}" failonerror="true"> <arg value="${out-unsigned-package-ospath}" /> <arg value="-u" /> <arg value="-z" /> <arg value="${resources-package-ospath}" /> <arg value="-f" /> <arg value="${intermediate-dex-ospath}" /> <arg value="-rf" /> <arg value="${src-dir-ospath}" /> <arg value="-rj" /> <arg value="${external-libs-ospath}" /> </exec> <echo>It will need to be signed with jarsigner before being published.</echo> </target> <target name="jarsigner" depends="package"> <echo>Packaging ${out-unsigned-package} for release...</echo> <exec executable="${jarsigner}" failonerror="true"> <arg value="-verbose" /> <arg value="-storepass" /> <arg value="${keypass}" /> <arg value="-keystore" /> <arg value="${keystore}" /> <arg value="-signedjar" /> <arg value="${out-signed-package-ospath}" /> <arg value="${out-unsigned-package-ospath}" /> <arg value="${alias}" /> </exec> </target> <target name="release" depends="jarsigner"> <echo>release for release...</echo> </target> <!-- Install the package on the default emulator --> <target name="install" depends="debug"> <echo>Installing ${out-debug-package} onto default emulator...</echo> <exec executable="${adb}" failonerror="true"> <arg value="install" /> <arg value="${out-debug-package}" /> </exec> </target> <target name="reinstall" depends="debug"> <echo>Installing ${out-debug-package} onto default emulator...</echo> <exec executable="${adb}" failonerror="true"> <arg value="install" /> <arg value="-l" /> <arg value="-r" /> <arg value="${out-debug-package}" /> </exec> </target> <!-- Uinstall the package from the default emulator --> <target name="uninstall"> <echo>Uninstalling ${application-package} from the default emulator...</echo> <exec executable="${adb}" failonerror="true"> <arg value="uninstall" /> <arg value="${application-package}" /> </exec> </target> <!-- 自己处理,用公钥私钥签名 --> <target name="for-work-sign-apk" depends="package"> <java jar="${apksigner}" fork="true"> <arg path="${signer-dir}/shared.x509.pem"/> <arg path="${signer-dir}/shared.pk8"/> <arg path="${out-unsigned-package}"/> <arg path="${out-signed-package}"/> </java> </target> <target name="for—work-install" depends="for-work-sign-apk"> <echo>for work install ...</echo> <exec executable="${adb}" failonerror="true"> <arg value="install" /> <arg value="-l" /> <arg value="-r" /> <arg value="${out-signed-package}" /> </exec> </target> </project>
ant的一些全局属性的配置在eclipse的 window->Preferences->Ant->Runtime->Properties中添加
上面的${sdk-tools} ${sdk-platform}等都是在此添加的。
更多相关文章
- Android中共享全局变量
- Android Application 创建全局变量
- Android系统添加全局快捷键的方法
- Android Studio下gradle多工程全局配置
- android 使用Application保存全局变量
- Android 利用getApplication() 共享全局数据