Android/PhoneGap:在插件开发中使用第三方库

5te*_*fan 8 java android phonegap-plugins cordova

我正在开发一个PhoneGap/Cordova插件,该插件应该提供一个用于发送和接收OSC消息的套接字(Open Sound Control).为此我想使用JavaOSC,但我不确定如何将库包含到我的项目中.

我正在使用Android Studio,我基本上按照本教程来设置我的项目.首先,我将原始JavaOSC类文件放在与我的OSCPlugin.class相同的目录中,并将导入声明放在我的OSCPlugin.class的to:

import com.illposed.osc;
Run Code Online (Sandbox Code Playgroud)

那没用.

作为下一步,我尝试在项目的模块设置中添加maven库.我能够从maven下载jar文件并安装到/ platforms/android/libs中.在模块'android'的设置中,我可以看到'Android API 17'应该用作SDK,包括cordova-3.1.0和com.illposed.osc:javaosc-core:0.2 - 两者都被激活.我可以在Android Studio的导航器中看到cordova-3.1.0.jar以及javaosc-core-0.2.jar,其中包含com.illposed.osc.

但是,在尝试编译我的项目时,我得到:

Gradle: cannot find symbol class osc
Run Code Online (Sandbox Code Playgroud)

从包含上述导入声明的OSCPlugin.class中触发

我对Java的经验很少,对Android开发的经验也很少.但是我有兴趣解决这个谜题并开始.我搜索过Java文档,但问题不仅仅在于Java,而在于Android项目的结构.

如果有人能对这个问题有所了解,我会感激不尽.任何提示都非常感谢!

Syn*_*sks 7

对于我的一个Phonegap项目,我需要Apache Commons Net,尝试按照以下步骤操作:

...
<source-file src="src/android/xxx.jar" target-dir="libs" framework="true" />
<source-file src="src/android/MyPlugin.java" target-dir="src/com/mypackage" />
...
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有成功.诀窍是将第三方库嵌入另一个插件中(遵循非常插件的结构).将org.apache.commons.net作为顶级目录:

    org.apache.commons.net
     +src 
       +android(this is where the .jar is located)
     +www (empty, not referencing any .js)
     +plugin.xml
Run Code Online (Sandbox Code Playgroud)

为简洁起见,plugin.xml如下:

<?xml version="1.0" encoding="UTF-8"?>

<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
           id="org.apache.commons.net"
      version="0.1.0">
    <name>org.apache.commons.net</name>
    <description>org.apache.commons.net</description>
    <license>Apache License, Version 2.0</license>
    <keywords>org.apache.commons.net</keywords>

    <!-- android -->
    <platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="org.apache.commons.net">
                <param name="android-package" value="org.apache.commons.net"/>
            </feature>
        </config-file>

        <source-file src="src/android/commons-net-2.2.jar" target-dir="libs" framework="true" />    
     </platform>          
</plugin>
Run Code Online (Sandbox Code Playgroud)

假设该org.apache.commons.net目录位于您的本地git仓库中,将其添加到您的项目中就像以下一样简单:

phonegap local plugin add /path/to/your/org.apache.commons.net
Run Code Online (Sandbox Code Playgroud)