帖子
帖子
用户
博客
课程
显示全部楼层
13
帖子
0
勋章
60
Y币

[其他] 开发自定义模块时,依赖库能引用R文件吗?

[复制链接]
发表于 2014-9-22 21:59:24
文档里说“在使用APICloud SDK的项目中不允许直接通过引用R文件”
很多android开发都要引用开源库,这些开源库很多会使用自己的res资源,
做模块时,这些库都不能使用了吗?或者说要修改库里类的代码?
20
帖子
1
勋章
7583
Y币
您好,Android平台上,R文件其实是ADT在应用开发过程中为开发者自动生成的res目录下所有资源文件的临时索引,该文件在应用编译后,aapt会自动将其生成为一个叫public.xml的资源ID存储文件,然后弃用R文件。
    同时R文件默认是跟应用包名相关的,例如你的包名叫做com.apicloud.demo,那么这个R文件就默认位于com.apicloud.demo下,也就是意味着当你release Jar包的时候,你的R(java类)文件被release时,它的class路径已经固定在com.apicloud.demo下,无法更改。
    而APICloud云端在编译apk包的时候,是允许开发者自定义应用包名的,如果不自定义,会自动生成一个,比如叫com.apicloud.api。此时的应用包名肯定不是com.apicloud.demo了,也就意味着你当初realse Jar包时里头包含的R文件已经失去作用。ADT在编译过程中会临时重新生成一个一个R文件,该R文件会位于com.apicloud.api路径下。
    因此,我们规定不允许在模块的Jar包中直接引用R文件来引用res资源,必须使用动态获取资源ID的方式引用res资源,可参考[http://doc.apicloud.com/api/inde ... 8Android%EF%BC%89#8]下第七章 SDK开放API说明中的UZResourcesIDFinder类描述。
    所以,如果使用了开源库,也必须将这个开源库中的R文件应用去除。
13
帖子
0
勋章
60
Y币
常山赵子云 发表于 2014-9-23 14:21
您好,Android平台上,R文件其实是ADT在应用开发过程中为开发者自动生成的res目录下所有资源文件的临时索引 ...

好吧,R 只能最后 replace 了
另外模块有没有调试的方法?实在没有一遍写下来,程序就能正常运行的信心,
要是我java能写这么溜,早直接全用原生开发了。
如果每次测试,都得先打包jar,压缩zip,再上传编译,最后还得手机下载,这一套下来,那也太反人类了吧。
1
帖子
0
勋章
2
Y币
jflame 发表于 2014-9-23 16:00
好吧,R 只能最后 replace 了
另外模块有没有调试的方法?实在没有一遍写下来,程序就能正常运行的信心, ...

不是可以真机调试吗,右键--》一键真机同步测试,可以开启日志在控制台看错误
13
帖子
0
勋章
60
Y币
kidbei 发表于 2014-9-24 14:28
不是可以真机调试吗,右键--》一键真机同步测试,可以开启日志在控制台看错误 ...

真机调试只能调用内置的模块,我需要调试的我自己写的原生java模块啊
您需要登录后才可以回帖 登录

本版积分规则