【发布时间】:2020-07-18 20:07:00
【问题描述】:
(又浪费了一天..) 我可以编译并运行一个 2016 年的示例,将 build.gradle 更新为
android {
compileSdkVersion 30
buildToolsVersion "30.0.1"
defaultConfig {
applicationId "com.example.muserobo"
minSdkVersion 14
targetSdkVersion 30
但是当我将代码复制到一个新项目(File->new->New_Project->Empty_Activity)时,项目编译成功但代码
try {
System.loadLibrary("muse_android");
} catch (UnsatisfiedLinkError var1) {
Log.v("MUSE", "Failed to load libmuse_android.so. Make sure the jni symbols are accessible somehow.");
}
失败 :-( 是的,我将文件 libmuse_android.so 复制到 app\src\main\jniLibs\armeabi-v7a 和 libmuse_android.jar 到 app\libs。
我可以在更新的示例中删除这些文件,方法是在项目树中右键单击它们并在上下文菜单中选择删除。然后,当我使用 Windows 文件资源管理器手动将文件复制回原位时(就像我对新项目所做的那样),示例代码再次成功运行。
所以我在某处遗漏了一些隐藏选项,这些选项将使代码在运行时找到该库或在编译时将其添加到 apk :-( 换句话说,仅仅将这两个文件复制到它们的目的地是不够的:-/
这里是新项目的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
buildToolsVersion "30.0.1"
defaultConfig {
applicationId "com.example.muserobo"
minSdkVersion 14
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
请帮助拯救我的一天 :-)
【问题讨论】:
标签: android loadlibrary