android - 如何在 Application.mk 中设置 APP-PLATFORM 以匹配 Android Studio 3.2.1 中的 targetSDKVersion
问题描述
我正在尝试将YCTung 的 AndroidLibSVM导入到我的项目中,但是当我在我的 Android 6.0.1 平板电脑上运行代码时,出现此错误:
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memcpy"
根据这篇文章或其他一些文章,可以通过升级 NDK 的application.mk / android.mk中的 APP-PLATFORM以匹配应用程序的 targetSDK 版本来修复该错误。但是,我找不到这些 .mk 文件。他们应该是
“在项目 jni/ 目录的子目录中”,
但我也不知道那在哪里。这是我的 build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.krautkremer.nils.mymirror"
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
我对 NDK 了解不多,而且我对 Java/Android/Android Studio/Gradle 还是很陌生。感谢帮助!
解决方案
你没有。您的 NDK API 版本需要与您的minSdkVersion
. 不保证您的应用程序可以在低于您的 NDK API 版本的任何版本上运行。externalNativeBuild
自动处理这个。如果您需要为您的 NDK 库使用 API 28,则需要将您的设置minSdkVersion
为 28。
但是,我认为这不是问题所在。在过去的两周里,这个问题已经出现了 3 次。看起来 AndroidLibSVM 是针对 android-24 或更高版本构建的。因此,它不能在比该 API 级别更早的设备上使用(所有其他问题都试图在 android-23 上使用它)。
推荐阅读
- python - 如何基于另一个带有日期的列创建 Pandas 列?
- ios - Xamarin.iOS 上的 Xamarin.Build.Download 包问题
- java - 如何将 Firebase 实时数据库中的所有数据显示到 TextView
- laravel - Laravel - 由于某种原因,文件上传似乎不允许所有类型的文件
- php - 使用 log4php 在控制台上记录 php 错误,但它也显示在浏览器上
- reporting-services - SSRS PDF Progress AX 2012 R3?
- jenkins - 上传中的 Jenkins 文件参数大小限制
- java - 如何处理 Selenium 3 中的 SSL 证书错误?
- javascript - 显示来自本地存储的图像时出现问题
- jira-rest-api - jira res-api 在描述中使用项目符号列表创建问题