前几天,携程无线部门开源了他们的插件框架,使用该框架可以方便的实现app的插件化开发和热更新。
在陈博士发表的关于该框架的blog中,有这么一段
为aapt增加–apk-module参数。
如前所述,资源ID其实有一个PackageID的内部字段。我们为每个插件工程指定独特的PackageID字段,这样根据资源ID就很容易判明,此资源需要从哪个插件apk中去查找并加载了。在后文的资源加载部分会有进一步阐述。
很多同学都很关心这里应该怎么修改aapt来实现为不同的插件工程指定不同的PackageID,这里我来分析一下aapt的源码,提供一个大概的思路吧。
个人才疏学浅,如有不对,还请携程的同学指正一下。
appt相关的源码都在framework/base/tools/aapt目录下。
首先查看ResourceTable.cpp
中的构造函数
ResourceTable::ResourceTable(Bundle* bundle, const String16& assetsPackage, ResourceTable::PackageType type)
ssize_t packageId = -1;
switch