将 .jar 文件包含到 cordova 插件中

Posted

技术标签:

【中文标题】将 .jar 文件包含到 cordova 插件中【英文标题】:Including .jar file into cordova plugin 【发布时间】:2014-09-25 11:55:50 【问题描述】:

我需要将第 3 方插件 .jar 包含到我的自定义 cordova 插件中。 我找不到任何方法来做到这一点。

f.e.我的一些实际代码看起来像这样(plugin.xml):

<platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="AztecReader">
                <param name="android-package" value="com.example.aztecreadermobilas.AztecReaderPlugin"/>
            </feature>
        </config-file>

        <source-file src="src/android/AztecReaderPlugin.java" target-dir="src/com/example/aztecreadermobilas" />      
</platform>  

我需要包含的库:

/libs
    /armeabi
        /libAztecLibrary.so
    /armeabi_v2
        /libAzteclibraryv2.so
    /AztecReader.jar

【问题讨论】:

【参考方案1】:

我发现了一个可能涵盖您的用例的示例:

https://github.com/phonegap/phonegap-plugin-fast-canvas/blob/master/plugin.xml

查看第 31 行。似乎预编译的库(在本例中为 Android/libs/armeabi/libFastCanvasJNI.so)可以通过 source-file 指令包含在内。

我不知道这是否也适用于 java 类文件。您可以通过提取 jar 并将每个包含的类文件添加为源文件来完成此操作。试试看吧。

AztecReader 似乎可以作为源代码使用,因此您可以在源代码(java 文件)中直接访问您的插件。它们将在应用程序构建期间进行编译。这似乎是将阅读器集成到插件中的最简单的方法。

【讨论】:

确实如此。示例:【参考方案2】:

.so .jar 文件,和 .java 文件一样,使用即可:

<source-file src="path/to/foo.so" target-dir="libs/" />

tips:yourApp/platform/android/是一个android项目目录,cordova build android之后,你就可以在Android Studio中正常调试了。无聊的是,每次修改插件代码都得删掉重新添加。

【讨论】:

【参考方案3】:

lib-file 元素添加到您的plugin.xml:

<platform name="android">
  <lib-file src="AztecReader.jar" />
</platform>

见Plugin.xml reference documentation:

对于 Android,&lt;lib-file&gt; 元素用于在项目的 libs 目录中安装 .jar 文件。它仅支持包含 .jar 文件的相对路径的 src 属性。

【讨论】:

以上是关于将 .jar 文件包含到 cordova 插件中的主要内容,如果未能解决你的问题,请参考以下文章

用于将文件下载到 iOS 的 Cordova 文件传输插件

如何使用cordova插件挂钩将文件复制到/res/raw

Gradle 和 Shadow 插件 - 在 shadowJar 任务之后将附加文件(.jar 文件)复制到最终 jar

将 Cordova 插件导入 Worklight 6

Cordova/Phonegap OpenEars 语音识别

将cordova文件插件添加到现有ios项目时重复符号_kCDVFilesystemURLPrefix