6. Cordova多平台运行

作者: 世外大帝 | 来源:发表于2017-05-23 16:46 被阅读23次

    前言

    • 引入jQuery

    下午折腾了半天,还以为Cordova的jQuery是通过插件的方式搞的,结果还重置了好几次,5点多突然发现,尼玛,完全可以下载到本地直接调的。

    • cordova build会重置代码

    这也是个坑,根据官方文档,cordova build是构建工程的,cordova run是运行工程的,而 cordova run可以直接合并前面两项的,但是有个问题,我在android中写好了代码,一旦通过命令行build或者run,尼玛,居然把老子的代码直接重置了???!!!研究再三,我发现了一个问题:我一直在android下写,而Cordova是全局运行的!

    构建多平台插件

    为何会重置

    简单的说,就是我在AS中编写的是android项目,而运行命令是在root目录,但是root目录的www并没有被更新,所以新项目直接根据root目录的config.xml进行更新,把root的www更新到platforms下的平台,于是我已经在AS上写好的代码就被置空了...

    从上面的就能看出,多平台最终还是要在root中分配到各个平台运行的,那自己写的插件怎么搞呢?这里可看一下之前已经下载好的,然后根据他的模板自己改改。

    结构介绍

    • 文件 root 结构

    这是一个file插件的结构,我们不写那么复杂的,官网上直说最重要的是plugin.xml,google出来的结果也都没有提到package.json,但是我这里提示需要一个有效的package.json,后来经过实践,是特么Cordova版本的问题,我用的7.0,但是官网并没有更新,所以没有参照,让一个朋友用5.4安装的是没问题的。


    文件插件结构
    • src目录

    我也没打算支持那么多平台,就暂时先创建个android的


    src目录
    • 复制文件到对应的文件夹
      • java源文件到android(OC文件到ios)
      • js文件到www
      • 修改js文件,只保留方法函数,不需要定义
    • 创建配置文件

    修改后的文件

    //修改后的js文件
    var exec = require("cordova/exec");
    module.exports = {
        show: function(content){
            exec(
            function(message){//成功回调function
                console.log(message);
            },
            function(message){//失败回调function
                console.log(message);
            },
            "MyToast",//feature name
            "show",//action
            [content]//要传递的参数,json格式
            );
        },
        dialog: function(content){
            exec(
            function(message){
                console.log(message);
            },
            function(message){
                console.log(message);
            },
            "MyToast",
            "dialog",
            [content]
            );
        }
    }
    

    编写plugin.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- this id is cordova_plugins.js's id -->
    <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
        id="cordova-plugin-dialog" version="0.0.1">
        <name>ToastPlugin</name>
        <description>show toast and dialog</description>
        <!-- installed path : plugins/cordova-plugin-dialog/src -->
        <js-module name="ToastPlugin" src="www/ToastPlugin.js">
        <!-- assets/cordova_plugins.js's clobbers -->
            <clobbers target="dialog"/>
        </js-module>
        <!-- add platform -->
        <platform name="android">
            <config-file parent="/*" target="res/xml/config.xml">
            <!-- the feature will be copied to the config.xml-->
            <feature name="MyToast">
                <param name="android-package" value="com.jty.app.plugin.ToastPlugin"/>
            </feature>
            </config-file>
            <!-- src for the local file,target for the installed path -->
            <source-file src="src/android/ToastPlugin.java" target-dir="src/com/jty/app/plugin"/>
        </platform>
    <!--     <platform name="ios">
            this is ios platforms,if you need other platforms,refer to this format please!
        </platform> -->
    </plugin>
    

    应用插件

    在此之前,最好别尝试clean,build,run之类的,随便一个就让代码全清空了!!!接下来就按照添加API插件一样添加到项目中即可

    cordova plugins add <插件包路径>

    再提醒一下,不要升级7.0

    • 5.4版本


      安装成功
    • 升级7.0后


      升级后

    好了,现在就可以正常使用了,修改好代码直接build也没问题了

    项目地址

    https://github.com/seeways/ToastPlugin

    相关文章

      网友评论

        本文标题:6. Cordova多平台运行

        本文链接:https://www.haomeiwen.com/subject/agzwxxtx.html