大佬教程收集整理的这篇文章主要介绍了正确的方法来处理Android库的ant构建. Build从jar文件中排除R.class,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
<if condition="${project.is.library}"> <then> ... <jar destfile="${out.library.jar.filE}"> <fileset dir="${out.classes.absolute.dir}" includes="**/*.class" excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/BuildConfig.class"/> <fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" /> </jar> </then> </if>
目前构建抓取classes.jar文件,但正如您在上面看到的,这不包括R.class文件,因此当库尝试获取外部化字符串时,它会在NoClassDefFoundError上爆炸
更新:
在这里找到以下引用:http://tools.android.com/recent/dealingwithdependenciesinandroidprojects
更新2:
因此,我们通过手动将R.class和R $* .class文件打包到jar中来解决此问题.
我不知道这是否是打包Android库的“正确”方式,因为ADT构建脚本将这些删除.如果没有人建议采用更“正确”的方式来做到这一点,我会将此作为答案.
> R类没有打包在输出jar中,因为它可能与主类项目的R类冲突.
>当您从主项目中引用库项目并使用ant sript构建它时,Android SDK包含它使用库包创建R文件.
>如果你想用已编译的源代码创建android库,你只能编译java代码. Here您可以找到解决方案.
>将R文件打包到编译的jar中并不是一件好事.您可以通过Resources课程访问资源.例如:
setContentView(getresources().getIdentifier("your_layout_id","layout",getPackagename())); // is equals to setContentView(R.layout.your_layout_id);
以上是大佬教程为你收集整理的正确的方法来处理Android库的ant构建. Build从jar文件中排除R.class全部内容,希望文章能够帮你解决正确的方法来处理Android库的ant构建. Build从jar文件中排除R.class所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。