Я пытаюсь выяснить, как явно выбрать, какие двоичные файлы включены в .apk
, созданный сборкой Android gradle.
У меня есть проект, чьи зависимости имеют разные версии файла libc++_shared.so
. Это вызывает конфликт при упаковке выходных данных сборки, поскольку колыбель не знает, какой файл выбрать.
Однако опция упаковки pickFirst
выбирает «неправильную» копию файла. То есть зависимость A
и зависимость B
включают файл. Я знаю, что хочу версию, с которой поставляется зависимость A
, но если я включу следующую конфигурацию в build.gradle
, чтобы убедиться, что сборка выполняется:
packagingOptions {
pickFirst('lib/x86/libc++_shared.so')
}
это всегда копия из зависимости B
, которая упаковывается.
Что я действительно хотел бы сделать, так это exclude
файл с B
. В документации по gradle и в онлайн-примерах я вижу, как исключить транзитивную зависимость, но не встроенный двоичный файл таким образом.
Рассматриваются две зависимости:
React Native 0.59.2
MyScript iink 1.3.0 (http://myscript.com)
В моем верхнем уровне build.gradle
зависимости включены как:
dependencies {
// From node_modules
implementation 'com.facebook.react:react-native:+'
// MyScript iink dependency is transitive through this
implementation project(path: ':UIReferenceImplementation')
}
Есть ли способ точно указать, какую копию libc++_shared.so
я хочу упаковать, либо назвав ее, либо исключив копию, которую я не хочу?