2014-10-30 27 views
12

Sửa để làm rõ: Các <name> bạn nhìn thấy trong một số các tập tin dưới đây không thực sự là một phần của các tập tin, nhưng nó bao gồm các tên công ty mà tôi đã phải kiểm duyệt.Cordova plugin không làm việc

tình hình thử nghiệm:

  • Cordova 4
  • OS X Yosemite
  • Android 4.4 thiết bị (kết hợp với USB)
  • sử dụng Terminal; không Eclipse

gì xảy ra: Sử dụng cordova run --release xây dựng thành công và ký vào .apk và các thiết bị di động cài đặt và mở nó mà không có vấn đề. Tuy nhiên, không có plugin nào hoạt động. Ví dụ:

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

Luôn luôn cảnh báo rằng không có máy ảnh, có nghĩa Cordova không thêm một đối tượng camera đến đối tượng window.navigator.

Dưới đây là một số thông tin về cài đặt cordova của tôi và một số tệp xml, theo như tôi có thể nói không có gì trông ngoài tầm nhìn. Lưu ý rằng nó không chỉ là máy ảnh không hoạt động, tôi chỉ sử dụng nó làm ví dụ. Thông tin

Cordova:

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/nền tảng/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/nền tảng/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> 

Trả lời

33

Danh sách kiểm tra: Plugin của bạn đã được tải chưa?

  • Có phải index.html tải tập lệnh cordova.js của bạn không? (ví dụ: nếu bạn có www/index.html thì bạn chỉ có thể tham chiếu cordova.js. Tệp này không có trong thư mục www nhưng được tự động tạo bởi Cordova và được chèn vào ứng dụng của bạn)
  • Plugin javascript có được tải không? Sử dụng Chrome hoặc Safari để gỡ lỗi từ xa ứng dụng Android/iOS của bạn.
  • cordova plugin ls: Plugin của bạn có được liệt kê không?
  • plugins/android.json: Plugin của bạn có được liệt kê không?
  • platforms/android/assets/www có tất cả các tệp không? (Ví dụ: một thư mục plugins với kịch bản, cordova_plugins.js nên đề cập đến các plugin của bạn, một nền tảng cụ thể cordova.js)

Bạn có thể lắng nghe những sự kiện deviceready để kiểm tra xem Cordova khởi ở tất cả?(Nếu tất cả các kịch bản được đưa ra)

+3

Anh chàng này là một nhà vô địch. Tôi thấy rất nhiều hướng dẫn cũ hơn về Cordova và chúng gây nhầm lẫn vì chúng hoàn toàn khác nhau (Cordova dường như thay đổi cấu trúc khá nhiều) và tôi đã tìm ra 'cordova.js' không cần phải thêm nữa, như tôi không thể tìm thấy nó. Tôi cho rằng nó sẽ tự động được thêm vào trong quá trình xây dựng. Cuối cùng, đó là điều. Tôi đã thêm 'cordova.js' vào' index.html' và mọi thứ đều hoạt động! –

+1

Điều này đã giúp tôi rất nhiều. Đã kéo tóc của tôi ra cố gắng tìm ra lý do tại sao điều này không hoạt động! – Jason

+0

Tôi đã thêm plugin 'cordova ' s, nhưng plugin 'cordova plugin ls' của tôi trả về trống và thư mục plugin của tôi trống rỗng. Bất kỳ ý tưởng tại sao? – Roman

1

Nếu plugin của bạn không làm việc bạn cũng có thể thử các bước sau:

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

Cũng lưu ý các phụ thuộc Plugin sau:

  1. Các file , file-transfer và các plugin camera đều phụ thuộc vào plugin compat; vì vậy, compat cần được xóa trước.
  2. Plugin file-transfer phụ thuộc vào file, do đó, file cần phải được xóa trước tiên.
Các vấn đề liên quan