为什么$ cordova准备使用新的phonegap-cordova api(插件)

时间:2014-02-14 13:50:53

标签: android eclipse cordova cordova-3 cordova-plugins

我是phonegap,cordova和android的新手。我在mac上,最近我安装了所有需求:

Phonegap 3.3.0-0.19.6 科尔多瓦3.3.1-0.4.1

获得Android SDK并在eclipse上运行没有问题。然后在eclipse上为phonegap成功创建一个新的Android应用程序,并在带有android的手机上运行。

然后我用cordoba(终端)创建另一个应用程序,放置2个平台android和ios,我运行准备等..然后将项目(android)导入eclipse。此时应用程序运行正常,因此我继续安装一些用于测试的插件(通知和设备)

https://cordova.apache.org/docs/en/3.0.0/cordova_device_device.md.html#Device

当我使用eclipse运行应用程序时,示例始终返回

未捕获的TypeError:无法调用未定义的方法'alert'

与设备相同。因此,通过互联网查找我发现,如果我运行$ cordova准备将工作,然后我运行命令,然后在eclipse上运行应用程序,它工作但总是当我安装一个新的插件进行测试我必须运行cordova准备,并问题是index.html使用示例hello world重写并且我松开了我的代码。

这里有任何帮助,我还好吗?,如何安装这些插件并进行测试,不必一直运行准备。 (请想一想日食,我不会一直使用终端)

3 个答案:

答案 0 :(得分:1)

我有同样的问题,其他帖子的建议对我不起作用。

尽管官方文档和其他帖子,我通过稍微改变步骤解决了这个问题。 如果我在添加平台之前添加所有文件和核心插件,那么在我打开项目之前,添加平台会将这些内容带到新的文件夹结构并且只从命令行构建一次

如果我需要添加任何内容,我会再次执行此操作。虽然我可以编辑www文件而无需再次执行该过程,但我不希望根www继续使用平台www 。我只是将它自己复制到所有的www文件夹中。它不应该是这种方式,但我认为这是一个记录良好的错误,有多个命令行构建,现在,这就是我的工作修复。

答案 1 :(得分:1)

推荐的方法是在项目的根www文件夹中编辑html / js / css ...,而不是在platfotms / xxx文件夹中。

原因是,如果您有多个平台,则只需在一个位置进行修改,cordova preparecordova buildphonegap build会将您的代码传播到所有平台并更新插件

如果你只有android平台,并希望能够在eclipse中直接为platforms / android / assets / www文件夹更改代码,我建议你创建一个shell脚本

  1. 将projectroot / platforms / android / assets / www的所有内容复制到projectroot / www
  2. 运行cordova prepare android
  3. 然后,您只需在添加新插件后运行脚本,而不是运行cordova prepare android

    修改

    我认为可能有更好的解决方法。

    您应该可以使用plugman来安装插件而不是cordova。

    首先,您需要安装plugman cli:npm install -g plugman

    然后使用

    安装插件
    plugman -d --platform android --project projectname --plugin nameorurlofplugin
    

    http://cordova.apache.org/docs/en/edge/plugin_ref_plugman.md.html

答案 2 :(得分:0)

我也有这些问题。

我现在使用的一种方法是:

修改平台文件夹中的index.htmlplatform/iOS/appname/www等等。然后使用cordova plugin add使用普通终端方式添加插件,但总是使用Xcode for iOS和eclipse运行项目,而不是从终端运行,因为这样你就会丢失代码。

根据我使用.xcodeproj或使用android项目运行时的经验,使用内部的www,如果您使用来自终端cordova run ios的{​​{1}}将覆盖平台文件夹中的www

如果你得到xcode错误,说找不到,那么插件文件只是将它们移动到xcode希望它们出错的错误路径。