8

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

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

import com.illposed.osc;

那没有用。

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

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

Gradle: cannot find symbol class osc

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

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

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

4

2 回答 2

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" />
...

不幸的是,没有成功。诀窍是将第三方库嵌入到另一个插件中(遵循插件结构)。将 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

为简洁起见,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>

假设该org.apache.commons.net目录位于您的本地 git repo 中,将其添加到您的项目中很简单:

phonegap local plugin add /path/to/your/org.apache.commons.net
于 2014-01-14T09:36:39.747 回答
1

要添加外部库,基本上您所要做的就是将 jar 复制到 /libs 文件夹。

在这里,您的源代码中有错误的导入。

import 用于通过指定包名后跟类名来导入类,这里您只指定类名,因此您遇到的错误“找不到符号类 osc”是因为没有类 osc。

你应该使用

  • import com.illposed.osc.*;如果你想从包中导入所有类
  • 或者为您要使用的包中的每个类添加一个导入。

如果你想让插件可以使用 CLI 或 phonegap 构建安装,你还必须更新 plugin.xml 以添加 jar 文件的副本。

ps 如果您不知道,您将无法使用 com.illposed.osc.ui 中的类,因为它们使用的是 swing 并且专为 jvm 而不是 android 设计。

于 2014-01-14T11:25:18.450 回答