首页 > 其他分享 >android 原生和ReactApplication的交互

android 原生和ReactApplication的交互

时间:2022-12-11 18:00:10浏览次数:52  
标签:交互 react new Override import android com ReactApplication

 

 React Native创建工程,是通过在命令终端输入 ​​react-native init 你的项目名字​​ 来创建工程的,创建的工程会从网络端,同步到你终端所在路径的本地,生成一个和android project类似的项目,如下图。

 

android文件夹,就是一个可以用android studio打开的android项目。

 

android文件夹,就是一个可以用android studio打开的android项目。
ios文件夹,是一个可以用xcode打开的ios项目。
index.android.js,这是android的React Native入口文件。
index.ios.js,这是ios的React Native入口文件。
package.json,类似android studio的build.gradle,你依赖的库都写在里面。
node_module文件夹,你依赖的库下载下来都存放在里面,属于git的忽略文件,你要找的依赖库源码也在里面,包括React和React Native。
--

 package.json,类似于android studio中的build.gradle添加远程依赖,不同的是,package.json大多数时候不需要我们手动添加,我们只需要在根目录通过命令行,​​npm install xxxxxx --save​​ 就可以依赖一个库了。

 

 install之后,库的依赖信息,自动被写到package.json里面,对应的库也会被下载到node_module文件夹中,类似android studio依赖后把aar同步到本地。

 

3、Android开发需要理解的React Native

 一般情况下只在一个activity上运行,一般情况下是因为,你也可以自己写新的Activity,继承ReactActivity来实现你想要的逻辑。

 

2)Application默认创建工程时,就会继承ReactApplication

 其中getPackage()就是返回需要与原生交互的包,MainReactPackage时初始化生成,其他是你​​react-native link​​命令时帮你插入的。当然,你也可以自己写与原生交互的模块。

 通过activity 进行交互:

 

package com.rn_demo;

import android.app.Application;

import com.facebook.react.ReactApplication;
import com.reactnative.ivpusic.imagepicker.PickerPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.microsoft.codepush.react.CodePush;
import com.rnfs.RNFSPackage;
import com.vinzscam.reactnativefileviewer.RNFileViewerPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {

        @Override
        protected String getJSBundleFile() {
        return CodePush.getJSBundleFile();
        }
    
    @Override
    public boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            new PickerPackage(),
            new VectorIconsPackage(),
            new CodePush(null, getApplicationContext(), BuildConfig.DEBUG),
            new RNFSPackage(),
            new RNFileViewerPackage()
      );
    }

    @Override
    protected String getJSMainModuleName() {
      return "index";
    }
  };

  @Override
  public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
  }

  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
  }
}

  

 

 

 

 

 

推荐的资料和阅读:

https://blog.51cto.com/u_15641473/5321413

标签:交互,react,new,Override,import,android,com,ReactApplication
From: https://www.cnblogs.com/xiamaocheng/p/16974034.html

相关文章