RN的Android环境配置

2018-03-08  本文已影响0人  天色将变

本文参考晴明的ReactNative教程中关于Android环境配置一文,做了一些笔记。

参考文章:集成到现有原生应用 - React Native 中文网


本文源码:RNExample

1.前言

    本文目的是,记录从开始新建项目,到最终项目运行成功的具体的一步步的过程。

2.建立新RN工程

    第一步,使用AndroidStudio新建一个Android工程,如RNTest。

    第二步,在d盘建立一个空的目录,用做rn工程的根目录,如D:\ReactNative\RNExample

其中RNExample就是根目录。

    第三步,在RNExample下新建一个android文件夹(用于存放安卓工程),将之前建立的RNTest工程下的文件都copy到此处来。

    第四步,在RNExample根目录下新建一个package.json文件,并附上下列内容

        "name": "MyReactNativeApp", 

        "version": "0.0.1", 

        "private": true, 

        "scripts": {   

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

        }, 

        "dependencies": {   

                  "react": "16.0.0-alpha.6",   

                   "react-native": "0.44.3" 

        }

}

react版本查看命令:npm info react

react-native版本查看命令:npm info react-native

这些都是借鉴的原文的内容,主要是一些配置工程的东西。(需要注意的是,这里react-native版本是44,所以新建的是index.android.js  而不是index.js  后续会记录到)

然后,将命令行移至RNExample下,执行命令npm install  ,成功后初步工作就完成了,是这样的。

 3.Android工程中的配置

    第一步,添加对RN的依赖,在app下的build.gradle

applyplugin:'com.android.application'

android {

     省略xxx

    defaultConfig {

        省略xxx

        //***********这里的ndk 和packagingOptions  也是避免错误添加的配置 好像是关于32位64位的错误  具体为啥 want to know

            ndk {

                    abiFilters "armeabi-v7a","x86"

            }

            packagingOptions {

                    exclude "lib/arm64-v8a/librealm-jni.so"

            }

    }

省略xxx

//************添加这里,可以避免jsr305的错误(我也不确定具体是啥)

    configurations.all {

        resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'

    }

}

dependencies {

    省略xxx

    compile 'com.facebook.react:react-native:+'//这里是对RN的依赖

}

    第二步,工程下build.gradle的配置

allprojects {

        repositories {

                jcenter()

                maven {

                        // All of React Native (JS, Android binaries) is installed from npm

                        url "$rootDir/../node_modules/react-native/android"

                }

            }

}

    第三步,AndroidManifest.xml配置

死活粘贴不上了,所以截图了,见谅见谅 这里是个调试界面   开发过程可以先加上 方便调试

    4.建立js相关文件

    第一步,在RNExample根目录下建立一个index.android.js文件(在0.49之前是index.android.js,之后是index.js),这里面就是具体的代码了,建立rn组件,添加一些显示内容。还是上图吧,具体的我会在后续附上工程。

    第二步,申请悬浮框权限(主要是在调试时,会弹出一些悬浮框,所以在android的activity中需要先申请下权限)。我在android的MainActivity中添加的这些申请(注意,我没有把rn所要写的内容放到这个activity中)。另外在MainActivity中添加了一个Button,点击效果是跳转到RN编写的界面。

    第三步,建立有rn内容的activity,先用截图看着

另外就是:

mReactRootView.startReactApplication(mReactInstanceManager, "HelloWorld", null);

这里的第二个参数,要与index.android.js中的

AppRegistry.registerComponent('HelloWorld', () => HelloWorld);第一个参数相同

第四步,在AndroidManifest.xml中注册这个Activity

第五步,建立一个application 配置下ip和端口

第六步,在AndroidManifest.xml中使用这个application

5.测试与运行

    第一步,查看android工程下的main目录是否有assets,如果没有则建立(会在此assets下生产一些文件index.android.bundle  与index.android.bundle.meta),接下来,在运行工程之前需要执行js文件的打包,生成assets下的文件。命令行运行如下:

react-native bundle --platform android --dev true --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

    第二步,启动服务,保证命令执行后,命令行窗口一直存在。

npm start

    第三步,使用AndroidStudio直接运行工程到手机,因为在MainActivity的onCreate中添加了悬浮框的权限申请,所以直接就跳转到悬浮框权限界面了,打开权限,点击返回键,这时界面 中只显示了一个button,当前MainActivity是个原生界面,点击button跳转到由RN编写的界面了。

    第四步,如果重新修改了index.android.js中的代码,那么需要在命令行,先Ctrl+C停止服务,然后重新执行上述步骤一二三。

6.结语

    在尝试RN过程中,其实就是一个边学习变探索的过程,很多东西需要亲自尝试后才有真正的体会,上面所讲仅是个人的一些记录,仅供参考。

上一篇 下一篇

猜你喜欢

热点阅读