ipu的trunk版的android工程和服务端工程。

build.xml 13KB

    <?xml version="1.0" encoding="UTF-8"?> <project name="apkTargets" default="zipalign" basedir="."> <!-- 指定配置文件 --> <property file="build.properties" /> <record name="${logPath}" loglevel="info" append="no" action="start" /> <!-- 1. 在Target- aapt_gererateR 中添加library 2. 在Target- compile 中添加library 3. 在Target- dex 中添加library 4. 在Target- aapt-package-res 中添加library 5. 在Target- apkbuilder 中添加library --> <!-- 识别编译环境 --> <condition property="exe" value=".exe" else=""><os family="windows" /></condition> <condition property="bat" value=".bat" else=""><os family="windows" /></condition> <!-- Tools --> <property name="jarsigner" value="${jdk.home}/bin/jarsigner${exe}" /> <property name="aapt" value="${android.tools}/aapt${exe}" /> <property name="zipalign" value="${android.tools}/zipalign${exe}" /> <property name="aidl" value="${android.tools}/aidl${exe}" /> <property name="dx" value="${android.tools}/dx${bat}" /> <property name="apk-builder" value="${apk.tools}/apkbuilder${bat}" /> <property name="android-jar" value="${sdk.folder}/android.jar" /> <property name="annotations-jar" value="${sdk.home}/tools/support/annotations.jar" /> <property name="android-framework" value="${sdk.folder}/framework.aidl" /> <property name="proguard-home" value="${sdk.home}/tools/proguard/lib" /> <!-- some file directory exclude "bin" file, because "bin" file will be changed each loop --> <property name="gen-dir" value="gen" /> <property name="src-dir" value="src" /> <property name="libs-dir" value="libs" /> <property name="resource-dir" value="res" /> <property name="asset-dir" value="assets" /> <property name="bin-dir" value="bin" /> <property name="manifest-xml" value="AndroidManifest.xml" /> <!-- 主工程各个目录 --> <property name="host-gen" value="${basedir}/${gen-dir}" /> <property name="host-src" value="${basedir}/${src-dir}" /> <property name="host-libs" value="${basedir}/${libs-dir}" /> <property name="host-classes" value="${basedir}/${bin-dir}/classes" /> <property name="dex-file" value="classes.dex" /> <property name="intermediate-dex" value="${basedir}/${bin-dir}/${appname}/${dex-file}" /> <!-- The final package file to generate --> <property name="resources-package" value="${basedir}/${bin-dir}/${appname}/${appname}.ap_" /> <property name="out-unsigned-package" value="${basedir}/${bin-dir}/${appname}/${appname}-unsigned.apk" /> <property name="out-signed-package" value="${basedir}/${bin-dir}/${appname}/${appname}-signed.apk" /> <property name="zipalign-package" value="${basedir}/${output.dir}/${appname}_for_android_${android_version}_${output.dir}.apk" /> <!--1 初始化--> <target name="init"> <delete dir="${host-gen}" /> <delete dir="${bin-dir}" /> <delete file="${basedir}/proguardMapping.txt" /> <mkdir dir="${host-gen}" /> <mkdir dir="${host-classes}" /> <mkdir dir="${bin-dir}/${appname}" /> <mkdir dir="${basedir}/${output.dir}" /> </target> <!--2 生成R文件和Manifest.java--> <target name="aapt_gererateR" depends="init"> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-m" /> <arg value="-J" /> <arg value="${host-gen}" /> <arg value="-M" /> <arg value="${manifest-xml}" /> <arg value="-S" /> <arg value="${resource-dir}" /> <!-- 同时需要调用Library的res --> <arg value="-S" /> <arg value="${library-1}/${resource-dir}" /><!-- 注意点:同时需要调用Library的res--> <arg value="-S" /> <arg value="${library-2}/${resource-dir}" /> <arg value="-I" /> <arg value="${android-jar}" /> <arg value="--auto-add-overlay" /> <!-- 这个重要,覆盖资源,不然报错--> </exec> <!-- 编译Libray1 的R文件 --> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-m" /> <arg value="--non-constant-id" /> <!-- 加了这个参数--> <arg value="--auto-add-overlay" /> <arg value="-J" /> <arg value="gen" /> <arg value="-M" /> <arg value="${library-1}/${manifest-xml}" /> <!-- 库应用的manifest--> <arg value="-S" /> <arg value="res" /> <arg value="-S" /> <arg value="${library-1}/${resource-dir}" /> <arg value="-I" /> <arg value="${android-jar}" /> </exec> <!-- 编译Libray2 的R文件 --> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-m" /> <arg value="--non-constant-id" /> <!-- 加了这个参数--> <arg value="--auto-add-overlay" /> <arg value="-J" /> <arg value="gen" /> <arg value="-M" /> <arg value="${library-2}/${manifest-xml}" /> <!-- 库应用的manifest--> <arg value="-S" /> <arg value="res" /> <arg value="-S" /> <arg value="${library-2}/${resource-dir}" /> <arg value="-I" /> <arg value="${android-jar}" /> </exec> </target> <!--3 生成aidl对应的java文件--> <target name="aidl" depends="aapt_gererateR"> <apply executable="${aidl}" failonerror="true"> <arg value="-p${android-framework}" /> <arg value="-I${host-src}" /> <arg value="-o${host-gen}" /> <fileset dir="${host-src}"> <include name="**/*.aidl" /> </fileset> </apply> </target> <!--4 编译java文件为class文件--> <target name="compile" depends="aidl"> <path id="project.libs"> <fileset dir="${libs-dir}"> <include name="*.so" /> <include name="**/*.so" /> <include name="*/*.so" /> <include name="**/*.jar" /> <include name="*.jar" /> </fileset> </path> <path id="library-1.libs"> <fileset dir="${library-1-libs}"> <include name="*.so" /> <include name="**/*.so" /> <include name="*/*.so" /> <include name="**/*.jar" /> <include name="*.jar" /> </fileset> </path> <path id="library-2.libs"> <fileset dir="${library-2-libs}"> <include name="*.so" /> <include name="**/*.so" /> <include name="*/*.so" /> <include name="**/*.jar" /> <include name="*.jar" /> </fileset> </path> <javac debug="true" extdirs="" srcdir="." includeantruntime="on" destdir="${host-classes}" bootclasspath="${android-jar}" encoding="UTF-8"> <compilerarg line="-encoding UTF-8 " /> <src path="${library-1}/${src-dir}" /><!-- Library1的src文件 --> <src path="${library-2}/${src-dir}" /><!-- Library2的src文件 --> <src path="${host-src}" /> <src path="${host-gen}" /> <!-- jar文件 --> <classpath refid="library-1.libs" /> <classpath refid="library-2.libs" /> <classpath refid="project.libs" /> </javac> </target> <!--5 混淆--> <target name="obfuscate" depends="compile"> <jar basedir="${host-classes}" destfile="temp.jar" /> <java jar="${proguard-home}/proguard.jar" fork="true" failonerror="true"> <jvmarg value="-Dmaximum.inlined.code.length=32" /> <arg value="-injars temp.jar" /> <arg value="-outjars optimized.jar" /> <arg value="-libraryjars '${annotations-jar}'" /> <arg value="-libraryjars '${android-jar}'" /> <arg value="@proguard-project.txt" /> </java> <delete file="temp.jar" /> <delete dir="${host-classes}" /> <mkdir dir="${host-classes}" /> <unzip src="optimized.jar" dest="${host-classes}" /> <delete file="optimized.jar" /> </target> <!--6 把class文件转换为dex文件--> <target name="dex" depends="obfuscate"> <echo>Packaging dex...</echo> <apply executable="${dx}" failonerror="true" parallel="true"> <arg value="--dex" /> <arg value="--output=${intermediate-dex}" /> <arg path="${host-classes}" /> <arg path="${host-libs}" /> <fileset dir="${libs-dir}" /> <!-- Library1 --> <fileset dir="${library-1-libs}" /> <!-- Library2 --> <fileset dir="${library-2-libs}" /> </apply> </target> <!--7 aapt打包资源--> <target name="aapt-package-res" depends="dex"> <echo>Packaging resources and assets...</echo> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <arg value="-f" /> <arg value="-M" /> <arg value="${manifest-xml}" /> <arg value="-S" /> <arg value="${resource-dir}" /> <arg value="-S" /> <arg value="${library-1}/${resource-dir}" /><!-- 包含Library的资源 --> <arg value="-S" /> <arg value="${library-2}/${resource-dir}" /><!-- 包含Library2的资源 --> <arg value="-A" /> <arg value="${asset-dir}" /><!-- assets文件 --> <arg value="-I" /> <arg value="${android-jar}" /> <arg value="-F" /> <arg value="${resources-package}" /><!-- 输出资源压缩包 --> <arg value="--auto-add-overlay" /> <!-- 这个重要,覆盖资源,不然报错--> </exec> </target> <!--8 apkbuilder打包成apk文件--> <target name="apkbuilder" depends="aapt-package-res"> <echo>${out-unsigned-package}</echo> <exec executable="${apk-builder}" failonerror="true"> <arg value="${out-unsigned-package}" /><!-- 输出 --> <arg value="-u" /><!-- 创建未签名的包 --> <arg value="-z" /><!-- 资源压缩包 --> <arg value="${resources-package}" /> <arg value="-f" /><!-- dex文件 --> <arg value="${intermediate-dex}" /> <arg value="-rf" /><!-- Adds the java resources found in that folder --> <arg value="${host-src}" /> <arg value="-nf" /><!-- add native libraries --> <arg value="${host-libs}" /> <arg value="-nf" /> <arg value="${library-1-libs}" /> <arg value="-nf" /> <arg value="${library-2-libs}" /> <arg value="-rj" /><!-- Adds the java resources found in the jar file(s) --> <arg value="${host-libs}" /> <arg value="-rj" /> <arg value="${library-1-libs}" /> <arg value="-rj" /> <arg value="${library-2-libs}" /> </exec> </target> <target name="apkbuilder2" > <java classpath="${apk.tools}/lib/sdklib.jar" classname="com.android.sdklib.build.ApkBuilderMain" fork="true" failonerror="true"> <sysproperty key="file.encoding" value="UTF-8" /> <arg value="${out-unsigned-package}" /> <arg value="-u" /><!-- 创建未签名的包 --> <arg value="-z" /> <arg value="${resources-package}" /> <arg value="-f" /><!-- dex文件 --> <arg value="${intermediate-dex}" /> <arg value="-rf" /><!-- Adds the java resources found in that folder --> <arg value="${host-src}" /> <arg value="-nf" /><!-- add native libraries --> <arg value="${host-libs}" /> <arg value="-nf" /> <arg value="${library-1-libs}" /> <arg value="-nf" /> <arg value="${library-2-libs}" /> <arg value="-rj" /><!-- Adds the java resources found in the jar file(s) --> <arg value="${host-libs}" /> <arg value="-rj" /> <arg value="${library-1-libs}" /> <arg value="-rj" /> <arg value="${library-2-libs}" /> </java> </target> <!--9 签名apk文件--> <target name="jarsigner" depends="apkbuilder"> <exec executable="${jarsigner}" failonerror="true"> <arg value="-verbose" /> <arg value="-keystore" /> <arg value="${key.store}" /> <arg value="-storepass" /> <arg value="${key.store.password}" /> <arg value="-keypass" /> <arg value="${key.alias.password}" /> <arg value="-signedjar" /> <arg value="${out-signed-package}" /> <arg value="${out-unsigned-package}" /> <arg value="${key.alias}" /> <arg value="-digestalg" /> <arg value="SHA1" /> <arg value="-sigalg" /> <arg value="MD5withRSA" /> </exec> </target> <!--10 对apk文件进行zipalign对齐--> <target name="zipalign" depends="jarsigner"> <exec executable="${zipalign}" failonerror="true"> <arg value="-v" /> <arg value="-f" /> <arg value="4" /> <arg value="${out-signed-package}" /> <arg value="${zipalign-package}" /> </exec> <echo>打包完成:${zipalign-package}</echo> </target> </project>