讓我從一些上下文開始。我有一個Java文件和一個.jar庫,其中包含一個帶有Activity,其佈局和另一個jar庫的Android項目。當然,我也有我的插件的JavaScript界面。換句話說,這是我有:Phonegap 3插件導致構建錯誤或插件未初始化
plugins/com.phonegap.example.activity.plugin/www/myplugin.js
plugins/com.phonegap.example.activity.plugin/src/android/MyPlugin.java
plugins/com.phonegap.example.activity.plugin/src/android/libs/myJar.jar
plugins/plugin.xml
我的插件應該我MyPlugin.java內執行的方法文件,它應該然後啓動這就是myJar.jar內的活動文件。 這個插件的plugin.xml中寫道:
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
id="com.phonegap.example.activity.plugin"
version="0.1.0">
<name>MyPlugin</name>
<description>Launch an Android Activity from PhoneGap 3</description>
<author>Author</author>
<license>MIT</license>
<keywords>phonegap,activity</keywords>
<js-module src="www/myplugin.js" name="MyPlugin">
<clobbers target="window.MyPlugin" />
</js-module>
<!-- android -->
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="MyPlugin">
<param name="android-package" value="com.phonegap.example.activity.plugin"/>
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<activity
android:name="com.phonegap.example.activity.ExampleActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.phonegap.example.action.EXAMPLE" />
</intent-filter>
</activity>
</config-file>
<source-file src="src/android/MyPlugin.java" target-dir="src/com/phonegap/example/activity" />
<source-file src="src/android/libs/myJar.jar" target-dir="libs" />
</platform>
</plugin>
我一直在使用npm install
安裝的PhoneGap 3.3和3.4科爾多瓦,我有紅寶石2.0.0安裝好。我跑這一切在Mac OS X.
走上問題:
- 我創建了一個PhoneGap的應用程序來測試這個插件(
phonegap create TestApp
) - 我添加了Android平臺(
cordova platform add android
) - 我逃離我的新創建的應用程序內
phonegap local plugin add /path/to/plugin/folder
我跑
phonegap build android
和編譯失敗,出現以下錯誤:[error]構建android項目時發生錯誤。執行「ant debug -f」/path/to/TestApp/platforms/android/build.xml「」時出錯:「 BUILD FAIL /path/to/ant/build.xml:720:執行此行時發生以下錯誤: /path/to/ant/build.xml:734:編譯失敗;詳細信息請參閱編譯器錯誤輸出。
總時間:4秒
我不明白爲什麼會這樣的。當我安裝插件時,它似乎已成功添加,並且出現在plugins/android.json
文件中。
在某一時刻,項目自動決定正確編譯(我不知道它是如何工作的)。我嘗試通過添加一行,在www/js/index.js
內讀取var p = window.MyPlugin
,在onDeviceReady
函數中的app.receivedEvent('deviceready');
之後訪問我添加的插件。我使用了console.log(p);
,事實證明這是未定義的,就好像我的插件從未被加載/初始化。
我想這是我的插件定義中的一個問題,因爲Java部分已經在Android本機應用上測試過,並且它工作正常。我的插件出了什麼問題?我能做些什麼來排除故障?爲什麼不初始化?任何幫助/指導是非常值得讚賞的。
====== UPDATE =====
我跟着道森的建議,使用cordova build android -d
,這裏是我收到的輸出:
[javac] /path/to/TestApp/platforms/android/src/com/phonegap/example/MyPlugin.java:10:
error: package com.phonegap.example.activity does not exist
[javac] import com.phonegap.example.activity.ExampleActivity;
這com.phonegap.example。活動包是在myJar.jar
文件中定義的,所以看起來MyPlugin.java
找不到myJar.jar
文件。 我認爲plugin.xml
應該在插件安裝過程中正確照顧包括jar文件在內。這是它是如何在plugin.xml
添加:
<source-file src="src/android/libs/myJar.jar" target-dir="libs" />
的什麼可能是錯在這裏的任何想法?
構建我自己的Android插件時,這發生在我身上。這很可能是你的java文件中的編譯錯誤。運行'cordova build android -d',你會看到很多輸出。在那裏你應該能夠找到編譯錯誤的直接引用。 –
謝謝道森。這確實揭示了這個問題。我通過運行該命令得到的輸出編輯了我的問題。 – Cramps
如果沒有,請檢查以確保'MyJar.jar'在'platforms/android/lib'中,嘗試將plugin.xml行更改爲' '或者只是手動將文件放入正確的文件夾並重試。 –