RN真机调试正常,release发布后可以打开,发起axios请求时闪退,后端没捕捉到请求。



  • 请各位大佬帮忙看下什么问题!
    发布版本确认是发起axios后,直接闪退!而真机调试时是正常的

    我使用发布的方式是:
    1.build.gandle的 signingConfig调为signingConfigs.release(当然证书都有)
    2.在根目录下运行:
    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
    3.在android目录下运行:
    ./gradlew clean(清除ouput下的打包文件)
    ./gradlew assembleRelease(如果报错,删除app/res下的相关报错资源文件以及raw下的文件)
    最后发在手机上看效果,出现点击登录就闪退

    前端请求如下:
    tologin=()=>{ //192.168.0.112
    this.setState({
    loading:true
    })
    Axios.get(${config.serverUrl}/login/logon?username=${this.state.username}&password=${this.state.password}).then(res=>{
    if(res.status==200){
    this.setState({loading:false},()=>{
    this.props.setLogin(res.data[0])
    ToastAndroid.show('登录成功',2000)
    setTimeout(()=>{
    this.props.navigation.navigate('MainRouter')
    },2000)
    })
    }
    // else if(res.status==201){
    // ToastAndroid.show(res.data.message,2000)
    // }
    else{
    ToastAndroid.show("服务器异常!",2000)
    }
    }).catch(e=>{
    ToastAndroid.show(e,2000)
    })
    }

    后端接口如:
    router.get('/login/logon',async (req,res,next)=>{
    let username=req.query.username;
    let password=req.query.password;
    let result=await login('base_user',username,password)
    res.status(200).send(result)
    })



  • android9以后需要在manifest里配置允许http访问(debug版本是允许的,但release需要手动添加)
    另外,打包apk不需要也不应该执行react-native bundle命令,这个强调过很多次了



  • 1.我的AndroidManifest.xml是有网络访问权限了的:
    <uses-permission android:name="android.permission.INTERNET" />
    2.之前试过不用bundle打包发现也有闪退的问题,才试试这种release方式
    3.按正常不用bundle的方式打包,会出现很多提示,不知道是不是需要升级:

    Configure project :react-native-orientation
    WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
    It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

    Task :@react-native-community_async-storage:compileReleaseJavaWithJavac
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules@react-native-community\async-storage\android\src\main\java\com\reactnativecommunity\asyncstorage\AsyncStorageModule.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

    Task :app:bundleReleaseJsAndAssets
    warn The following packages use deprecated "rnpm" config that will stop working from next release:

    Task :react-native-gesture-handler:compileReleaseJavaWithJavac
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerButtonViewManager.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    注: 某些输入文件使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

    Task :react-native-reanimated:compileReleaseJavaWithJavac
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-reanimated\android\src\main\java\com\swmansion\reanimated\NodesManager.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-reanimated\android\src\main\java\com\swmansion\reanimated\NodesManager.java使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

    Task :react-native-screens:compileReleaseJavaWithJavac
    注: 某些输入文件使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    注: 某些输入文件使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

    Task :react-native-sound:compileReleaseJavaWithJavac
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-sound\android\src\main\java\com\zmxv\RNSound\RNSoundModule.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

    Task :react-native-video:compileReleaseJavaWithJavac
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-video\android\src\main\java\com\android\vending\expansion\zipfile\APEZProvider.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-video\android\src\main\java\com\brentvatne\react\ReactVideoViewManager.java使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

    Task :react-native-webview:compileReleaseJavaWithJavac
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-webview\android\src\main\java\com\reactnativecommunity\webview\RNCWebViewManager.java使用或覆盖了已过时的 API。
    注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    注: D:\Android\workspace\ReactApp\SevenPenguin\node_modules\react-native-webview\android\src\main\java\com\reactnativecommunity\webview\RNCWebViewManager.java使用了未经检查或不安全的操作。
    See https://docs.gradle.org/5.5/userguide/command_line_interface.html#sec:command_line_warnings

    BUILD SUCCESSFUL in 5m 49s
    244 actionable tasks: 219 executed, 25 up-to-date



    1. 我说的并不是网络权限,而是对clearText也就是http的限制
    2. 再强调一遍,打包apk不需要也不应该执行react-native bundle命令
    3. 警告非常正常,没有任何影响


  • 大佬,可以了;非常感谢



  • @linyangcong 你好,请问问题解决了吗?我现在使用axios,debug没问题,release只要调接口就会闪退


Log in to reply