[英]Android app exit while loading external library
我正在尝试将opencv4
添加到我的 android 应用程序中,并按照这篇文章中的所有内容进行操作。
我在下面的 kotlin 文件的开头添加了System.loadLibrary
:
class MainActivity : AppCompatActivity() {
companion object {
init {
System.loadLibrary("opencv_java4")
}
}
override fun onCreate(savedInstanceState: Bundle?) { }
但是应用程序在使用以下启动后退出:
09/22 16:08:04: Launching 'app' on Pixel 3a API 29.
$ adb shell am start -n "hasan.tts_mobile/hasan.tts_mobile.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Waiting for process to come online...
Timed out waiting for process to appear on Pixel_3a_API_29 [emulator-5554].
由于这个答案,看起来opencv 4
中发生了一些变化,因此所有现有的教程都在讨论将java
文件夹作为模块导入,而实际上需要导入的是skd
文件夹本身。
您可以使用作为 OpenCV包装器的 JavaCV,或者手动执行 OpenCV,如下所示:
1- 从这里下载OpenCV – 4.1.1
2-解压文件夹,它将被解压到OpenCV-android-sdk
,其中包含以下内容:
Hasans-Air:OpenCV-android-sdk hasan$ ls
LICENSE README.android samples sdk
3-前往 Android Studio 的项目
4-文件->新建->导入模块
5- Select 第2点解压文件夹中的sdk
文件夹,如图所示建议的module name
为:sdk
,但是你可以重命名它像:sdkOpenCV4
前面的一样:
6- Right click the app
, select Open Module Settings
, select Dependencies, then click the app
module, in the Declared Dependencies
tap click +
then you'll see the OpenCV
module there, click add it, click Apply
then Add
:
7- From OpenCV SDK
copy the sdk/native/libs
folder, and go to tour application folder src/main
and paste it inside it, then rename the libs
folder to jnilibs
, so that in your application src/main
folder you'll be有:
8- 在OnCreate
中,您可以在开始使用之前添加检查:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val ocvLoaded = OpenCVLoader.initDebug()
if (ocvLoaded) {
Toast.makeText(
this@MainActivity, "OpenCV loaded",
Toast.LENGTH_SHORT
).show()
} else {
Toast.makeText(
this@MainActivity, "Unable to load OpenCV",
Toast.LENGTH_SHORT
).show()
Log.d("openCV", "loader: ${OpenCVLoader.initDebug()}")
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.