加载时,在Android L上崩溃

时间:2018-04-02 09:12:08

标签: android-ndk dlopen loadlibrary skia

我有一个skia共享库,由skia源代码生成,我想用它在我的cpp文件中绘制一些东西。这个项目在android M和N上运行良好,但它在android L上崩溃。

这是我的CMakeList.txt

cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_VERBOSE_MAKEFILE on)
set(libs "${CMAKE_SOURCE_DIR}/src/main/jniLibs")
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/android)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/atlastext)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/c)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/codec)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/config)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/core)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/effects)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/encode)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/gpu)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/pathops)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/ports)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/private)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/svg)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/utils)
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/views)

#--------------------------------------------------- import ---------------------------------------------------#
add_library(libmyskia SHARED IMPORTED )
set_target_properties(libmyskia PROPERTIES
    IMPORTED_LOCATION "${libs}/${ANDROID_ABI}/libmyskia.so")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -fexceptions -fno-rtti")

add_library(eskia
             SHARED
             src/main/cpp/eskia.cpp )

find_library( android-lib
              android)

target_link_libraries(eskia
        libmyskia
        ${android-lib}
    )

我在我的活动中加载了库:

 static {
            System.loadLibrary("myskia");
            System.loadLibrary("eskia");
        }

以下是崩溃信息,有人见过吗?

  04-02 16:46:55.319 21449-21449/com.eastedu.skiaandroid E/art: dlopen("/data/app/com.eastedu.skiaandroid-2/lib/arm/libeskia.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "_ZTVN10__cxxabiv117__class_type_infoE" referenced by "libeskia.so"...
    04-02 16:46:55.319 21449-21449/com.eastedu.skiaandroid D/AndroidRuntime: Shutting down VM
    04-02 16:46:55.319 21449-21449/com.eastedu.skiaandroid E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.eastedu.skiaandroid, PID: 21449
        java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZTVN10__cxxabiv117__class_type_infoE" referenced by "libeskia.so"...
            at java.lang.Runtime.loadLibrary(Runtime.java:383)
            at java.lang.System.loadLibrary(System.java:997)
            at com.eastedu.skiaandroid.MainActivity.<clinit>(MainActivity.java:17)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.Class.newInstance(Class.java:1606)
            at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535)
            at android.app.ActivityThread.access$1200(ActivityThread.java:165)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1387)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5689)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at enter code herecom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

0 个答案:

没有答案