科尔多瓦插件不工作科尔、插件、多瓦、工作

2023-09-07 04:26:52 作者:苹果你个爱破!

编辑澄清:的 的<名称> 你在下面的一些文件看是不是真正的文件的一部分,但它包括我必须审查公司名称

测试情况:

在科尔多瓦4 在OS X优胜美地 在Android 4.4系统的设备(加上USB) 在使用终端;不蚀

会发生什么情况: 使用科尔多瓦运行--release 成功生成并签署.apk文件和移动设备安装并打开它没有问题。但是,没有任何插件的工作。例如:

  title.on('点击',函数(){
        如果(!navigator.camera){
            警报(没有摄像头!');
        } 其他 {
            navigator.camera.getPicture(函数成功(数据){
            // 做一点事
            },功能错误(数据){});
        }
    });
 

总是提醒,没有摄像头,这意味着科尔多瓦没有一个相机对象添加到 window.navigator 对象。

下面是我的科尔多瓦安装和一些XML文件的一些信息,据我可以告诉什么期待的地方。需要注意的是它不只是不工作,我只是用它作为一个例子摄像头。

科尔多瓦信息:

 节点版本:v0.10.29

科尔多瓦版本:4.0.1-nightly.2014.9.29

config.xml文件:

< XML版本=1.0编码=UTF-8&GT?;
<微件ID =COM<名称> .APP。版本=0.0.1的xmlns =htt​​p://www.w3.org/ns/widgets的xmlns:CDV =HTTP://科尔多瓦。 apache.org/ns/1.0">
    <名称><名称>迷你< /名称>
    <描述>
        德<名称>应用程序VOOR济telefoon
    < /描述>
    <作者电子邮件=斯蒂芬@<名称> .NL的href =htt​​ps://开头<名称> .NL>
        HET<名称>球队
    < /笔者>
    <内容SRC =的index.html/>
    <获得原产地=*/>
    < preference名=闪屏的价值=屏幕/>
    < preference名=SplashScreenDelay值=2000/>
< /部件>


插件:

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平台:

可用的Andr​​oid的目标:
----------
ID:1或机器人-19
     产品名称:安卓4.4.2
     类型:平台
     API等级:19
     修订:4
     皮肤:HVGA,QVGA,WQVGA400,WQVGA432,WSVGA,WVGA800(默认),WVGA854,WXGA720,WXGA800,WXGA800-7in
 标签/ ABI的:默认/ armeabi-V7A,默认/ 86
 

科尔多瓦/ config.xml中

 < XML版本=1.0编码=UTF-8&GT?;
<微件ID =COM<名称> .APP。版本=0.0.1的xmlns =htt​​p://www.w3.org/ns/widgets的xmlns:CDV =HTTP://科尔多瓦。 apache.org/ns/1.0">
    <名称><名称>迷你< /名称>
    <描述>
        德<名称>应用程序VOOR济telefoon
    < /描述>
    <作者电子邮件=斯蒂芬@<名称> .NL的href =htt​​ps://开头<名称> .NL>
        HET<名称>球队
    < /笔者>
    <内容SRC =的index.html/>
    <获得原产地=*/>
    < preference名=闪屏的价值=屏幕/>
    < preference名=SplashScreenDelay值=2000/>
< /部件>
 
最佳居留权项目花落葡萄牙,移民西班牙前景好

科尔多瓦/平台/安卓/ AndroidManifest.xml中 <

  XML版本=1.0编码=UTF-8&GT?;
<舱单安卓hardwareAccelerated =真的Andr​​oid版本:版本code =1机器人:VERSIONNAME =0.0.1包=com.kaartje2go.App的xmlns:机器人=HTTP://模式。 android.com/apk/res/android">
    <支持屏安卓anyDensity =真正的机器人:largeScreens =真正的机器人:normalScreens =真正的机器人:调整大小=真正的机器人:smallScreens =真正的机器人:xlargeScreens =真/>
    <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
    <应用的Andr​​oid版本:hardwareAccelerated =真正的机器人:图标=@可绘制/图标机器人:标签=@字符串/ APP_NAME>
        <活动机器人:configChanges =定位| keyboardHidden |键盘|屏幕尺寸|语言环境机器人:标签=@字符串/ ACTIVITY_NAME机器人:launchMode =singleTop机器人:NAME =CordovaApp安卓主题=@机器人:款式/ Theme.Black.NoTitleBar机器人:windowSoftInputMode =adjustResize>
            <意图过滤器的Andr​​oid版本:标签=@字符串/ launcher_name>
                <作用机器人:名称=android.intent.action.MAIN/>
                <类机器人:名称=android.intent.category.LAUNCHER/>
            &所述; /意图滤光器>
        < /活性GT;
    < /用途>
    <使用-SDK安卓的minSdkVersion =10机器人:targetSdkVersion =19/>
    <使用-权限的Andr​​oid:名称=android.permission.WRITE_EXTERNAL_STORAG​​E/>
    <使用-权限的Andr​​oid:名称=android.permission.RECORD_AUDIO/>
    <使用-权限的Andr​​oid:名称=android.permission.MODIFY_AUDIO_SETTINGS/>
    <使用-权限的Andr​​oid:名称=android.permission.READ_PHONE_STATE/>
    <使用-权限的Andr​​oid:名称=android.permission.RECORD_VIDEO/>
    <使用-权限的Andr​​oid:名称=android.permission.VIBRATE/>
< /舱单>
 

科尔多瓦/平台/安卓/ RES / XML / config.xml中

 < XML版本=1.0编码=UTF-8&GT?;
<微件ID =COM<名称> .APP。版本=0.0.1的xmlns =htt​​p://www.w3.org/ns/widgets的xmlns:CDV =HTTP://科尔多瓦。 apache.org/ns/1.0">
    < preference名=日志级别值=DEBUG/>
    <功能名称=相机>
        < PARAM NAME =Android的包值=org.apache.cordova.camera.CameraLauncher/>
    < /功能>
    <功能名称=通知>
        < PARAM NAME =Android的包值=org.apache.cordova.dialogs.Notification/>
    < /功能>
    <功能名称=文件>
        < PARAM NAME =Android的包值=org.apache.cordova.file.FileUtils/>
        < PARAM NAME =的onload值=真/>
    < /功能>
    <功能名称=文件传输>
        < PARAM NAME =Android的包值=org.apache.cordova.filetransfer.FileTransfer/>
    < /功能>
    <功能名称=媒体>
        < PARAM NAME =Android的包值=org.apache.cordova.media.AudioHandler/>
    < /功能>
    <功能名称=捕捉>
        < PARAM NAME =Android的包值=org.apache.cordova.mediacapture.Capture/>
    < /功能>
    <功能名称=闪屏>
        < PARAM NAME =Android的包值=org.apache.cordova.splashscreen.SplashScreen/>
    < /功能>
    <功能名称=振动>
        < PARAM NAME =Android的包值=org.apache.cordova.vibration.Vibration/>
    < /功能>
    <名称><名称>迷你< /名称>
    <描述>
        德<名称>应用程序VOOR济telefoon
    < /描述>
    <作者电子邮件=斯蒂芬@<名称> .NL的href =htt​​ps://开头<名称> .NL>
        HET<名称>球队
    < /笔者>
    <内容SRC =的index.html/>
    <获得原产地=*/>
    < preference名=闪屏的价值=屏幕/>
    < preference名=SplashScreenDelay值=2000/>
< /部件>
 

解决方案

清单:?是你的插件加载

index.html的加载 cordova.js 脚本? (也就是说,如果你有 WWW / index.html的那么你可以参考 cordova.js ,这个文件是不是在在 WWW 目录,但自动生成的科尔多瓦在你的应用程序插入) 是插件的JavaScript加载?使用Chrome或Safari浏览器远程调试你的android / iOS的应用程序。 科尔多瓦插件LS :?是您的插件列 插件/ android.json :?是您的插件列 确实平台/安卓/资产/ WWW 拥有的所有文件? (即插件文件夹中的脚本, cordova_plugins.js 应提及你的插件,特定于平台的 cordova.js

您可以收听 deviceready 事件,以检查是否科尔多瓦初始化呢? (如果所有的脚本到位)

Edit for clarification: The <name> you see in some of the files below is not actually part of the files, but it includes the company name which I had to censor.

Test situation:

Cordova 4 OS X Yosemite Android 4.4 device (coupled with USB) Using Terminal; not Eclipse

What happens: Using cordova run --release successfully builds and signs the .apk and the mobile device installs and opens it without issues. But, none of the plugins work. For example:

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

Always alerts that there is no camera, which means Cordova did not add a camera object to the window.navigator object.

Below is some information about my cordova installation and some xml files, as far as I can tell nothing looks out of place. Note that it is not just the camera that does not work, I just used it as an example.

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="stephan@<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="stephan@<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/platforms/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="stephan@<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>

解决方案

Checklist: Is your plugin loaded?

Does your index.html load the cordova.js script? (i.e. if you have www/index.html then you can just reference cordova.js. This file is not in the www directory, but automatically generated by Cordova and inserted in your app) Is the plugin javascript loaded? Use Chrome or Safari to remote debug your android/iOS app. cordova plugin ls: Is your plugin listed? plugins/android.json: Is your plugin listed? Does platforms/android/assets/www have all files? (i.e. a plugins folder with scripts, cordova_plugins.js should mention your plugin, a platform-specific cordova.js)

Can you listen to the deviceready event to check if Cordova initializes at all? (If all scripts are in place)