2017-01-09 10 views
0

カスタムプラグインを作成して追加するときに、Androidプラットフォーム用のCordovaビルドを作成できない。私が作成したフォルダ構造は次のとおりです。アプリケーションのビルド時にカスタムCordovaプラグインでエラーが発生する

TestPlugin 
-src 
--android 
---TestPlugin.java 
-www 
--TestPlugin.js 
plugin.xml 
project.json 

やファイルのそれぞれの内容は以下のとおりです。

TestPlugin.java

package com.test.plugin; 

import org.apache.cordova.CallbackContext; 
import org.apache.cordova.CordovaPlugin; 
import org.json.JSONArray; 
import org.json.JSONException; 

public class TestPlugin extends CordovaPlugin { 

    @Override 
    public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException { 
     if (action.equals("greet")) { 
      String name = data.getString(0); 
      String message = "Hello, " + name; 
      callbackContext.success(message); 

      return true; 
     } 
     else { 
      return false; 
     } 
    } 
} 

TestPlugin.js

module.exports = { 
    greet: function (name, successCallback, errorCallback) { 
     cordova.exec(successCallback, errorCallback, "TestPlugin", "greet", [name]); 
    } 
}; 

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.test.plugin" 
    version="1.0.0"> 
    <name>TestPlugin</name> 
    <description>This is a test</description> 
    <license>MIT</license> 

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

    <platform name="android"> 
     <config-file target="res/xml/config.xml" parent="/*"> 
      <feature name="TestPlugin"> 
       <param name="android-package" value="com.test.plugin" /> 
      </feature> 
     </config-file> 

     <source-file src="src/android/TestPlugin.java" target-dir="src/com/test/plugin/TestPlugin.java" /> 
    </platform> 
</plugin> 

package.json

{ 
    "name": "TestPlugin", 
    "version": "1.0.0", 
    "description": "TestPlugin", 
    "cordova": { 
    "platforms": [ 
     "android" 
    ] 
    }, 
    "keywords": [ 
    "cordova", 
    "test" 
    ], 
    "engines": [ 
    { 
     "name": "cordova-android", 
     "version": ">=4.0.0" 
    } 
    ], 
    "author": "Me", 
    "license": "Apache 2.0" 
} 

私は、コマンドプロンプトで "コルドバは、Androidの構築" を実行すると、それはすぐに次のエラーが返されます。

C:\inetpub\wwwroot\test\mobile>cordova build android 
shell.js: internal error 
Error: EISDIR: illegal operation on a directory, read 
    at Error (native) 
    at Object.fs.readSync (fs.js:603:19) 
    at Object.fs.readFileSync (fs.js:438:24) 
    at C:\inetpub\wwwroot\test\mobile\platforms\android\cordova\node_modules\shelljs\src\grep.js:41:23 
    at Array.forEach (native) 
    at Object._grep (C:\inetpub\wwwroot\test\mobile\platforms\android\cordova\node_modules\shelljs\src\grep.js:35:9) 
    at Object.grep (C:\inetpub\wwwroot\test\mobile\platforms\android\cordova\node_modules\shelljs\src\common.js:186:23) 
    at C:\inetpub\wwwroot\test\mobile\platforms\android\cordova\lib\prepare.js:196:22 
    at Array.filter (native) 
    at updateProjectAccordingTo (C:\inetpub\wwwroot\test\mobile\platforms\android\cordova\lib\prepare.js:195:44) 

これは完全な出力です。 Androidプラットフォームを削除して再追加しようとしましたが、同じエラーが発生します。カスタムプラグインを削除すると、ビルドは成功します。私はプラグマンを使ってプラグインを作成しようとしましたが、成功しませんでした。ターゲットAPIレベルは24です。

ご協力いただきありがとうございます。

答えて

0

さらに昨晩、この問題を解決した後、この問題の回答が見つかりました。 plugin.xmlのでは、ソース・ファイルのタグがターゲット-dir属性でファイル名を持つことが想定されていないので、このラインはから行く必要があります:削除

<source-file src="src/android/TestPlugin.java" target-dir="src/com/test/plugin/" /> 

と:

<source-file src="src/android/TestPlugin.java" target-dir="src/com/test/plugin/TestPlugin.java" /> 

へプラグインを追加してからビルドを作成すると、この後に正しく動作します。

関連する問題