2014-10-30 267 views
12

編輯澄清: <name>你在一些文件看下面是不是真正的文件的一部分,但它包括我不得不審查的公司名稱。科爾多瓦插件不工作

測試情況:

  • 科爾多瓦4
  • OS X約塞米蒂
  • Android 4.4的設備(加上USB)
  • 使用終端;不蝕

會發生什麼: 使用cordova run --release成功生成和體徵.apk文件和移動設備安裝並打開它沒有問題。但是,沒有一個插件可以工作。例如:

title.on('click', function() { 
     if (!navigator.camera) { 
      alert('no camera!'); 
     } else { 
      navigator.camera.getPicture(function success(data) { 
      // do something 
      }, function error(data) {}); 
     } 
    }); 

始終提醒,沒有攝像頭,這意味着科爾多瓦沒有一個camera對象添加到window.navigator對象。

以下是關於我的cordova安裝和一些xml文件的一些信息,據我所知,沒有什麼看起來不合適。請注意,這不僅僅是相機不起作用,我只是用它作爲例子。

科爾多瓦信息:

Node version: v0.10.29 

Cordova version: 4.0.1-nightly.2014.9.29 

Config.xml file: 

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.<name>.App" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name><name> Mini</name> 
    <description> 
     De <name> app voor je telefoon 
    </description> 
    <author email="[email protected]<name>.nl" href="https://<name>.nl"> 
     Het <name> Team 
    </author> 
    <content src="index.html" /> 
    <access origin="*" /> 
    <preference name="SplashScreen" value="screen" /> 
    <preference name="SplashScreenDelay" value="2000" /> 
</widget> 


Plugins: 

org.apache.cordova.camera,org.apache.cordova.dialogs,org.apache.cordova.file,org.apache.cordova.file-transfer,org.apache.cordova.media,org.apache.cordova.media-capture,org.apache.cordova.splashscreen,org.apache.cordova.vibration 

Android platform: 

Available Android targets: 
---------- 
id: 1 or "android-19" 
    Name: Android 4.4.2 
    Type: Platform 
    API level: 19 
    Revision: 4 
    Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in 
Tag/ABIs : default/armeabi-v7a, default/x86 

科爾多瓦/ config.xml中

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.<name>.App" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name><name> Mini</name> 
    <description> 
     De <name> app voor je telefoon 
    </description> 
    <author email="[email protected]<name>.nl" href="https://<name>.nl"> 
     Het <name> Team 
    </author> 
    <content src="index.html" /> 
    <access origin="*" /> 
    <preference name="SplashScreen" value="screen" /> 
    <preference name="SplashScreenDelay" value="2000" /> 
</widget> 

科爾多瓦/平臺/安卓/ AndroidManifest.xml中 <

?xml version='1.0' encoding='utf-8'?> 
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.kaartje2go.App" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="CordovaApp" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize"> 
      <intent-filter android:label="@string/launcher_name"> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.RECORD_VIDEO" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
</manifest> 

科爾多瓦/平臺/安卓/ res/xml/config.xml

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.<name>.App" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <preference name="loglevel" value="DEBUG" /> 
    <feature name="Camera"> 
     <param name="android-package" value="org.apache.cordova.camera.CameraLauncher" /> 
    </feature> 
    <feature name="Notification"> 
     <param name="android-package" value="org.apache.cordova.dialogs.Notification" /> 
    </feature> 
    <feature name="File"> 
     <param name="android-package" value="org.apache.cordova.file.FileUtils" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="FileTransfer"> 
     <param name="android-package" value="org.apache.cordova.filetransfer.FileTransfer" /> 
    </feature> 
    <feature name="Media"> 
     <param name="android-package" value="org.apache.cordova.media.AudioHandler" /> 
    </feature> 
    <feature name="Capture"> 
     <param name="android-package" value="org.apache.cordova.mediacapture.Capture" /> 
    </feature> 
    <feature name="SplashScreen"> 
     <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" /> 
    </feature> 
    <feature name="Vibration"> 
     <param name="android-package" value="org.apache.cordova.vibration.Vibration" /> 
    </feature> 
    <name><name> Mini</name> 
    <description> 
     De <name> app voor je telefoon 
    </description> 
    <author email="[email protected]<name>.nl" href="https://<name>.nl"> 
     Het <name> Team 
    </author> 
    <content src="index.html" /> 
    <access origin="*" /> 
    <preference name="SplashScreen" value="screen" /> 
    <preference name="SplashScreenDelay" value="2000" /> 
</widget> 

回答

33

清單:您的插件是否已加載?

  • 請問您的index.html加載了cordova.js腳本嗎? (即如果你有www/index.html,那麼你可以只參考cordova.js。這個文件不在www目錄中,但是由Cordova自動生成並插入到你的應用中)
  • 插件JavaScript是否被加載?使用Chrome或Safari遠程調試您的android/iOS應用程序。
  • cordova plugin ls:您的插件是否已上市?
  • plugins/android.json:你的插件是否列出?
  • platforms/android/assets/www是否有所有文件? (即一個plugins文件夾的腳本,cordova_plugins.js要提到你的插件,特定於平臺的cordova.js

你可以聽deviceready事件,以檢查是否科爾多瓦初始化呢?(如果所有的腳本到位)

+3

這個人是冠軍。 我在科爾多瓦看到了很多較老的教程,他們很混亂,因爲它們都不同(科爾多瓦似乎改變了很多結構),我認爲'cordova.js'不需要再添加了,因爲我找不到它。我認爲它會在構建過程中自動添加。最後,那是事情。我在'index.html'中加入了'cordova.js',一切正常! – 2014-10-30 13:48:47

+1

這幫了我很多。拉着我的頭髮試圖找出爲什麼這不起作用! – Jason 2015-04-11 15:10:05

+0

我已經''科爾多瓦插件添加's,但我的'cordova插件ls'返回空白,我的插件文件夾是空的。任何想法爲什麼? – Roman 2015-07-16 08:10:53

1

如果你的插件不工作,你也可以嘗試以下步驟:

cordova plugin list; 
cordova plugin remove my-cordova-plugin --save; 
cordova plugin add my-cordova-plugin --nosave; 

另外要注意以下插件的依賴關係:

  1. filefile-transfercamera插件都依賴於compat插件;所以compat需要最後刪除。
  2. file-transfer插件依賴於file,所以需要先刪除file
相關問題