Cordova:在插件中添加库

时间:2014-06-26 13:28:01

标签: cordova plugins

我已经像这棵树一样创建了一个cordova插件:

LucenePlugin
   src
        android
             libs
                  lucene-analyzers-2.4.1.jar
                  lucene-core-2.4.1.jar
                  lucene-snowball-2.4.1.jar
             LucenePlugin.java
   www
        lucene.js
   plugin.xml

在plugin.xml中,我添加了像这样的.jar

 <platform name="android">
    <config-file target="res/xml/config.xml" parent="/*">
        <feature name="org.apache.cordova.LuceneLibs"> 
            <param name="android-package" value="org.apache.cordova.LuceneLibs"/>
        </feature>
    </config-file>
    <source-file src="src/android/lucene-analyzers-2.4.1.jar" target-dir="libs" framework="true"/>
    <source-file src="src/android/lucene-core-2.4.1.jar" target-dir="libs" framework="true"/>
    <source-file src="src/android/lucene-snowball-2.4.1.jar" target-dir="libs" framework="true"/>       
</platform>

当我将插件添加到cordova项目中时,libs似乎处于好处:

platforms \ android \ libs \ lucene-analyzers-2.4.1.jar等...

不幸的是,当我运行项目时,我有这个错误

W/System.err(12492): java.lang.NoClassDefFoundError:
org.apache.lucene.search.IndexSearcher
W/System.err(12492):    at   
org.apache.cordova.Lucene.LucenePlugin.execute(LucenePlugin.java:27)
W/System.err(12492):    at   
org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:65)
W/System.err(12492):    at 
org.apache.cordova.PluginManager.execHelper(PluginManager.java:242)

你知道我忘了吗?

由于

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 jar文件落在正确的位置。但是由于这个新添加的jar文件没有添加到构建路径中,很明显,你的jar文件中的所有类都找不到类的错误。如果要在本地项目中安装此插件,只需将此jar文件添加到构建路径即可。它会解决你的问题。但是如果你想在像phonegap build这样的云平台上使用这个插件,可能会有麻烦。我正在寻找一种方法。

答案 1 :(得分:0)

查看this answer同一问题。只需将您的库放在单个插件的顶级目录中即可。它对我有用。

答案 2 :(得分:0)

如果您需要在某个命名空间引用设备上存在的库,您可以使用&#34; framework&#34;标签

<!-- Depend on latest version of GCM from play services -->
<framework src="com.google.android.gms:play-services-gcm:+" />
<!-- Depend on v21 of appcompat-v7 support library -->
<framework src="com.android.support:appcompat-v7:21+" />
<!-- Depend on library project included in plugin -->
<framework src="relative/path/FeedbackLib" custom="true" />

https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html#framework