当前位置: 首页 > 知识库问答 >
问题:

Android:如何从Kotlin调用ndk函数?

宋飞掣
2023-03-14

这段代码适用于Java。但是在迁移到Kotlin之后,编译器higlits方法native fun stringFromNative():string出现以下文本错误:

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    Toast.makeText(this, stringFromNative(), Toast.LENGTH_LONG).show()
}

companion object {

    init {
        System.loadLibrary("_ndkkt")
    }
    native fun stringFromNative(): String
}
}

Andswer是:

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    Toast.makeText(this, stringFromNative(), Toast.LENGTH_LONG).show()
}

   init {
        System.loadLibrary("_ndkkt")
    }

    external fun getStringFromNative(): String
}

}

如果希望在另一个类中使用这个本机函数,可以指定包含它的类,如下所示:

val aStringFromNative : String = MainActivity().getStringFromNative()

共有1个答案

糜淇
2023-03-14

external fun stringFromNative():string放到同伴对象之外并放入mainactivity中。

(我通过查看https://github.com/ligee/kotlin-ndk-samples找到了答案)

 类似资料:
  • 问题内容: 因此,我正在创建一个使用Unity的Android应用…从Unity获得了一些资产捆绑,但在Unity启动之前我不知道该URL。因此,Unity需要在本机(Android)端调用一个函数来获取URL。 我已经迷路了一段时间(Unity文档非常糟糕,恕我直言)。我决定使用NDK来帮助我。没有Unity,关于我的库文件的所有工作都会解决……现在问题是在Unity中调用这些C函数。 这是我的

  • 我正在尝试从 Java 7 调用科特林函数。我正在使用协程,这个被调用的函数正在挂起,例如: 我在版本 0.25.3 中使用了协程,我可以通过传递继续来模拟简单的 Java 回调样式 ,但是我使用的是Android,这意味着只使用Java 7。另一方面,简单的< code>Future太愚蠢了,因为我不想定期检查函数是否完成——我只想在函数完成时被调用。我真的希望避免添加新的库或许多额外的类/方法

  • 例外情况。kt: 在科特林: 它在kotlin中工作,函数是内联的。 但是当在Java代码中使用时,它就是不能内联,仍然是一个正常的静态方法调用(从反编译的内容中可以看出)。 像这样的东西:

  • 我正在尝试使用随ndk提供的ndk-stack命令。 不幸的是,当我运行它时,脚本崩溃了。 我在windows上运行的命令是... ndk-stack . cmd-sym build/intermediates/cmake/debug/obj/armea bi-v7a-dump stack . txt stack.txt文件包含来自logcat的逻辑删除。 我收到的错误是.... 回溯(最后一次调

  • 我是一个本地开发人员和新的Unity。我试图发挥我的优势,在Kotlin编码,然后使用我的代码作为一个插件在Unity。我遇到的一个问题是,我不知道如何引用伴生对象内部的函数。 但我怎样才能在团结中也这样做呢?以下是我尝试过的。 我收到的错误是, AndroidJavaException:java.lang.NosuchMethodError:没有具有name='factory'signature

  • 问题内容: 我想从Android应用程序调用服务器上的特定php函数,并发送一些参数。到现在为止,我实现了可以使用HttpClient打开php文件并执行向Json的数据传输,并在我的应用程序中显示该文件。所以,现在我希望能够调用特定的函数并向其发送参数,我该怎么做?谢谢。 问题答案: 这是我编写的用于使用JSON注册新用户名的一段代码: 如果您注意到: 在那一部分中,您可以发送参数。 该方法只是