提问人:efel 提问时间:11/16/2023 更新时间:11/16/2023 访问量:22
无法在 Android NDK 应用程序的 /proc/.../maps 中找到本机模块
unable to find native module in /proc/.../maps for Android NDK app
问:
我通过 Android Studio 制作了一个示例 NDK hello world 应用程序(只需直接使用向导中的应用程序)。一切正常,我能够与本机模块(hello_ndk.so)进行通信。生成的代码如下:
package com.example.hello_ndk
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import com.example.hello_ndk.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// Example of a call to a native method
binding.sampleText.text = stringFromJNI()
Log.i("TEST", stringFromJNI());
}
/**
* A native method that is implemented by the 'hello_ndk' native library,
* which is packaged with this application.
*/
external fun stringFromJNI(): String
companion object {
// Used to load the 'hello_ndk' library on application startup.
init {
System.loadLibrary("hello_ndk")
}
}
}
正如我所提到的,在调用JNI和返回等方面一切正常。我正在使用 SDK 31 并在 Android 12 模拟器上运行。我adb进入模拟器(以root身份)并尝试手动查找加载的模块,如下所示:
emulator64_x86_64:/ # cat /proc/13433/maps | grep hello_ndk.so
1|emulator64_x86_64:/ # cat /proc/13433/maps | grep native-lib.so
1|emulator64_x86_64:/ # ps -A | grep -i hello_ndk
u0_a108 13433 372 13728128 162904 do_epoll_wait 0 S com.example.hello_ndk
hello_ndk.so 模块不应该在进程的映射视图中看到吗,因为它已加载(因为我正在使用它)?为什么我的搜索结果没有产生结果(加载的 .so 文件)?
答: 暂无答案
评论