【问题标题】:How to publish Kotlin + JNI android library to Bintray?如何将 Kotlin + JNI android 库发布到 Bintray?
【发布时间】:2019-08-21 07:15:42
【问题描述】:

我一直在开发一个库以在我的项目中使用,当它在本地工作时,我想分享它并将其用作外部依赖项。

如何包装我的库,以便构建的 AAR 包含 *.so 本机库和生成的 *.java 类(由 Kotlin 编译器生成)?因为我的库中有两种交互方式:在 C++ 中定义的 Kotlin 外部函数,以及一些调用 Kotlin 类和方法的 C++ 代码。

所以,我的问题是:

  • 如何正确打包 Kotlin + JNI android 库?
  • 如何将上述包上传到 Bintray,以便用户(和我自己)可以将其用作依赖项?

(注意:我看过教程和示例,但它们要么是 Kotlin/Android 要么是 Java/Jni/Android)

【问题讨论】:

  • 为什么 Java/Jni/Android 方法不适用于 Kotlin/Jni/Android?您在使用这些方法时遇到了什么困难?
  • @Botje 我相信它们已经过时或者只是在我的情况下不起作用——我有一些 Gradle 未定义的东西错误(抱歉,我真的不记得它们了)。但是,在这个问题中,我想了解 is Kotlin 和 Java 在这样的任务中有什么不同。

标签: android kotlin java-native-interface bintray


【解决方案1】:

如果您想将.so 与您的应用程序打包在一起,请注意您始终可以将它放在JAR 文件中。然后,您可以解压缩它,并使用System.load 加载它。

您可以在这里找到示例:https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo031

注意

请记住,在应用程序中打包 .so 是一件有风险的事情。当您处理本机代码时,您必须 100% 确定所有本机依赖项都存在。您还必须注意建筑。

【讨论】:

  • 您能详细说明一下吗?我应该在我的 build.gradle 中编写什么样的 gradle 命令来自动执行此操作? (例子好像不是android项目)
  • 我不是gradle 专家:( 对于我的示例,我使用makeJDK 中可用的显式命令。我怀疑,对于gradle,您需要以某种方式标记@987654330 @ 作为JAR 创建过程的一部分。
猜你喜欢
  • 2017-01-16
  • 2017-08-19
  • 2017-05-28
  • 2016-09-25
  • 2015-01-25
  • 2018-08-26
  • 2016-03-23
  • 2018-04-10
  • 1970-01-01
相关资源
最近更新 更多