新的换肤思路
资源注入
把资源放在另一个apk,类似android.jar一样作为基础资源,然后使用aapt联合编译,就可以让主工程像引用android资源一样,引用另一个apk的资源,不过如此一来,需要自己去做资源分区,否则可能会有id冲突。
比如我们平时会直接@android:drawable,@android:anim去直接引用anrdoid资源,现在我们可以加了一个叫做skin的包,那么就可以使用@skin:drawable来引用skin包的资源。要激活其他皮肤的时候,只要换一下包就行了。
相比其他方案,这种改动很小,没有那些各种hack的黑科技。希望有空能自己实现一下。
aapt
关于aapt的修改,可以看看携程的DynamacAPK。