关于ant 打包android progect同时引入第三方library project注意点

本文详细介绍了在开发过程中遇到的引入第三方libraryproject时,如何正确生成R.java文件,确保第三方资源的id与项目自身的R.java文件中的id对应一致,避免在程序执行时出现找不到id的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    开发中遇见类似标题中提到的,项目引入第三方library project,是个头疼的问题,其实解决这个问题关键点事library project 的R.java的生成,

  具体编译生成R.java文件ant脚本如下:

 

<target name="gen-R" depends="init">
		<echo>Generating R.java from the resources...</echo>
		<exec executable="${aapt}" failonerror="true">
			<arg value="package" />
			<arg value="-f" />
			<arg value="-m" />
			<arg value="-J" />
			<arg value="${outdir-gen}" />
			<arg value="-S" />
			<arg value="${resource-dir}" />
			<arg value="-S" />
			<arg value="${sdklibdir}/res" />
			<arg value="-M" />
			<arg value="${manifest-xml}" />
			<arg value="-I" />
			<arg value="${android-jar}" />
		</exec>
		<!-- 编译生成第三方R.java -->
		<exec executable="${aapt}" failonerror="true">
			<arg value="package" />
			<arg value="-f" />
			<arg value="-m" />
			<arg value="-J" />
			<arg value="${outdir-gen}" />
			<arg value="-S" />
			<arg value="${resource-dir}" />
			<arg value="-S" />
			<arg value="${sdklibdir}/res" />
			<arg value="-M" />
			<arg value="${sdklibdir}/${manifest-xml}" />
			<arg value="-I" />
			<arg value="${android-jar}" />
		</exec>
	</target>
下面的一个exec是生成第三方R.java的,唯一的区别在于对应的AndroidManifest.xml文件不一样,仔细对比发现两次执行都要添加我们自己的res路径,这里要说下,如果不这样,第三方资源的id在我们自己的R.java中的数值跟第三方生成的R.java中的对应id的值是不一样的,这样虽然能正常打包,但是当程序执行到对应id的时候就会发现找不到这个id。关于第三方library跟一般jar一样。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值