Android 资源id 之public.xml固定资源Id

    之前一段时间在处理关于Android资源共享的事情 ,由于要保持已有的资源Id的稳定性方便已经发布的组件使用,中途遇到了各种问题,最终却发现其实Android资源系统其实已经预留了这样的能力。真是木有相关知识补充就盲目开搞完全徒劳呀>_<

    1、中途试过的方法

          首先,想到了修改aapt的源码,在中途换掉从资源名称生成R文件Id值得方法,最终达到固定资源id的方法。

        结果:毕竟C++ N年没碰了,完全搞不定,然后aapt的源码还挺复杂的,失败收场

   2、第一种方法失败后想着还对Android中资源的处理一抹黑呀,不如先学学资源相关原理吧,结果一看,明明

android已经预留了方法了,系统理论知识真的很重要呀。

     原理:android在资源编译过程中预留了固定id的方法,用于对诸如对外发布的jar包组件中引用的资源做固定处理以保障版本对jar包的兼容性。

    方法:将需要固定的资源以及id写在一个public.xml中,放置于res/values/public.xml中,这样在编译时相关的资源id就固定为xml中定义的id,可以支持几乎所有的R文件资源类型,定义如下:

    

<resources>
    <public type="drawable" name="host_launcher_web" id="0x7f020000" />
<public type="string" name="app_name" id="0x7f080000" />
</resources>

https://github.com/ceabie/AndroidPublicXmlCompat


参考资料:

http://blog.csdn.net/luoshengyang/article/details/8744683

老罗的android博客,真的写的很清晰,很不错。后面真的需要系统的看下Android系统各方面的原理,这样才能更有效率,写出更好的代码。


   

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。