Android ndk 未捆绑 v8 .a 文件符号
Android ndk not bundle v8 .a file symbols
我有一个项目也很相似 J2V8 which bundle v8 to android. But after compile J2V8 has all v8 symbols but similar project lose all v8 symbols. You can check the original 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,相关的输出是none.
对于 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 源项目解决此问题。
我有一个项目也很相似 J2V8 which bundle v8 to android. But after compile J2V8 has all v8 symbols but similar project lose all v8 symbols. You can check the original 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,相关的输出是none.
对于 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 源项目解决此问题。