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

解决Android ANT打包问题
本文介绍了解决Android项目中使用ANT打包时遇到的问题,特别是针对包含Facebook SDK作为库项目的场景。文章详细说明了修改构建脚本以确保正确编译源文件、资源文件,并解决了BuildConfig缺失的问题。
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、加入库项目的源文件
<!-- 将工程中的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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值