Подтвердить что ты не робот

Плагины Кордовы не работают

Изменить для уточнения: <name>, который вы видите в некоторых из приведенных ниже файлов, на самом деле не является частью файлов, но включает имя компании, которое мне пришлось подвергать цензуре.

Тестовая ситуация:

  • Кордова 4
  • OS X Yosemite
  • Устройство Android 4.4 (в сочетании с USB)
  • Использование терминала; не Eclipse

Что происходит: Использование 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="#" onclick="location.href='https://<name>.nl'; return false;">
        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="#" onclick="location.href='https://<name>.nl'; return false;">
        Het <name> Team
    </author>
    <content src="index.html" />
    <access origin="*" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="2000" />
</widget>

Cordova/платформы/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/платформы/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="#" onclick="location.href='https://<name>.nl'; return false;">
        Het <name> Team
    </author>
    <content src="index.html" />
    <access origin="*" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="2000" />
</widget>
4b9b3361

Ответ 1

Контрольный список: загружен ли ваш плагин?

  • Загружает ли index.html cordova.js script? (т.е. если у вас есть www/index.html, вы можете просто ссылаться на cordova.js. Этот файл не находится в каталоге www, но автоматически генерируется Кордовой и вставлен в ваше приложение)
  • Загружен ли javascript плагина? Используйте Chrome или Safari для удаленного отладки вашего приложения android/iOS.
  • cordova plugin ls: Включен ли ваш плагин?
  • plugins/android.json: отображается ли ваш плагин?
  • Имеет ли platforms/android/assets/www все файлы? (т.е. папка plugins со сценариями, cordova_plugins.js должен указать ваш плагин, специфичный для платформы cordova.js)

Вы можете прослушать событие deviceready, чтобы проверить, не инициализируется ли вообще Кордова? (Если все скрипты на месте)

Ответ 2

Если ваши плагины не работают, вы также можете выполнить следующие действия:

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

Также помните о следующих зависимостях плагина:

  • Плагины file, file-transfer и camera зависят от плагина compat; поэтому compat нужно удалить последним.
  • Плагин file-transfer зависит от file, поэтому file нужно удалить сначала.

Ответ 3

Сегодня я узнал еще одну причину, по которой это может сломаться: убедитесь, что в вашем проекте нет второго файла с именем cordova.js, где бы он ни cordova.js. Если управление плагином cordova находит такой файл, включенный в качестве тега, оно может ошибочно предположить, что базовый путь вашего собственного файла является базовым путем Cordovas cordova.js и использовать его в качестве базового пути для загрузки своих собственных файлов JS.

Ответ 4

Hiiii Pleassseee помогите мне, моя проблема в том, что когда я хочу загрузить изображение и нажать на кнопку, появится всплывающее окно с вопросом, хочу ли я разрешить приложению разрешить доступ к файлам, так что сначала я устанавливаю приложение для загрузки файла не работает должным образом, потому что, если я пытаюсь открыть файл (не поддерживается и размер 0), и если я закрываю приложение и повторно открываю его, загрузка успешно завершается, поэтому я связал свой prblm с авторизацией плагинов cordova