2013.11.04(2)——— android ant打包 公共库项目问题
参考:[url]http://www.apkbus.com/android-138842-1-1.html[/url]
因为项目中用到了facebook第三方登录,而facebook的sdk是通过公共库也就是is library的方式引入的,而在ant进行打包的时候,会报错,打包不成功,查阅相关资料,解决此问题,大概需要改3个地方
1、加入库项目的源文件
2、加入库项目的资源文件
3、加入库项目的buildConfig
在初始化的是时候 复制库项目的BuildConfig
参考:[url]http://www.apkbus.com/android-138842-1-1.html[/url]
因为项目中用到了facebook第三方登录,而facebook的sdk是通过公共库也就是is library的方式引入的,而在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>