美文网首页ReactNative
ReactNatvie植入原生android应用

ReactNatvie植入原生android应用

作者: 06a5f27268e0 | 来源:发表于2016-09-20 14:34 被阅读234次

    ReactNatvie植入原生android应用

    1. 首先创建一个通过androidstudio创建一个android原生项目

    2. 配置ReactNatvie

    1. 通过as的terminal打开命令行执行以下语句:

    npm init
    npm install --save react-native

    curl -o .flowconfig https://raw.githubusercontent.com/facebook/react-native/master/.flowconfig
    
    1. 在项目根目录里找到package.json文件,在json文件里scripts:里添加

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

    >
    3. 在根目录里新建一个index.android.js复制粘贴下面语句
    >>```
    import React from 'react';
    import {
    AppRegistry,
      StyleSheet,
      Text,
      View
    } from 'react-native';
    class HelloWorld extends React.Component {
      render() {
        return (
          <View style={styles.container}>
            <Text style={styles.hello}>Hello, World</Text>
          </View>
        )
      }
    }
    var styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center',
      },
      hello: {
        fontSize: 20,
        textAlign: 'center',
        margin: 10,
      },
    });
    AppRegistry.registerComponent('HelloWorld', () => HelloWorld);
    

    3. 配置android原生项目

    1. app build.gradle添加项目依赖

    compile "com.facebook.react:react-native:+"

    
    >2. 在项目 `build.gradle`添加moven
    >>```
    allprojects {
        repositories {
            ...
            maven {
                // All of React Native (JS, Android binaries) is installed from npm
                url "$rootDir/node_modules/react-native/android"
            }
        }
    }
    
    1. AndroidManifest.xml添加权限

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

    1. 新建activity

    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")
    .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.onPause();
    }
    }
    @Override
    protected void onResume() {
    super.onResume();
    if (mReactInstanceManager != null) {
    mReactInstanceManager.onResume(this, this);
    }
    }
    @Override
    protected void onDestroy() {
    super.onDestroy();
    if (mReactInstanceManager != null) {
    mReactInstanceManager.onDestroy();
    }
    }
    @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);
    }

    
    >5. 在`AndroidManifest.xml`添加依赖
    >>```
    <activity
      android:name=".MyReactActivity"
      android:label="@string/app_name"
      android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>
    

    运行app
    执行命令npm start
    然后运行app原生项目

    相关文章

      网友评论

        本文标题:ReactNatvie植入原生android应用

        本文链接:https://www.haomeiwen.com/subject/tzqoettx.html