|
您好,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文件应用去除。
|
|