Как уточнить, какие двоичные файлы упакованы в сборку Android? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь выяснить, как явно выбрать, какие двоичные файлы включены в .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 я хочу упаковать, либо назвав ее, либо исключив копию, которую я не хочу?

...