博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 添加React Native支持
阅读量:6702 次
发布时间:2019-06-25

本文共 4627 字,大约阅读时间需要 15 分钟。

官方文档

个人实践

  • 用android studio创建一个基本的android hello world程序

    1240
    2016-09-28_172701.png
  • 在项目根目录中通过npm向导生成package.json文件,在cmd中输入命令:

    npm init

    1240
    2016-09-28_173638.png
  • 在package.json文件中添加启动脚本

    "start": "node node_modules/react-native/local-cli/cli.js start"

    1240
    2016-09-28_174027.png

注:这里可能会报一个json的错误,请仔细检查json:

     f8dbf3e4ea5dbdad3e0c59834b94a06ceb8c5c00

  • 添加react-native npm依赖,在命令行输入

    npm install react react-native --save

  • 创建index.android.js文件

import React from 'react';import {  AppRegistry,  StyleSheet,  Text,  View} from 'react-native';class HelloWorld extends React.Component {  render() {    return (      
Hello, World
) }}var styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', }, hello: { fontSize: 20, textAlign: 'center', margin: 10, },});AppRegistry.registerComponent('HelloWorld', () => HelloWorld);
  • 在你app的build.gradle文件中添加react native依赖库

    1240
    2016-09-28_175004.png
  • 在你project的build.gradle文件中添加react native路径

    1240
    2016-09-28_175125.png
  • 修改AndroidManifest.xml文件中添加权限

    <uses-permission android:name="android.permission.INTERNET" />

  • 添加AndroidReactActivity

package com.platform.ourplam.androidreacttest;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import com.facebook.react.LifecycleState;import com.facebook.react.ReactInstanceManager;import com.facebook.react.ReactRootView;import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;import com.facebook.react.shell.MainReactPackage;public class AndroidReactActivity 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")                .setJSMainModuleName("index.android")                .addPackage(new MainReactPackage())                .setUseDeveloperSupport(BuildConfig.DEBUG)                .setInitialLifecycleState(LifecycleState.RESUMED)                .build();        mReactRootView.startReactApplication(mReactInstanceManager, "HelloWorld", null);        setContentView(mReactRootView);    }    @Override    public void invokeDefaultOnBackPressed() {        super.onBackPressed();    }    @Override    protected void onPause() {        super.onPause();        if (mReactInstanceManager != null) {            mReactInstanceManager.onHostPause();        }    }    @Override    protected void onResume() {        super.onResume();        if (mReactInstanceManager != null) {            mReactInstanceManager.onHostResume(this, this);        }    }    @Override    protected void onDestroy() {        super.onDestroy();        if (mReactInstanceManager != null) {            mReactInstanceManager.onHostDestroy();        }    }    @Override    public void onBackPressed() {        if (mReactInstanceManager != null) {            mReactInstanceManager.onBackPressed();        } else {            super.onBackPressed();        }    }    @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_MENU && mReactInstanceManager != null) {            mReactInstanceManager.showDevOptionsDialog();            return true;        }        return super.onKeyUp(keyCode, event);    }}
  • build android项目否则上一步,代码导入包会报错

    1240
    2016-09-28_185145.png
  • 将AndroidReactActivity加入AndroidManifest.xml文件中

  • 将DevSettingsActivity配置加入到AndroidManifest.xml文件中

最终的AndroidManifest.xml文件内容为

  • 在MainActivity中添加Button,添加点击事件启动AndroidReactActivity
public class MainActivity extends AppCompatActivity {    Button btn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn = (Button) super.findViewById(R.id.btn);        btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MainActivity.this, AndroidReactActivity.class);                startActivity(intent);            }        });    }}
  • 在命令行中输入:npm start

    1240
    QQ截图20160928191415.png
  • 启动android程序

    1240
    0617B9760DBA2A9368D75155FE14B0DC.jpg
    1240
    674A73C4B407F69DA4716F9841B8EF1E.jpg
    1240
    EA81A6EDBAD0D41BE037E8737F548C3A.jpg

转载地址:http://ajzlo.baihongyu.com/

你可能感兴趣的文章
国外找的一个base64转码的函数,简单好用。
查看>>
我的友情链接
查看>>
日常管理03-监控MYSQL主从延时3秒脚本;
查看>>
Windows 7排困解难DIY的错误
查看>>
apache + tomcat + mod_jk解决session会话共享的问题
查看>>
web前端开发
查看>>
动画演示 Delphi 2007 IDE 功能[3] - 修改属性
查看>>
对android初学者遇到的问题的解决
查看>>
麦肯锡中国银行业白皮书,得零售者得未来
查看>>
piao
查看>>
实现Zabbix跨域监控
查看>>
Linux系统使用普通命令删除不掉的文件处理方法
查看>>
《How Tomcat Works》读书笔记(六)Lifecycle
查看>>
80后今年买房八大注意 专家提醒需审时度势
查看>>
Oracle:模拟高考查分~一个简单的存储过程
查看>>
twisted学习-2 基础协议
查看>>
近期大热的实时直播答题系统的实现思路与技术难点分享
查看>>
Windows 7 IIS (HTTP Error 500.21 - Internal Server Error)解决
查看>>
linux 中awk和sed使用
查看>>
MySQL忘记密码恢复密码的实现方法
查看>>