Я собираю стороннюю библиотеку Java для Android, которая использует JNI.Я прочитал соответствующие страницы о добавлении поддержки C ++ на developer.android, но я все еще запутался в связи с парой проблем, связанных со временем выполнения C ++ STL, которые я надеялся прояснить здесь:
1 - В моей библиотеке нетконтроль над приложением, в которое оно будет встроено, поэтому я не знаю, будут ли другие библиотеки, которые могут использовать статические / общие STL.Если я использую статическую среду выполнения C ++ с ANDROID_STL = c ++ _ static, это безопасно, или мне нужно беспокоиться о другой библиотеке, которая может использовать что-то вроде gnustl_static, которая может конфликтовать с моей?
2- ЕслиЯ использую разделяемую среду выполнения C ++ с ANDROID_STL = c ++ _ shared, это гарантия того, что определенный элемент в STL будет использовать среду исполнения libc ++, или можно ли использовать gnustl, если он не существует?Например, если я использовал std :: string с общей средой выполнения c ++ (c ++ _ shared) в приложении, в котором есть другая библиотека gnustl_static, будет ли моя реализация std :: string взята из libc ++ или gnustl?
В идеале я хотел бы иметь очень урезанную версию статической среды выполнения c ++ с (c ++ _ static), которая включает только std :: vector, std :: string и std :: map.На самом деле я планировал использовать что-то вроде -ffunction-section, как описано здесь, и # 768.
Пожалуйста, сообщите и поблагодарите.
Подробности среды
- Pkg.Android = NDK
- Pkg.Revision = r15c
- Android Studio = 3.1.2
- система: cmake Хост ОС: Arch Linux ($ uname -r% 4.18.5-arch1-1-ARCH)
- Компилятор: Clang ++
- STL: c ++ _ static / c ++ _ shared