Итак, я предоставляю двоичные файлы как удаленную зависимость, упакованную как aar
. В библиотеке android файлы libMyLibrary.so
находятся в каталоге src/main/jniLibs/<abi>/
, поэтому при сборке и развертывании они находятся в каталоге jni aar. Единственное, что есть в библиотеке, это файл манифеста, не содержащий ничего, кроме имени пакета package.name.A
, импорт package.name.A
как зависимость от другого проекта, different.package.B
, приводит к тому, что все правильно упаковывается в сборке а общие библиотеки содержатся в apk отладки / выпуска lib/<abi>/libMyLibrary.so
. Однако они не извлекаются в собственный каталог приложения при установке.
Фактически установленный apk показывает, что файлы .so
находятся в apk. ZipFile(context.applicationInfo.sourceDir).getEntry("lib/${Build.SUPPORTED_ABIS[0]}/libMyLibrary.so")
работает, и я могу извлечь их таким образом (просто не в nativeDir приложения, исключение безопасности). И System.mapLibraryName("MyLibrary")
возвращает «libMyLibrary.so» ...
Они были извлечены до того, как я предоставил их как удаленную зависимость, и они содержались в каталоге src/main/jniLibs/<abi>/
приложения. Теперь единственный способ получить его для извлечения, поставляя их как удаленную зависимость через aar
, - это включить в манифест android:extractNativeLibs="true"
.
Как я могу получить вещи для правильного извлечения без нужно объявить это в моем манифесте?
Есть ли что-то, что мне нужно объявить в манифесте удаленной библиотеки, чтобы после слияния Android знал об общей собственной библиотеке, и она будет извлекаться правильно? Нужен ли мне файл Android .mk?
Руководство / помощь были бы очень признательны!