当前位置: 首页 > 科技观察

Android端最常见的10个问题

时间:2023-03-15 16:01:47 科技观察

这里把最有可能遇到的Reactnativeandroid相关案例一一记录下来,并且您的服务器未正确匹配。如果是手机运行,需要pc和手机使用同一个wifi,通过menu按钮设置menu-ip为pc的ip。如果是模拟器,则不需要手动设置ip,设置了反而会报错2.app启动后,红色界面,unRegisteredProject提示什么,你的app启动时没有注册解决方法:这个也是你一看就知道的错误,是你的index.android。写在bundle底部的'componetNameInYourLocalProject'在你的java代码中没有调用这个名称。自己检查一下,马上就可以修好。AppRegistry.registerComponent('componetNameInYourLocalProject',()=>JSObjAndroid);3.require("xxx")组件故障js代码有时需要("xxx")组件报错解决方法:检查你的服务器上是否存在node组件,如果有是自己封装的NativeModule,可以直接使用varCustomMoudle=React.NativeModules.YourCustomModuleCustomMoudle.yourMethodDeclearInYourNative('someparms');4.调试解决方案:可以使用PC端chrome的调试工具调试js端,原生调试只能用logcat跟踪,目前看到的大部分错误都是自己代码的问题,ReactAndroid本身少了Crash5.so库问题,如果使用gradle,可以通过ndkfilter控制:android{defaultConfig{ndk{abiFilters"x86","armeabi-v7a"}}对于maven,可以手动复制libs下的so解决问题。这块有一个比较大的坑。默认导入的jsc.aar里面有个armabi文件夹,但是里面没有jsc.so。导致在很多地方,ndk在编码源码的时候会报错。6.关于设备MinSdkVerison,默认Android要求是4.1以上(根据网络资料4.0约占0.7,因为大部分APP不再支持4.0以下的设备,这是可以接受的)我从5.0开始一直用5.0的设备一开始进行ReactAndorid的测试和开发,后面的方向,其实使用5.0+的genymotion模拟器联调效率会更高。7.UIExplorerdemo问题之前一直在看具体的接入和代码实现。回过头来看工作大头,其实当时应该从这个UIExploror入手,效率和进度应该会有很大的提升。这块需要编译react源码。如果遇到https://github.com/facebook/react-native/issues/3976的问题,可以使用我下面回复的方法hook,但本质原因还是armabijsc.so问题8.能力覆盖根据团队之前在ReactiOS的经验,跟进主要代码,依托RN自身提供的UI组件,可以满足大部分业务场景。当然,如果想复用团队之前安定下来的东西,配合UIManager和UIModule也不是什么太大的工作量。但是要尽量和团队未来的JS端和iOS端的协议接口保持一致,这样才能发挥React***的意义,“精益一次,到处跑”9.数据安全前0.14,仅支持dev-pc和assert方法。从0.14.0release版本开始,支持本地文件补丁加载方式,最新版本为0.15.1。因为如果要动态能力,js必须从网络端发送,js本身是明文(即使js被混淆),必须做数据防劫持保护,这个可以结合https防篡改+签名校验10、JNI消息轮转训练的影响由于JNI的通信限制,Java层与Native的通信是单向的,为了保证RN的16ms渲染频率,Java层的所有通信-Native-jscore层是异步的,这可能是JAVA层UI渲染的性能问题。当消息量很大或者Listview页面很复杂时,每层Cells的渲染都需要使用Css-ScrollerView模型不断绘制UI线程。负责listview等的瀑布流可能存在性能问题,但问题本身绝对是优势。H5经验