React Native 开发第二节-[集成到现有原生应用]

超详细 React Native 入坑使用指南,我在元宇宙等你 前言 大家好,我是虚竹,今天给大家分享一下我是如何快速通关打怪搭建 React Native 跨端开发环境,并使用大家非常熟悉的开发工具 VSCode 来编写丝滑般的代码。编写丝滑般代码会再下一篇输出,包括项目实战经验总结和踩坑,如目录架构、函数式编程、React Hook 灵活运用、常见场景、开发调试、发布部署、踩坑、性能优化等等。 之前因为在我的技术群,收到群友@我,问能否出一个保姆级 React Native 搭建开发环境的教程,我说照着官方文档步骤操作即可。可惜事与愿违没那么顺利,流程上繁琐不够清晰 阅读详情

集成到现有原生应用

  1. 集成到现有原生应用
    React Native 和原生项目放在同一目录下
    之前AwesomeProject下边有一个Android项目 这里边就直接删除就可以了
    然后使用软联把原生项目关联起来就OK了。

        ln -s /android/  /AwesomeProject
    

    在这里插入图片描述

  2. 配置 maven

    在你的 app 中 build.gradle 文件中添加 React Native 依赖:

    	dependencies {
    	    compile 'com.android.support:appcompat-v7:23.0.1'
    	    ...
    	    compile "com.facebook.react:react-native:+" // From node_modules
    	}
    
    

    如果想要指定特定的 React Native 版本,可以用具体的版本号替换 +,当然前提是你从 npm 里下载的是这个版本。
    在项目的 build.gradle 文件中为 React Native 添加一个 maven 依赖的入口,必须写在 “allprojects” 代码块中:

    	allprojects {
    	    repositories {
    	        maven {
    	            // All of React Native (JS, Android binaries) is installed from npm
    	            url "$rootDir/../node_modules/react-native/android"
    	        }
    	    }
       }
    

    这里注意了 url “$rootDir/…/node_modules/react-native/android” 这个地方非常重要,如果你 之前集成过之前版本,这个地方配错了,永远编译不出来最新版本jar,我就被坑到了,引以为戒!
    正确的路径是:

       maven {
            // All of React Native (JS, Android binaries) is installed from npm
            url "../../AwesomeProject/node_modules/react-native/android"
        }
    
  3. 配置权限

    接着,在 AndroidManifest.xml 清单文件中声明网络权限:

    如果需要访问 DevSettingsActivity 界面(即开发者菜单),则还需要在 AndroidManifest.xml 中声明:
  4. 核心代码 ReactRootView
    我们还需要添加一些原生代码来启动 React Native 的运行时环境并让它开始渲染。首先需要在一个Activity中创建一个ReactRootView对象,然后在这个对象之中启动 React Native 应用,并将它设为界面的主视图。

    public class MyReactActivity extends Activity implements DefaultHardwareBackBtnHandler {
        private ReactRootView mReactRootView;
        private ReactInstanceManager mReactInstanceManager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            mReactRootView = new ReactRootView(this);
            mReactInstanceManager = ReactInstanceManager.builder()
                    .setApplication(getApplication())
                    .setBundleAssetName("index.android.bundle")
                    .setJSMainModulePath("index")
                    .addPackage(new MainReactPackage())
                    .setUseDeveloperSupport(BuildConfig.DEBUG)
                    .setInitialLifecycleState(LifecycleState.RESUMED)
                    .build();
            // 注意这里的MyReactNativeApp必须对应“index.js”中的
            // “AppRegistry.registerComponent()”的第一个参数
            mReactRootView.startReactApplication(mReactInstanceManager, "MyReactNativeApp", null);
    
            setContentView(mReactRootView);
        }
    
        @Override
        public void invokeDefaultOnBackPressed() {
            super.onBackPressed();
        }
    }
    

    我们需要把 MyReactActivity 的主题设定为 Theme.AppCompat.Light.NoActionBar ,因为里面有许多组件都使用了这一主题。

    <activity
      android:name=".MyReactActivity"
      android:label="@string/app_name"
      android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>
    
    

    配置 MainApplication

    public class MainApplication extends Application implements ReactApplication {
    
      private static final DataTransferPackage transferPackage = new DataTransferPackage();
    
      private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
          return BuildConfig.DEBUG;
        }
    
        @Override
        protected List<ReactPackage> getPackages() {
          return Arrays.<ReactPackage>asList(
              new MainReactPackage(),
              transferPackage
          );
        }
    
        @Override
        protected String getJSMainModuleName() {
          return "index";
        }
      };
    
      public static DataTransferPackage getTransferPackage() {
        return transferPackage;
      }
    
      @Override
      public ReactNativeHost getReactNativeHost() {
        return mReactNativeHost;
      }
    
      @Override
      public void onCreate() {
        super.onCreate();
        SoLoader.init(this, /* native exopackage */ false);
      }
    }
    

    到这里就可以在你的Androidstudio上运行你的Android项目!!!

React Native嵌入到现有原生应用 React Native嵌入到现有原生应用 如果你正准备从头开始制作一个新的应用,那么React Native会是个非常好的选择。但如果你只想给现有的原生应用中添加一两个视图或是业务流程,React Native也同样不在话下。只需简单几步,你就可以给原有应用加上新的基于React Native的特性、画面和视图等。 阅读详情

相关推荐

React-Native 集成到现有项目实践

React-Native 集成到现有项目实践 Xcode,Ios 需要安装过React-Native相关环境和cocoa pods。 准备工作: React Native 借助 Node.js,即 JavaScript 运行时来创建 JavaScript 代码。如果你已经安装了 Node.js,那就可以上手了。 首先,使用 Homebrew 官网提供的指引

w2322050的博客 2387

ReactNative 学习总结 个人梳理

ReactNative官方文档:React Native 中文网 · 使用React来编写原生应用的框架ReactNative适用于APP的一套多开,适合大型项目的开发,安装环境时注意版本对应。 2、ReactNative的布局默认为flex布局,View标签不能直接写入文字,样式不会被继承, 单位不能加px,vh,vw等可以是百分比。 3、快速获取屏幕尺寸,Dimensions flex布局见我的博客:Flex布局总结_Dragon Wu的博客-优快云博客_flex布局总结案例代码:同样使用Re

qq_50909707的博客 9573

React Native 混合开发:如何在现有原生应用中集成RN_副本

随着移动应用需求的快速变化,纯原生开发(iOS/Android)面临“重复造轮子”(相同功能在两个平台写两遍代码)、“迭代慢”(每次发版需等待苹果/谷歌审核)等问题。React Native(简称RN)作为跨平台开发框架,能让开发者用JavaScript(JS)编写界面逻辑,自动生成原生UI组件,兼顾开发效率与用户体验。本文聚焦“如何将RN集成到现有原生应用中”,覆盖iOS和Android双平台,从核心概念到实战操作,帮你解决“为什么集成”“怎么集成”“集成后如何维护”等关键问题。

移动开发前沿的博客 1398

React Native到底要不要用?劣势优势全面剖析

摘要: 目前流行的两个智能手机操作系统 iOS 和 Android,各自为营,互不相通。一般情况下,开发一款APP需要两支队伍,分别针对 iOS 和 Android 平台进行开发。为了节约人力成本,有人就想到了跨平台开发解决方案。最近几年有多种跨平台开发方案相继出现,其中由 Facebook 推出的 React Native 框架是目前最完善、最受欢迎的一个。本文主要从React Native 的实现原理、优缺点剖析、技术选型的思考这三个方面进行阐述。 一、 React Native简介 ...

Ethan_LG的专栏 1万+

React Native 混合开发:如何在现有原生应用中集成RN

随着移动应用功能迭代加速,传统“纯原生开发”面临更新周期长、跨平台成本高的问题。React Native(RN)作为“跨平台混合开发”的代表技术,允许开发者用JavaScript编写界面逻辑,同时保留原生应用的性能。本文聚焦“如何将RN集成到已有原生应用中”,覆盖iOS和Android双平台,帮助开发者在不重构现有代码的前提下,快速引入RN的灵活特性。用“装修老房子”的故事解释RN混合开发的核心概念;分iOS/Android讲解集成RN的具体步骤(环境搭建→代码集成→启动RN页面);

移动开发前沿的博客 1388

用C++从零复刻Wordle:手把手教你实现命令行猜词游戏(含完整源码解析)

本文详细介绍了如何使用C++从零开始实现一个命令行版本的Wordle猜词游戏,包含完整的源码解析和核心模块设计。通过游戏逻辑控制器、单词库管理器等模块的构建,开发者可以学习C++实战技巧和性能优化方法,适合提升编程能力和游戏开发兴趣。

weixin_26763955的博客 335

React Native的概述,React Native的优缺点,React Native开发/运行环境的搭建

React Native概述 React是一个构建用户界面的JS框架,实现了数据的响应式和组件化开发,本身既可以用于Web网站项目,也可以用于创建移动端App项目. 相较于Vue.js在移动端只能构建WebApp,React生态系统中有一个可以构建"真正原生App"的扩展----React Native,可以说:“RN是React生态圈可以傲视其它对手的绝对功臣”. RN可将JS编译成Java/OC语言 目前最新版本是0.67 React Native的优缺点 优点 1.RN可将标记元素转化为真实的原生UI

人间真的不值得的博客 2万+

esp32移植canopen协议栈(二)

本文续接上一篇文章,之前我们已经搭建好了esp32的开发环境,以及初始工程。接下来我们开始实现can驱动相关,以及使用c++封装can接口。本文使用esp32实现c++实现can驱动层的封装。下一步移植canopen!!!嘻嘻。

qq_50267418的博客 1908

React Native 从入门到实战:开启跨端开发之旅

通过这篇教程,我们系统地学习了 React Native 的开发知识,从基础概念到深入应用,再到实战项目的演练,相信大家已经对 React Native 有了较为全面的认识。我们了解了 React Native 是什么以及为什么选择它,掌握了搭建开发环境、创建项目、使用组件和语法的方法,学会了进行网络请求、处理数据、使用第三方库,还通过实战项目将所学知识运用到实际开发中,最后总结了常见问题及解决方案。React Native 的学习是一个不断积累和实践的过程。

大雨淅淅的博客 3412

手把手教你用Cesium和RayMarching实现逼真体积云(附完整Shader代码)

本文详细介绍了如何利用Cesium和RayMarching技术实现逼真的体积云效果,包括环境准备、核心逻辑、云层建模和光照增强等关键步骤,并提供了完整的Shader代码。通过噪声函数选型、动态风场模拟和多重散射近似等技术,开发者可以在数字地球可视化项目中创建沉浸式天气效果,显著提升场景的真实感。

weixin_29230649的博客 417

避坑指南:从聚宽迁移到QMT必须知道的5个细节(含Redis连接异常处理)

本文详细解析了从聚宽迁移到QMT平台时需注意的5个关键细节,特别是Redis连接池优化和xtquant重连机制。通过实战代码示例,帮助量化团队解决信号传递稳定性、时间同步、滑点控制等核心问题,确保交易策略平稳过渡。

weixin_27303545的博客 430

将React Native集成到现有原生应用

把 React Native 组件集成到现有 Android 应用

weixin_42169702的博客 1276

模拟退火算法详细讲解(含实例python代码)

模拟退火算法详细讲解(含实例python代码)(一)模拟退火算法简介三级目录(二)模拟退火算法原理(1)基本思想(2)算法步骤(3)参数控制(三)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之后感觉还是不太清楚,最后问了老师之后才搞明白。想把自己的理解写下来,帮助大家更好的理解。本篇文章是在另一篇博客的基础上加了一下自己的理解,然后又把我们在实验中的实例写下来,还有参考代码。希望大家看了之后能够加深对模拟退火算法的理解。 另一篇博客链接: 深度学习 — 模拟退火算法详解. (一)模拟退火算法简介

weixin_48241292的博客 17万+

React Native集成到现有原生应用

本篇文章以MacOS环境开发iOS平台为例,记录一下在原生APP基础上集成React Native详细介绍了搭建环境和集成RN的步骤。

wuwuFQ的博客 2378

RexUniNLU零样本通用自然语言理解:nlp_deberta_rex-uninlu_chinese-base模型实战解析

本文深入解析了RexUniNLU零样本通用自然语言理解模型(nlp_deberta_rex-uninlu_chinese-base)的实战应用。通过详细的环境配置、模型加载及实战案例,展示了该模型在零样本场景下的强大能力,如实体识别和复杂关系抽取,显著提升NLP任务效率。

weixin_29088655的博客 251

使用机器学习算法预测黄金价格

在本文中,我们将使用线性回归、XGBoost和LSTM这三种不同的机器学习算法来预测黄金价格。接下来,我们使用线性回归、XGBoost和LSTM分别建立了模型,并进行了训练和预测。这些机器学习算法可以帮助我们对黄金价格进行预测,但请注意,市场价格受多种因素影响,因此预测结果可能并不完全准确。接下来,我们需要对数据进行一些预处理,以便用于机器学习模型的训练和测试。我们将使用80%的数据作为训练集,20%的数据作为测试集。最后,我们将绘制每个模型的预测结果,并将其与实际价格进行比较,以评估模型的性能。

QromMatlab的博客 1316

如何快速集成React Native到现有移动应用:Electrode Native平台完整指南 [特殊字符]

Electrode Native是一个强大的移动平台,专门用于简化React Native组件到现有iOS/Android原生应用的集成和交付过程。这个开源平台由WalmartLabs开发,为开发团队提供了无缝的React Native集成解决方案,让您可以在不改变现有应用架构的前提下,轻松添加React Native功能模块。 ## 为什么选择Electrode Native? 🤔 传统上

gitblog_00313的博客 670

YOLOv8改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附修改后的C2f+Bottleneck)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv8中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。通过本文你能够了解到DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加(DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPs)。

Snu77的博客 9572

CVAT 多语言配置教程:3 步支持中文界面

海外同事打开 CVAT 抱怨界面全是英文?这篇指南带你走通 CVAT 国际化(i18n)配置:后端怎么开、语言包怎么加、不生效怎么排查,按顺序做完,标注平台就能说你们团队的语言。 ## 场景:海外用户打开界面全是英文 打开标注页,工具栏、菜单、报错提示清一色英文,国内团队却想先看中文标签。先说清楚现状:CVAT 的多语言能力分布在三层——Django 后端(报错与 API 文案)、Hugo 文

gitblog_00071的博客 666

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

react native 学习笔记----将react native嵌入到Android原生应用

不仅可以在react native 的js界面和现有工程的界面之间跳转,而且可以把js写的界面当成一个控件,嵌入到现有的activity,作为原生界面的一部分使用。

wxq888的专栏 5258

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

如何在现有React Native项目中集成React Native Queue:面向新手的完整迁移指南

想要在现有React Native应用中添加后台任务队列功能吗?React Native Queue是一个强大的作业队列库,可以帮助您轻松管理异步任务。这篇面向新手的完整指南将带您逐步完成迁移过程,让您快速掌握React Native Queue的集成方法。 ## 为什么选择React Native Queue? React Native Queue是一个专门为React Native设计的作

gitblog_00357的博客 697

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ReactJS 101移动开发:用React Native构建跨平台原生应用的终极指南

想要学习如何用React Native快速构建跨平台移动应用吗?React Native作为Facebook推出的开源框架,让开发者可以使用JavaScript和React构建真正的原生移动应用。本文将为你提供完整的React Native入门指南,从环境搭建到项目部署,一步步教你掌握这个强大的移动开发工具。无论你是React新手还是有经验的Web开发者,都能通过本文快速上手React Nativ

gitblog_00952的博客 565

现有Native项目的React Native启动

React Native — the prodigal son for all mobile development! For a long while now I had been putting off my encounter with React Native just because of all the horror stories surrounding it. In the pas...

weixin_26739079的博客 1109

React Native 快速入门指南

React Native快速入门指南提供了跨平台移动开发的全面介绍。主要内容包括:环境搭建(Node.js、Android/iOS开发工具安装)、项目结构说明(App.js等核心文件)、应用创建与运行(CLI和IDE两种方式)以及调试技巧(Chrome DevTools)。特别对比了React Native与Flutter等技术特性,突出了其接近原生性能和使用JavaScript开发的优势。指南还详细介绍了如何将React Native集成到现有原生应用中,为开发者提供了从零开始到项目实践的完整路径。

REDcker的博客 1811
上一篇: React Native 开发第一节
下一篇: Mac 安全与隐私:没有允许任何来源
jhonjson
博客等级 码龄11年 220粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值