我使用 aapt 的 --rename-manifest-package 来生成 env 特定的包。
prod 中的包名,我使用
com.xxx.app
对于 uat 环境,我使用
com.xxx.app.uat
在我添加phonegap之前它工作正常,我使用的是codorva 2.2,它给了我以下错误
12-12 19:02:36.156: E/PluginManager(13188): =====================================================================================
12-12 19:02:36.156: E/PluginManager(13188): ERROR: plugin.xml is missing. Add res/xml/plugins.xml to your project.
12-12 19:02:36.156: E/PluginManager(13188): https://git-wip-us.apache.org/repos/asf? p=incubator-cordova-android.git;a=blob;f=framework/res/xml/plugins.xml
12-12 19:02:36.156: E/PluginManager(13188): =====================================================================================
我终于追溯到 PluginManager 中的以下代码
int id = this.ctx.getActivity().getResources().getIdentifier("config", "xml", this.ctx.getActivity().getPackageName());
...
XmlResourceParser xml = this.ctx.getActivity().getResources().getXml(id);
id 为 0,这意味着它无法引用 config.xml getActivity().getPackgeName() 给出替换的包名称 - “ com.xxx.app.uat ”
看起来 .getResources().getIdentifer() 没有更新到新包……这可能是 android 的错误吗?
在我的测试用例中,如果我使用 R.xml.config,它会毫无问题地引用 config.xml。
问题是我无法更改作为 Phonegap 代码库一部分的 PluginsManager ...