【问题标题】:PhoneGap - custom plugin not working with PhoneGap BuildPhoneGap - 自定义插件不适用于 PhoneGap Build
【发布时间】:2014-09-23 22:18:26
【问题描述】:

我正在尝试创建一个插件并将其添加到我的 Cordova 应用程序。此时插件所做的只是返回一个警告框和一个带有一些文本的回调上下文。当我通过 CLI 使用“cordova run android”构建应用程序时,我可以成功调用插件并返回文本,但是当我通过 PhoneGap Build 将应用程序转换为 APK 时,插件不再工作。有谁知道为什么会这样?我已经广泛阅读了 Cordova 和 PhoneGap 文档,并使用了已发布的 PhoneGap 插件中的代码作为指南,但似乎无法弄清楚这一点。

非常感谢任何帮助。

plugin.xml:

<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="com.assettagz.cordova.plugin.scan"
version="1.0.0">

<js-module src="www/Scan.js" name="Scan">
    <clobbers target="scan" />
</js-module>

<!-- android -->
<platform name="android">
    <config-file target="res/xml/config.xml" parent="/*">
        <feature name="Scan" >
            <param name="android-package" value="com.assettagz.cordova.plugin.scan.Scan"/>
        </feature>
    </config-file>

    <source-file src="src/android/Scan.java" target-dir="src/com/assettagz/cordova/plugin/scan" />
</platform>

插件 Javascript 文件:

var exec = require('cordova/exec');

var Scan =
{
read : function( success, error )
{
    exec(success, error, "Scan", "read", [])
}
}

module.exports = Scan;

插件 Java 文件:

package com.assettagz.cordova.plugin.scan;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Message;
import android.util.Log;


public class Scan extends CordovaPlugin {

private CallbackContext callbackContext;

/**
 * Constructor.
 */
public Scan() {

}

@Override
public boolean execute (String action, JSONArray args, CallbackContext callbackContext) throws JSONException
{

    if( action.equals("read") )
    {

        AlertDialog.Builder builder1 = new AlertDialog.Builder(cordova.getActivity());
        builder1.setMessage("success");
        AlertDialog alert11 = builder1.create();
        alert11.show();

        this.callbackContext = callbackContext;
        callbackContext.success("success");

        return true;
    }
    return false;
}

index.html:

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title></title>
<link rel="stylesheet"  href="vendors/jquery.mobile/jquery.mobile-1.4.3.min.css">
<link rel="stylesheet" href="css.css" />
<script src="vendors/jquery/jquery.js"></script>
<script src="vendors/jquery.mobile/jquery.mobile-1.4.3.min.js"></script>
<script src="vendors/angular.js"></script>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>  
<script>
    function fireItUp() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

    function onDeviceReady() {            
        jQuery(input).bind('tap',function(event){
            callScan();
        });
    }

    var success = function(status) {
        alert('Message: ' + status);
    }

    var error = function(status) {
        alert('Error: ' + status);
    }

    function callScan(){
        scan.read( success, error );
    }
    </script>
</head>

<body onload="fireItUp()">
    <button class="ui-btn ui-corner-all ui-btn-b" onclick="callScan();">Scan</button>
</body>

【问题讨论】:

    标签: cordova plugins


    【解决方案1】:

    您不能在 PhoneGap Build 上使用自定义插件,除非您将插件提交给 PhoneGap Build 并获得他们的批准。通过这样做,您的插件将被添加到可用插件的第三方部分。目前无法使用 PhoneGap Build 添加私有自定义插件

    【讨论】:

    • 嗯,这就解释了......你知道是否可以通过cordova CLI添加自定义插件并从那里创建apk?我能弄明白,只是想知道你是否知道这是否可能。
    • cordova build android 将在{proj_dir}/platforms/android/bin 中生成一个APK
    猜你喜欢
    • 1970-01-01
    • 2014-10-02
    • 2018-04-28
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多