【问题标题】:How native library be executed in Android?原生库如何在 Android 中执行?
【发布时间】:2011-02-16 19:03:27
【问题描述】:

我在想当一个 android 应用程序加载一个原生库时,这个库是如何执行的? apk 中的 dex 文件由 dalvik VM 执行,但是当 OPcodes 中的逻辑调用库中的方法(不是 dex 格式)时,VM 是否暂停并等待进程(此应用程序和 VM 正在运行)执行库? 谢谢

【问题讨论】:

    标签: android android-ndk dalvik


    【解决方案1】:

    您通过 JNI 调用本机库。你可以从这里阅读更多关于 JNI 是如何工作的:

    http://java.sun.com/docs/books/jni/html/jniTOC.html

    【讨论】:

    • 谢谢,但我的意思是如何执行库? (在另一个线程还是什么?)本机库被编译成二进制格式(应该直接在cpu上执行),但不是dex格式,所以dalvik vm无法解释它。我认为这应该和JVM中的情况一样?
    • 我无法确定,但从文档来看,Delvim 使用的是相同的机制。本机代码在同一地址空间内的本机线程中执行,但它由 JVM 调用,它将处理所有上下文准备、数据格式化等内容。编写多线程 JNI 代码有一定的限制(比如不能传递本地引用等),除非您有具体问题,否则我无法回忆所有内容。 :)
    • 谢谢,这几乎就是我想知道的。
    【解决方案2】:

    这是一个很好的例子 How to build native Code and use it http://www.aton.com/android-native-libraries-for-java-applications/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2019-08-21
      • 2017-04-14
      相关资源
      最近更新 更多