Android ndk没有捆绑v8 .a文件符号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ndk没有捆绑v8 .a文件符号相关的知识,希望对你有一定的参考价值。

我有一个类似于J2V8的项目,它将v8捆绑到android。但编译完J2V8后,所有v8符号,但similar project丢失所有v8符号。您可以使用命令检查原始J2V8.so here

nm -D libj2v8.so | grep "GetIsolate"

你可以得到类似的东西

003530fc T _ZN2v815SnapshotCreator10GetIsolateEv
003613c4 T _ZN2v86Object10GetIsolateEv
0035f78c T _ZN2v87Context10GetIsolateEv
0038c354 W _ZNK2v88internal10HeapObject10GetIsolateEv
00503a78 T _ZNK2v88internal11MessageImpl10GetIsolateEv
00503b4c T _ZNK2v88internal16EventDetailsImpl10GetIsolateEv

但是在编译sample project之后,相关的输出是没有的。

答案

对于Android Studio项目,库.aar或应用程序.apk,在构建过程中,有一个步骤剥离动态共享库的调试符号,即.so

如果你想保持所有符号不被删除,那么你可以将以下配置添加到你的build.gradle中。

android {
    ...
    packagingOptions{
        doNotStrip "*/armeabi/*.so"
        doNotStrip "*/arm64-v8a/*.so"
        doNotStrip "*/armeabi-v7a/*.so"
        doNotStrip "*/x86/*.so"
        doNotStrip "*/x86_64/*.so"
    } 
    ...
}
另一答案

最后通过直接包含v8源项目来解决这个问题。

以上是关于Android ndk没有捆绑v8 .a文件符号的主要内容,如果未能解决你的问题,请参考以下文章

转NDK编译可执行文件在Android L中运行显示error: only position independent executables (PIE) are supported.失败问题解决办(代

Android NDK - 在没有Android Studio的情况下构建本机库

错误记录Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )(代

错误记录Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )(代

安卓ndk 忽略 error: undefined reference to '找不到符号

Android 关于arm64-v8aarmeabi-v7aarmeabix86下的so文件兼容问题