2014-10-30 10 views
12

Bearbeiten zur Klärung arbeiten: Die <name> Sie in einigen der Dateien unten sehen, ist nicht wirklich Teil der Dateien, aber es enthält den Firmennamen, die ich zensieren musste.Cordova Plugins nicht

Testsituation:

  • Cordova 4
  • OS X Yosemite
  • Android 4.4 Gerät (gekoppelt mit USB)
  • Terminal; Eclipse-nicht

Was geschieht: Mit cordova run --release erfolgreich erstellt und Zeichen der APK und das mobile Gerät installiert und öffnet es ohne Probleme. Aber, keines der Plugins funktioniert. Zum Beispiel:

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

warnt immer, dass es keine Kamera, was bedeutet, Cordova hat ein camera Objekt das window.navigator Objekt nicht hinzufügen.

Unten finden Sie einige Informationen über meine Cordova-Installation und einige XML-Dateien, soweit ich feststellen kann, dass nichts fehl am Platz aussieht. Beachten Sie, dass es nicht nur die Kamera ist, die nicht funktioniert, ich habe es nur als Beispiel verwendet.

Cordova Info:

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 

cordova/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> 

cordova/platforms/android/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> 

cordova/Plattformen/android/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> 

Antwort

33

Checkliste: Ist Ihr Plugin geladen?

  • Lädt Ihr index.html das cordova.js Skript? (d. h. wenn Sie www/index.html dann können Sie nur Referenz cordova.js. Diese Datei ist nicht in der www Verzeichnis, aber automatisch von Cordova generiert und in Ihrer App eingefügt)
  • Ist das Plugin Javascript geladen? Verwenden Sie Chrome oder Safari, um Ihre Android-/iOS-App remote zu debuggen.
  • cordova plugin ls: Ist Ihr Plugin aufgeführt?
  • plugins/android.json: Ist Ihr Plugin aufgeführt?
  • Hat platforms/android/assets/www alle Dateien? (Das heißt ein plugins Ordner mit Skripten, sollte cordova_plugins.js Plugin erwähnen, eine plattformspezifische cordova.js)

Können Sie hören auf die deviceready Ereignis zu überprüfen, ob Cordova überhaupt initialisiert?(Wenn alle Skripte vorhanden sind)

+3

Dieser Typ ist ein Champion. Ich sah viele ältere Tutorials auf Cordova und sie waren verwirrend, da sie alle verschieden sind (Cordova scheint die Struktur ziemlich stark zu ändern) und ich dachte, dass 'cordova.js' nicht mehr hinzugefügt werden musste, wie ich konnte es nicht finden. Ich nahm an, dass es während des Build-Prozesses automatisch hinzugefügt würde. Am Ende war das die Sache. Ich habe 'cordova.js' zu meiner' index.html' hinzugefügt und alles funktioniert! –

+1

Das hat mir sehr geholfen. Zog mir die Haare aus und versuchte herauszufinden, warum das nicht funktionierte! – Jason

+0

Ich habe 'cordova plugin add ' s, aber mein 'cordova plugin ls' kehrt leer zurück, und mein plugins Ordner ist leer. Irgendeine Idee warum? – Roman

1

Wenn Ihre Plugins nicht funktionieren können auch diese Schritte versuchen:

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

auch bewusst sein, die folgenden Plugin-Abhängigkeiten:

  1. Die file , file-transfer und camera Plugins sind alle abhängig von dem compat Plugin; so muss compat zuletzt entfernt werden.
  2. Das file-transfer Plugin ist abhängig von file, daher muss zuerst file entfernt werden.
Verwandte Themen