高质量React Native项目发布之前的检查步骤

本文摘译自React Native Final Steps

在React Native发布上线之前的优化步骤:

移除日志

官方方法

{
  "env": {
    "production": {
      "plugins": ["transform-remove-console"]
    }
  }
}

非官方方法

将console.log函数写成空函数

if (!__DEV__){console.log={}}

压缩图片

除了自动化压缩外,最后再用Squoosh.app手动压缩一下

依据具体情况删除默认的安卓权限

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myappid"
+   xmlns:tools="http://schemas.android.com/tools"
    >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+   <uses-permission tools:node="remove" android:name="android.permission.READ_PHONE_STATE" />
+   <uses-permission tools:node="remove" android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+   <uses-permission tools:node="remove" android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:theme="@style/AppTheme">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    </application>

</manifest>

使用ProGuardHermes 加固压缩优化安卓

质量检查

检查性能

打开In-Call Status Bar检查布局

低速网络环境检查

可使用Network Link Conditioner配合测试

可达性检查

启动性能优化

检查bundle大小,最好不要超过10M

# Generate your Android production bundle (just code no assets)
$ yarn react-native bundle --platform android --dev false --entry-file index.js --bundle-output ./index.android.bundle

# Generate your iOS production bundle (just code no assets)
$ yarn react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ./index.ios.bundle

考虑开启inline require

对于安卓考虑使用ABI分割

掌控崩溃情况

使用App Center或者Firebase Crashlytics收集崩溃报告
优雅的崩溃

使用 React Native Exception Handler.

禁止生产环境localhost访问

可使用fastlane自动修改plist


Total views.

© 2013 - 2020. All rights reserved.

Powered by Hydejack v6.6.1