编辑 - 这似乎是Fovea插件的一个问题。我没有意识到它包含来自旧插件的大量代码,这使我认为旧的插件仍然被引用。我不知道为什么它会抛出IllegalArgumentException,但它似乎并不是由引用的旧插件引起的。所以,无视......
我正在开发Phonegap / Cordova应用程序。以前,我从Phonegap开始,使用" SmartMobileSoftware"来自https://github.com/poiuytrez/AndroidInAppBilling的inapppurchase插件。我按照说明安装它,从git克隆它然后使用
phonegap local plugin add /path/to/src
后来,由于各种问题,我决定重新使用Cordova而不是Phonegap,并使用不同的购买插件。我用npm安装了最新的cordova,使用新的项目目录以通常的方式创建了一个新的Cordova应用程序,并安装了Fovea购买插件,如下所示:
cordova plugin add cc.fovea.cordova.purchase
然后我复制了我的代码(仅限html / css / js,没有配置文件或xml或任何东西),一切都表面上有效,新的购买插件加载并初始化。
这里是神秘的部分:新的Cordova应用程序以某种方式包含旧的计费插件。我注意到了这一点,因为当我的应用程序退出时,我在logcat中看到了这个IllegalArgumentException:
Service not registered: com.smartmobilesoftware.util....
果然,我检查了我的平台\ android \ res \ xml \ config.xml,它引用了旧的SmartMobileSoftware插件,所有旧的插件文件都在ant-build / classes中。但是,我不知道Cordova在哪里找到旧插件的参考。在我的新项目目录中没有引用它(平台/ android除外),并且在
中都没有提到它cordova plugins ls
phonegap plugins ls
有没有猜到这里发生了什么?似乎Phonegap提到了Cordova关注的旧插件,但我不知道在哪里。科尔多瓦将如何包含一个未列入" cordova插件的插件"?
答案 0 :(得分:0)
删除使用此语法
cordova plugin rm plugin_name_here
答案 1 :(得分:0)
问题是这两个插件都包含了一些相同的库,而我错误地将新插件误认为旧插件。
答案 2 :(得分:0)
问题是你在运行cordova plugin rm命令时必须使用 - save 标志。 cordova插件删除插件名称 - 保存
这个--save标志告诉编译器也将它从config.xml中删除,其中列出了所有插件。当你没有通过 - save 标志时,插件条目仍保留在config.xml中,因此当你运行:" cordova plugins ls"时,你的插件是仍然存在......并将您的旧插件版本构建到平台级别。
这应该在官方的cordova文档中更清楚地突出显示..