Ошибка связывания при добавлении цели android_library() с нативными зависимостями.so в Chromium
Я пытаюсь интегрировать библиотеку Android с нативными.so зависимостями в Chromium. Я уже следовал инструкциям из этого ответа, хотя я добавляю цель android_library() вместо android_aar_prebuilt ().
Я сталкиваюсь со следующей ошибкой при попытке собрать chrome_public_apk или chrome_modern_public_apk -
FAILED: libchrome.cr.so libchrome.cr.so.TOC lib.unstripped/libchrome.cr.so
python "../../build/toolchain/gcc_solink_wrapper.py" --readelf="../../third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-readelf" --nm="../../third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-nm" --strip=../../third_party/eu-strip/bin/eu-strip --sofile="./lib.unstripped/libchrome.cr.so" --tocfile="./libchrome.cr.so.TOC" --output="./libchrome.cr.so" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed --gcc-toolchain=../../third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 -fuse-ld=lld -Wl,--icf=all -Wl,--no-undefined -Wl,--exclude-libs=libgcc.a -Wl,--exclude-libs=libc++_static.a -Wl,--exclude-libs=libvpx_assembly_arm.a --target=arm-linux-androideabi -Werror -Wl,--gdb-index -nostdlib -Wl,--warn-shared-textrel --sysroot=../../third_party/android_ndk/platforms/android-16/arch-arm -Wl,--version-script=/home/sagarjoshi/Projects/chromium_source/src/build/android/android_only_explicit_jni_exports.lst -Wl,-wrap,calloc -Wl,-wrap,free -Wl,-wrap,malloc -Wl,-wrap,memalign -Wl,-wrap,posix_memalign -Wl,-wrap,pvalloc -Wl,-wrap,realloc -Wl,-wrap,valloc -Wl,--dynamic-linker,/system/bin/linker -L../../third_party/android_ndk/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a -o "./lib.unstripped/libchrome.cr.so" -Wl,-soname="libchrome.cr.so" @"./libchrome.cr.so.rsp"
/home/sagarjoshi/Projects/chromium_source/src/out/Default/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: kClassPath_<library_class_name>
>>> referenced by chrome_jni_registration.h:0 (gen/chrome/browser/android/chrome_jni_registration.h:0)
>>> obj/chrome/android/libchrome/chrome_entry_point.o
Как ни странно, цель monochrome_public_apk успешно собирается без каких-либо ошибок. Я не могу использовать монохромную цель, так как она имеет minSdkVersion = 24.
На этой странице перечислены некоторые различия между 3 целями, например, Crazy Linker не используется в monochrome_public_apk. Однако добавление "use_chromium_linker = false" к цели не имеет значения.