代码之家  ›  专栏  ›  技术社区  ›  Geng Jiawen

Android ndk不捆绑v8.a文件符号

  •  7
  • Geng Jiawen  · 技术社区  · 6 年前

    我也有一个类似的项目 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 ,相关输出为无。

    2 回复  |  直到 6 年前
        1
  •  3
  •   shizhen    6 年前

    对于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"
        } 
        ...
    }
    
        2
  •  1
  •   Geng Jiawen    6 年前

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