Интеграция собственного React (не демонстрируемого) в существующее автономное собственное приложение для Android.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Интеграция собственного React (не демонстрируемого) в существующее автономное собственное приложение для Android.

Сообщение Anonymous »

В настоящее время я поддерживаю устаревший автономный проект Android, который использует собственный модуль React для определенной функции приложения. Текущая производственная версия React Native, используемая в приложении, — 0.63.2, она безумно старая и нигде не встречается в NPM React Npm. Поэтому мы решили обновить версию по двум основным причинам:
  • Требование Google к подкачке размером 16 КБ продолжает отмечаться в файлах .so, связанных с собственным модулем реакции.
  • Чтобы обновить ее, чтобы устранить вышеуказанную проблему и любые будущие проблемы.
Первой проблемой, которую нужно было решить, было то, что предыдущие разработчики добавили все собственные библиотеки и зависимости реагирования в виде файлов .aar внутри автономного проекта. Возможно, это было до того, как было введено автоматическое связывание. Но в более новых версиях мы не можем получить файлы .aar из того, что я читаю. Это формат, который они использовали в моем проекте:
Изображение

Я следовал методам, предложенным на следующих сайтах:

React Native в качестве подмодуля

Обновить нативный React в существующем приложении

Интегрировать нативный React
Но, к сожалению, мне не удалось заставить свой проект работать. Продолжает показывать проблемы с автосвязыванием.

Затем я сослался на официальную ссылку Facebook, но они просят нас поместить все в папку /android.
Итак, я попытался сначала создать новый проект RN внутри моего автономного проекта и назвать его rnandroid. Проект был создан со всеми необходимыми файлами, такими как node_modules, package.json, Yarn и т. д.
Что я сделал дальше, так это скопировал все настройки gradle в файлы автономного проекта, а затем переместил все файлы .js и node_modules в корень моего автономного приложения и соответствующим образом скорректировал пути в файлах gradle.
автономное приложение root/build.gradle:

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

dependencies {

classpath("com.facebook.react:react-native-gradle-plugin")

}
app/build.gradle автономного приложения

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

plugins {
id "com.android.application"
id "org.jetbrains.kotlin.android"
id "org.jetbrains.kotlin.kapt"
id "org.jetbrains.kotlin.plugin.parcelize"
id "com.google.gms.google-services"
id "com.google.firebase.crashlytics"
id "com.google.firebase.firebase-perf"
id "com.facebook.react"
}

/**
* This is the configuration block to customize your React Native Android app.
* By default you don't need to apply any configuration, just uncomment the lines you need.
*/
react {
/* Folders */
//   The root of your project, i.e. where "package.json" lives. Default is '../..'
root = rootDir
//   The folder where the react-native NPM package is. Default is ../../node_modules/react-native
reactNativeDir = file("$rootDir/node_modules/react-native")
//   The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
codegenDir = file("$rootDir/node_modules/@react-native/codegen")
//   The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js
cliFile = file("$rootDir/node_modules/react-native/cli.js")

/* Variants */
//   The list of variants to that are debuggable. For those we're going to
//   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
//   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
// debuggableVariants = ["liteDebug", "prodDebug"]

/* Bundling */
//   A list containing the node command and its flags. Default is just 'node'.
// nodeExecutableAndArgs = ["node"]
//
//   The command to run when bundling. By default is 'bundle'
// bundleCommand = "ram-bundle"
//
//   The path to the CLI configuration file. Default is empty.
// bundleConfig = file(../rn-cli.config.js)
//
//   The name of the generated asset file containing your JS bundle
// bundleAssetName = "MyApplication.android.bundle"
//
//   The entry file for bundle generation.  Default is 'index.android.js' or 'index.js'
// entryFile = file("../js/MyApplication.android.js")
//
//   A list of extra flags to pass to the 'bundle' commands.
//   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
// extraPackagerArgs = []

/* Hermes Commands */
//   The hermes compiler command to run. By default it is 'hermesc'
// hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
//
//   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
// hermesFlags = ["-O", "-output-source-map"]

/* Autolinking */
autolinkLibrariesWithApp()
}

dependencies {


implementation("com.facebook.react:react-android")

if (hermesEnabled.toBoolean()) {
implementation("com.facebook.react:hermes-android")
} else {
implementation jscFlavor
}
}
После всей этой настройки я продолжаю сталкиваться с такими проблемами, как:

autolinkLibrariesFromCommand: конфигурация процесса npx @react-native-community/cli завершилась с кодом ошибки: 1
это мой реакции-native.config.js

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

module.exports = {
project: {
android: {
packageName: '
',
sourceDir: './app'
},
},
assets: ['./assets/fonts/'],
};
После запуска конфигурации npx @react-native-community/cli я получил такой вывод

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

{
"root": "/Users/kaarthick/Projects/ezl-android",
"reactNativePath": "/
/node_modules/react-native",
"reactNativeVersion": "0.76",
"dependencies": {},

.....

"project": {
"ios": null,
"android": {
"sourceDir": "/app",
"appName": "",
"packageName": "",
"applicationId": "",
"mainActivity": ".SplashActivity",
"assets": []
}
}
Меня больше всего беспокоит то, что, поскольку это устаревший проект, я беспокоюсь, что значительные изменения в настройке React Native могут полностью его сломать. Как лучше всего интегрировать/встроить React Native в отдельный собственный проект Android?


Подробнее здесь: https://stackoverflow.com/questions/798 ... -android-a
Ответить

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

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

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

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

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