2014-10-30 22 views
12

Modifica di chiarimenti: Il <name> che si vede in alcuni dei file di seguito non è in realtà parte dei file, ma include il nome della società, che ho dovuto censurare.Cordova plugin non lavorano

situazione di prova:

  • Cordova Yosemite
  • dispositivo 4
  • OS X Android 4.4 (accoppiato con USB)
  • Uso del Terminale; Non Eclipse

cosa succede: Utilizzando cordova run --release costruisce con successo e segni l'.apk e il dispositivo mobile installa e si apre senza problemi. Ma nessuno dei plug-in funziona. Per esempio:

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

Allerte sempre che non v'è nessuna telecamera, il che significa che Cordova non ha aggiunto un oggetto camera all'oggetto window.navigator.

seguito alcune informazioni sulla mia installazione Cordova e alcuni file XML, per quanto posso dire nulla sembra fuori posto. Si noti che non è solo la fotocamera che non funziona, l'ho solo usata come esempio.

Cordova informazioni:

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

risposta

33

Lista di controllo: è il plugin caricato?

  • Il vostro index.html caricare lo script cordova.js? (Vale a dire se si dispone di www/index.html allora si può solo fare riferimento cordova.js. Questo file non è nella directory www, ma automaticamente generato da Cordova e inserito nel vostro app)
  • è il plugin JavaScript caricato? Utilizza Chrome o Safari per eseguire il debug remoto della tua app Android/iOS.
  • cordova plugin ls: Il tuo plug-in è elencato?
  • plugins/android.json: Il plug-in è elencato?
  • platforms/android/assets/www contiene tutti i file? (Vale a dire una cartella plugins con gli script, cordova_plugins.js dovrebbe indicare il vostro plug-in, uno specifico per la piattaforma cordova.js)

Puoi ascoltare l'evento deviceready per verificare se Cordova inizializza a tutti?(Se tutti gli script sono a posto)

+3

Questo ragazzo è un campione. Ho visto molti tutorial più vecchi su Cordova e sono stati confusi perché sono tutti diversi (Cordova sembra cambiare molto struttura) e ho pensato che 'cordova.js' non ha bisogno di essere aggiunto più, come ho non riuscivo a trovarlo Ho pensato che sarebbe stato aggiunto automaticamente durante il processo di compilazione. Alla fine, quella era la cosa. Ho aggiunto 'cordova.js' al mio' index.html' e tutto funziona! –

+1

Questo mi ha aiutato molto. Mi stavo strappando i capelli cercando di capire perché non funzionava! – Jason

+0

Ho 'cordova plugin add ' s, ma il mio 'plugin cordova ls' ritorna in modo vago, e la mia cartella plugin è vuota. Qualche idea perché? – Roman

1

Se i plug-in non si lavora può anche provare questi passaggi:

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

anche essere consapevoli dei seguenti dipendenze del plugin:

  1. Il file , I plugin file-transfer e camera dipendono tutti dal plug-in compat; quindi compat deve essere rimosso per ultimo.
  2. Il plug-in file-transfer dipende da file, pertanto è necessario rimuovere prima file.
Problemi correlati