libsomeip3.so 没有被加载到 Android 虚拟设备中

问题描述 投票:0回答:1

我正在尝试从 https://github.com/lixiaolia/ndk-someiplib 运行 vsomeip Java API 示例。 构建成功,但在启动 hello world 服务时出现以下错误。

2022-11-12 21:23:15.966  3598-3598  MainActivity            com.example.vsomeiphelloworld        D  vsomeipBaseDir: /data/user/0/com.example.vsomeiphelloworld/cache/vsomeip
2022-11-12 21:23:15.966  3598-3598  MainActivity            com.example.vsomeiphelloworld        D  Os.getenv("VSOMEIP_BASE_PATH"): /data/user/0/com.example.vsomeiphelloworld/cache/vsomeip/
2022-11-12 21:23:16.024  3598-3598  ServiceVso...rldService com.example.vsomeiphelloworld        D  onCreate()
2022-11-12 21:23:16.024  3598-3598  ServiceVso...rldService com.example.vsomeiphelloworld        D  onStartCommand()
2022-11-12 21:23:16.051  3598-3598  AndroidRuntime          com.example.vsomeiphelloworld        D  Shutting down VM
2022-11-12 21:23:16.052  3598-3598  AndroidRuntime          com.example.vsomeiphelloworld        E  FATAL EXCEPTION: main
                                                                                                    Process: com.example.vsomeiphelloworld, PID: 3598
                                                                                                    java.lang.UnsatisfiedLinkError: dlopen failed: library "libvsomeip3.so" not found: needed by /data/app/~~flBAHgGOZ1GR2qSnIduRoQ==/com.example.vsomeiphelloworld-a_eINFrhrnN_QujTru-l2w==/base.apk!/lib/x86_64/libServiceVsomeipHelloWorldServiceJNI.so in namespace classloader-namespace
                                                                                                        at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
                                                                                                        at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
                                                                                                        at java.lang.System.loadLibrary(System.java:1664)
                                                                                                        at com.example.vsomeiphelloworld.ServiceVsomeipHelloWorldService.onStartCommand(ServiceVsomeipHelloWorldService.java:39)
                                                                                                        at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4320)
                                                                                                        at android.app.ActivityThread.access$1800(ActivityThread.java:237)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1951)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loop(Looper.java:223)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:7664)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
---------------------------- PROCESS ENDED (3598) for package com.example.vsomeiphelloworld ----------------------------

我还没有构建 Java 应用程序,因为一旦

Task :app:buildCMakeDebug[x86_64]
结束,C++ 库本身就会被删除。 cmake 文件如下。奇怪的是,其他 .so 文件一直保留到构建结束 - libvsomeip3-cfg、libvsomeip3-e2e、libvsomeip3-sd。顶级 Cmake 文件如下。

cmake_minimum_required(VERSION 3.4.1)

project(vsomeip-hello-world)


list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)

add_subdirectory(external/boost-cmake)
add_subdirectory(external/vsomeip)
add_subdirectory(external/vsomeip/examples/hello_world)
#add_subdirectory(app/src/main/cpp)

注意:如果我取消注释最后一行,我会得到“缺少 libvsomeip3-cfg.so”,这是一个单独的问题。 build.gradle 文件如下

plugins {
    id 'com.android.application'
}

android {
    namespace 'com.example.vsomeiphelloworld'
    compileSdk 33

    defaultConfig {
        applicationId "com.example.vsomeiphelloworld"
        minSdk 30
        targetSdk 33
        versionCode 1
        versionName "1.0"

        ndk {
            abiFilters 'x86_64'
        }
    }

    externalNativeBuild {
        cmake {
            path file('../CMakeLists.txt')
            version '3.18.1'
        }
    }

    ndkVersion '22.1.7171670'
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'com.google.android.material:material:1.7.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
}

AGP:7.2.0 摇篮版本:7.5 NDK 版本:22.1.7171670 Android Studio版本:2021.3.1补丁1 CMake 版本:3.18.1 SDK 版本:33

有人好心帮我理解这个问题。考虑到我的项目时间表,也欢迎快速修复。

android c++ cmake android-ndk vsomeip
1个回答
0
投票

改用 3.12.4,它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.