Как условно исключить пакет (ы) выставки из Android Build в Expo SDK 53?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как условно исключить пакет (ы) выставки из Android Build в Expo SDK 53?

Сообщение Anonymous »

контекст
документация выставки гласит, что можно исключить пакеты выставки из сборки Android, вызывая функцию useExpomodules в настройках проекта.

Код: Выделить всё

useExpoModules
, по-видимому, определяется в Expo-Modules-Autolizing/Scripts/Android/Autoling_Implementation.Gradle . Он принимает карту параметров, одна из которых исключает , которая представляет собой список пакетов Expo для исключения. Настройки.gradle имеют ссылку на эту функцию через применение от синтаксис.

Код: Выделить всё

// ...

apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle")

// ...

useExpoModules([
searchPaths: [
'../../../packages'
],
exclude : [
'expo-module-template',
'expo-module-template-local',
'react-native-reanimated',
'expo-dev-menu-interface',
'expo-dev-menu',
'expo-dev-launcher',
'expo-dev-client',
'expo-maps',
'expo-network-addons',
'expo-splash-screen',
'@expo/ui',
'expo-mesh-gradient'
]
])
< /code>
В моем проекте Expo, используя SDK версию 52, я условно исключаю определенные пакеты из сборки Android. Например, мои настройки.gradle 
будет иметь что-то вроде этого:

Код: Выделить всё

if (/* condition */) {
useExpoModules([
exclude: [/* List of excluded packages */]
])
} else {
useExpoModules()
}
Проблема
Приведенное выше работает в SDK 52, однако SDK 53 (который я обновляю) изменяет, как использует expomodules и вызывается. Параметры с помощью свойств в классе. Это определено на: < /p>

Код: Выделить всё

// ...

open class ExpoAutolinkingSettingsExtension(
val settings: Settings,
@Inject val objects: ObjectFactory
) {

// ...

var exclude: List? = null

// ...

fun useExpoModules() {
SettingsManager(
settings,
searchPaths,
ignorePaths,
exclude
).useExpoModules()
}

// ...

}
< /code>
См. «Минимальный» шаблон выставочной экспозиции для примера того, как применяется плагин, и функцию называется: < /p>
// ...

plugins {
// ...

id("expo-autolinking-settings")
}

// ...

expoAutolinking.useExpoModules()

// ...
С этой информацией я могу (условно) исключить пакет (ы) выставки из сборки Android в Expo SDK 53?

Код: Выделить всё

expoAutolinking.useExpoModules([ exclude: [/* List of excluded packages */] ])
, как и ожидалось, не работает, увеличивая следующую ошибку:

Не удалось найти метод useexpomodules () для аргументов [{exclide = [...]}] на расширении 'expoAutoling' of type expo.modules.plugin.expoAutolishing. /> < /blockquote>
Настройка expoAutoling.exclude < /code> < /h3>
Например: < /p>

Код: Выделить всё

// ...

if (/* condition */) {
expoAutolinking.exclude = [/* List of excluded packages */]
}

expoAutolinking.useExpoModules()

// ...
< /code>
Это также не работает, потому что пакеты, которые должны быть исключены, все еще включены (в соответствии с журналами сборки (зарегистрированы отсюда) и ошибки, исходящая из задачи из пакета, которая должна была быть исключена). < /p>
Я добавил журналы в следующие методы, чтобы зайти в список исключенных пакетов (списки Calling in Calling). /> [*]ExpoAutolinkingSettingsExtension.useExpoModules
[*]

Код: Выделить всё

SettingsManager.useExpoModules
Все журналы правильно зарегистрировали список исключенных пакетов. Это означает, что Expo правильно получает список исключенных пакетов, верно?


Подробнее здесь: https://stackoverflow.com/questions/797 ... xpo-sdk-53
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»