【问题标题】:Android Studio: porting old example fails at System.loadLibrary("muse_android");Android Studio:移植旧示例在 System.loadLibrary("muse_android"); 失败;
【发布时间】: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-v7alibmuse_android.jarapp\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


    【解决方案1】:

    又浪费了半天时间在糟糕的 Android 上。 库 libmuse_android.so 确实被打包到带有 Build->Rebuild_Projectapp\build\outputs\apk\debug\app-debug.apk 文件中,但是在选择 Run->Debug_ 时被NOT打包到同一个 apk 中'应用'

    解决方案:运行->Edit_Configuration->app->Depoly: "Default APK" -> "APK from app bundle"

    然后在app\build\intermediates\extracted_apks\debug\outbase-armeabi_v7a_2.apk 构建一个包含 .so 的 apk,现在可以继续在我的 Pixel 1 XL 上进行调试 :-)

    烂安卓:-(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2015-12-29
      • 2012-02-16
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多