现在的位置: 首页 > 综合 > 正文

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

2013年06月04日 ⁄ 综合 ⁄ 共 1089字 ⁄ 字号 评论关闭

    开发中遇见类似标题中提到的,项目引入第三方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一样。

抱歉!评论已关闭.