一.引言
共享库的概念,相信大家都有所了解,它有有许多优点。可以设想,在一个系统上要跑100个应用,并且它们都使用到了同一个库。如果这个库做成静态库,那么每个应用中都要打包一次这个库,100个应用就是100次,这无疑是重复的。我们可不可以在系统里只集成一次这个库呢,每个应用用到的时候再动态加载与链接,动态库的概念就这么产生了。现在,PC上Linux、Windows、Mac中动态库的应用已经非常广泛了。当然,Android中的动态库的应用也非常多,写JNI的同学都非常熟悉了。
不过,我们今天讨论的动态库,指的并不是这些。我们知道一个APK中简单来说主要包括两部分:代码(DEX和so等)和资源(Asset、XML和Raw等)。前面我们 讲的动态库的概念主要是针对代码而言的,那么资源呢?我们可不可以动态加载和使用资源呢?答案当然是OK,毕竟现在已经有各种资源动态加载的框架了。但我们今天说的也不是这些框架,而是Android本身支不支持资源的动态加载呢?
二.framework-res.apk
我们知道,Android本身也有很多资源,想必大家对这些代码都比较熟悉吧:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar"