native react 打包后闪退

2018-05-15 14:10:06 student9128 阅读数 6639

Android原生项目集成了React Native后,打包成release运行起来后会出现闪退情况。
原因:没有将React Native文件打包进去。
解决方案:需要添加bundle文件
在Android工程里的assets文件夹下生成bundle文件:
在工程目录下输入命令如下:

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

注意:看一下你的入口是index.android.js还是index.js,根据情况修改命令。

2018-01-16 15:01:00 weixin_30569001 阅读数 151

根据现实情况,先虚拟个场景

客户:喂,小王,上周发布的新版本,用着用着闪退了呢,是不是有什么问题?

小王:奥?主任,能说一下进行了那些操作吗?

客户:具体的我也不是很清楚,下面具体使用的人反应上来的,情况比较紧急,能帮忙看一下哪里出的问题吗?

小王:奥,这样啊。那我马上看一下吧,解决了,给您回复。

 

解决方案

收集日志以帮助开发者迅速定位问题。

 

产品选型

集成第三方服务,最终选择了腾讯家的bugly

 

集成过程(iOS)

  1. 添加pod

    pod ‘Bugly’

  2. 安装组件

    cd ‘工程目录’
    pod install

  3. 修改AppDelete,添加bugly服务

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  [Bugly startWithAppId:@"此处替换为你的AppId"]; return YES;

}

 

问题定位测试

  1. 修改ReactNative代码,人为造成一个闪退

    _renderMenu(item, index) {
            return (
                <TouchableOpacity style={styles.touchableOpacityItem}
                                  onPress={this._openNewRn.bind(this, item)}
                                  key={'image' + index}>
                    <Image style={styles.thumb} source={{uri: item.ImageUrl}}/>
                    <Text style={styles.menuText}>{item.name + this.state.m.x}</Text>
                </TouchableOpacity>
            );
        }

    // 注:this.state.m.x这段代码,根本取不到值,开发模式下会有红色的警告,产品模式下直接回闪退
  2. 打包APP,安装,正常运行,点击闪退的页面

   3. 重新打开APP

印象里,这类闪退服务,都是在“下一次启动时”上传日志

  4. 打开bugy后台,查看错误信息(如图)

  

 

转载于:https://www.cnblogs.com/univalsoft-mobile-team/p/8296698.html

2018-11-20 23:59:40 wyw223 阅读数 2970

react native 版本0.57.4
最近在用react native打包成apk,打开打包后的apk,发现闪退,
经过排查是因为最近用的 第三方库 react native mapbox gl 的配置不对,
还有js代码写的有问题
所以闪退一般是因为第三方库的配置有问题或者js 代码写的有问题

2018-07-17 12:28:25 suwu150 阅读数 6277

undefined is not an object (evaluating ‘s.View.propTypes.style’)

1.问题描述
我在用react-native进行项目打包的时候,我的debug模式在真机中能够运行,在release模式下运行时闪退,我在Android studio中查看logcat的时候,出现下面代码,

07-10 19:05:07.446 12390-12436/? E/ReactNativeJS: undefined is not an object (evaluating 's.View.propTypes.style')
07-10 19:05:07.455 12390-12436/? E/ReactNativeJS: Application Lova has not been registered.

    Hint: This error often happens when you're running the packager (local dev server) from a wrong folder. For example you have multiple apps and the packager is still running for the app you were working on before.
    If this is the case, simply kill the old packager instance (e.g. close the packager terminal window) and start the packager in the correct app folder (e.g. cd into app folder and run 'npm start').

    This error can also happen due to a require() error during initialization or failure to call AppRegistry.registerComponent.
07-10 19:05:08.012 1003-1271/? E/WifiStateMachine:  ConnectedState (when=-5ms what=131155 arg1=5!CMD_RSSI_POLL 5 0 "11223344" ac:c1:ee:3c:82:dd rssi=-51 f=2412 sc=60 link=65 tx=0.5, 0.0, 0.0  rx=0.3 bcn=0 [on:0 tx:0 rx:0 period:2983] from screen [on:0 period:-2082616660] gl hn u24 rssi=-46 ag=0 hr ticks 0,0,0 ls-=0 [56,56,56,56,61] brc=0 lrc=0
07-10 19:05:08.015 1003-1271/? E/WifiStateMachine:  L2ConnectedState (when=-8ms what=131155 arg1=5!CMD_RSSI_POLL 5 0 "11223344" ac:c1:ee:3c:82:dd rssi=-51 f=2412 sc=60 link=65 tx=0.5, 0.0, 0.0  rx=0.3 bcn=0 [on:0 tx:0 rx:0 period:3] from screen [on:0 period:-2082616657] gl hn u24 rssi=-46 ag=0 hr ticks 0,0,0 ls-=0 [56,56,56,56,61] brc=0 lrc=0
     get link layer stats 0

我的注册文件从如下所示:

import { AppRegistry } from 'react-native';
import App from './App';

AppRegistry.registerComponent('Lova', () => App);

同时,我也在csdn进行了提问–https://ask.csdn.net/questions/694368

2.导致原因
错误不在于Application Lova has not been registered,其主要错误在于下面这段问题

E/ReactNativeJS: undefined is not an object (evaluating 's.View.propTypes.style')

对应到真实的react-native代码中,是如下代码问题:

  static propTypes = {
    frontStyle: TextInput.propTypes.style,
    delimiterStyle: TextInput.propTypes.style,
    behindStyle: TextInput.propTypes.style,
    style: View.propTypes.style,
  };

是由于react-native库的问题,在使用debug的时候,TextInput.propTypes.styleView.propTypes.style是能够正常提供的,但是在release版本中,不能够正常提供
从而导致打包bundle.js的时候出错,这也就是当我们使用命令进行打包bundle.js的时候,采用–dev true的模式能够正常运行的原因

3.解决方案

在发布版本的时候删掉代码中的propsType校验TextInput.propTypes.styleView.propTypes.style或者直接就不用

注意:我当前使用的版本是
Environment:
Node: 8.3.0
npm: 5.3.0
Watchman: 4.9.0
Android Studio: 3.1 AI-173.4819257

Packages: (wanted => installed)
react: 16.0.0 => 16.0.0
react-native: ^0.51.0 => 0.51.1

2019-12-28 17:26:35 Aichiwawacai 阅读数 209

React Native app闪退 显示 “很抱歉, ‘xxx’ 无法运行”

这种情况一般是因为第三方库的配置有问题或者js 代码写的有问题

  1. 首先看看js代码是否有问题

去官方下载正确的代码

import React from 'react';
import { View, Text } from 'react-native';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';

class HomeScreen extends React.Component {
    render() {
        return (
            <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
                <Text>Home Screen</Text>
            </View>
        );
    }
}

const AppNavigator = createStackNavigator({
    Home: {
        screen: HomeScreen,
    },
});

export default createAppContainer(AppNavigator);

然后惊喜的发现可以正常运行
所有可以断定是因为js代码有问题导致的闪退, 我冤枉了node.js 。。。

2.查看js 代码


import React, {Component} from 'react';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import 'react-native-gesture-handler';

import Index from './src/index/index';
import Search from './src/search/search';



const AppNavigator = createStackNavigator({
        Index: Index,
        Search: Search,
    },
    {
        initialRouteName: 'Index',
    });


const AppContainer = createAppContainer(AppNavigator);

export default class App extends React.Component {
    render() {
        return <AppContainer />;
    }
}

发现是index.js中的下面一段代码有问题

<View style={styles.search}>
                    <View style={styles.searchInput} onClick={() => { document.location.href = "search.html"; }}>
                        <Image style={styles.searchIcon} source={{uri:"http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/search2-2fb94833aa.png"}}/>
                        <Text  style={styles.searchText}>商品搜索, 共{this.state.goodsCount}款好物</Text>
                    </View>
                </View>

删了就可以正常了。。。好吧。我该好好学习RN 基础知识了

React Native之打包

阅读数 10919