2013.11.04(2)——— android ant打包 公共库项目问题

2013.11.04(2)———androidant打包公共库项目问题

参考:http://www.apkbus.com/android-138842-1-1.html

因为项目中用到了facebook第三方登录,而facebook的sdk是通过公共库也就是islibrary的方式引入的,而在ant进行打包的时候,会报错,打包不成功,查阅相关资料,解决此问题,大概需要改3个地方

1、加入库项目的源文件

       
<!-- 将工程中的java源文件编译成class文件 -->
	<target name="compile" depends="aidl">
		<echo>Compiling java source code...</echo>
		<javac encoding="utf-8" target="1.6" destdir="${outdir-classes}" bootclasspath="${android-jar}" includeAntRuntime="false" >
		    <src path="${library-dir}/src" /><!-- 库应用源码 -->
            <src path="${srcdir-ospath}" /><!-- 工程源码-->
            <src path="${outdir-gen}" /><!-- 生成的class文件全部保存到bin/classes目录下 -->
			<classpath>
				<fileset dir="${external-lib}" includes="*.jar"/>
				<!--第三方
				<filelist>
					<file name="${android-maps-jar}"/>
				</filelist>
				-->
				<filelist>
					<file name="${android-annotations-jar}"/>
				</filelist>
				<filelist>
					<file name="${android-umeng-jar}"/>
				</filelist>
				<!-- <filelist>
					<file name="${android-facebook-jar}"/>
				</filelist> -->
			</classpath>
		</javac>
	</target>

2、加入库项目的资源文件

       
<!-- 根据工程中的资源文件生成R.java文件  -->
	<target name="gen-R" depends="init">
		<echo>Generating R.java from the resources...</echo>
		<exec executable="${aapt}" failonerror="true">
            <arg value="package" /><!-- package表示打包-->
            <arg value="-m" /><!--m,J,gen表示创建包名的目录和R.java到gen目录下 -->
            <arg value="-J" />
            <arg value="${outdir-gen}" />
            <arg value="-M" /><!-- M指定AndroidManifest.xml文件-->
            <arg value="${manifest-xml}" />
            <arg value="-S" /><!-- S指定res目录,生成对应的ID,可多个-->
            <arg value="${resource-dir}" />
            <arg value="-S" />
            <arg value="${library-dir}/res" /><!-- 注意点:同时需要调用Library的res-->
            <arg value="-I" /><!-- I指定android包的位置-->
            <arg value="${android-jar}" />
            <arg value="--auto-add-overlay" /> <!-- 这个重要,覆盖资源,不然报错-->
        </exec>
        <!-- 根据库应用中的资源文件生成R.java文件 -->
        <exec executable="${aapt}" failonerror="true">
            <arg value="package" />
            <arg value="-m" />
            <arg value="--auto-add-overlay" />
            <arg value="-J" />
            <arg value="${outdir-gen}" />
            <arg value="-M" />
            <arg value="${library-dir}/AndroidManifest.xml" /><!-- 库应用的manifest-->
            <arg value="-S" />
            <arg value="${resource-dir}" />
            <arg value="-S" />
            <arg value="${library-dir}/res" />
            <arg value="-I" />
            <arg value="${android-jar}" />
        </exec>
	</target>

3、加入库项目的buildConfig

在初始化的是时候复制库项目的BuildConfig

<!-- 把缺少的BuildConfig复制进去,暂时不知道如何生成 -->
        <copy file="${library-dir}/gen\com\facebook\android/BuildConfig.java" tofile="${outdir-gen}/com/facebook/android/BuildConfig.java">
             <filterset>
                <filter token="CONFIG.FROM" value="${package.from}"/>
             </filterset>
        </copy>

ant

相关推荐