2014-10-30 7 views
12

संपादित प्लगइन्स: <name> आप फ़ाइलों में से कुछ में देख नीचे वास्तव में फ़ाइलों का हिस्सा नहीं है, लेकिन यह कंपनी का नाम है जो मुझे सेंसर करने के लिए किया था भी शामिल है।Cordova स्पष्टीकरण के लिए काम नहीं कर रहा

टेस्ट स्थिति:

  • Cordova 4
  • OS X Yosemite
  • Android 4.4 डिवाइस (यूएसबी के साथ मिलकर)
  • टर्मिनल का उपयोग करना;

नहीं ग्रहण क्या होता है: का उपयोग 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) {}); 
     } 
    }); 

हमेशा अलर्ट कोई कैमरा, कॉर्डोबा window.navigator ऑब्जेक्ट में एक camera वस्तु नहीं जोड़ा था, जिसका मतलब है कि नहीं है।

नीचे मेरे कॉर्डोवा इंस्टॉलेशन और कुछ एक्सएमएल फाइलों के बारे में कुछ जानकारी है, जहां तक ​​मैं कुछ भी नहीं कह सकता हूं। ध्यान दें कि यह सिर्फ वह कैमरा नहीं है जो काम नहीं करता है, मैंने अभी इसे एक उदाहरण के रूप में उपयोग किया है।

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 

कॉर्डोबा/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.htmlcordova.js स्क्रिप्ट लोड करते हैं? (यानी यदि आपके पास www/index.html है तो आप केवल cordova.js का संदर्भ दे सकते हैं। यह फ़ाइल www निर्देशिका में नहीं है, लेकिन स्वचालित रूप से कॉर्डोवा द्वारा उत्पन्न की गई है और आपके ऐप में डाली गई है)
  • प्लगइन जावास्क्रिप्ट लोड है? अपने एंड्रॉइड/आईओएस ऐप रिमोट डीबग करने के लिए क्रोम या सफारी का प्रयोग करें।
  • cordova plugin ls: क्या आपकी प्लगइन सूचीबद्ध है?
  • plugins/android.json: क्या आपकी प्लगइन सूचीबद्ध है?
  • क्या platforms/android/assets/www में सभी फाइलें हैं? (स्क्रिप्ट के साथ अर्थात एक plugins फ़ोल्डर, cordova_plugins.js अपने प्लगइन का उल्लेख करना चाहिए, एक प्लेटफ़ॉर्म-विशिष्ट cordova.js)

आप अगर Cordova बिल्कुल initializes जाँच करने के लिए deviceready घटना को सुनने के कर सकते हैं?

+3

यह लड़का एक चैंप है। मैंने कॉर्डोवा पर कई पुराने ट्यूटोरियल देखे और वे उलझन में थे क्योंकि वे सभी अलग हैं (कॉर्डोवा संरचना को बहुत बदलता प्रतीत होता है) और मुझे लगा कि 'cordova.js' को अब और जोड़ने की आवश्यकता नहीं है, क्योंकि मैं इसे नहीं मिला मुझे लगता है कि यह स्वचालित रूप से निर्माण प्रक्रिया के दौरान जोड़ा जाएगा। अंत में, यह बात थी। मैंने 'cordova.js' को अपने' index.html' में जोड़ा और सबकुछ काम करता है! –

+1

इससे मुझे बहुत मदद मिली। यह पता लगाने की कोशिश कर रहा था कि यह क्यों काम नहीं कर रहा था! – Jason

+0

मेरे पास 'cordova प्लगइन है, लेकिन मेरा' कॉर्डोवा प्लगइन ls' खाली हो जाता है, और मेरे प्लगइन्स फ़ोल्डर खाली है। कोई विचार क्यों? – Roman

1

(सभी लिपियों जगह में हैं, तो) अपने प्लग-इन आप काम नहीं करते हैं इन चरणों को भी आजमा सकते हैं:

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

इसके अलावा निम्नलिखित प्लगइन निर्भरता के बारे में पता होना:

  1. file , file-transfer, और camera प्लगइन्स compat प्लगइन पर निर्भर हैं; इसलिए compat को अंतिम रूप से हटाया जाना चाहिए।
  2. file-transfer प्लगइन file पर निर्भर है, इसलिए file को पहले हटाने की आवश्यकता है।
संबंधित मुद्दे