Skip to content

Latest commit

 

History

History
175 lines (124 loc) · 6.41 KB

File metadata and controls

175 lines (124 loc) · 6.41 KB

timepill app

TODO

  1. 在日记详情页修改日记后,回到详情页日记内容没有变更
  2. 草稿功能未实现
  3. 别人的日记页不应该提示 写一篇日记吧
  4. 写日记后,我的日记页自动刷新
  5. 日记本页优化
  6. 日记本添加编辑页
  7. 设置页
  8. 回复某人偶尔会丢失回复人的问题
  9. iOS 不做更新检查

android 打包 js bundle 方法(iOS编译时会自动打包)

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/

RN 版本问题

目前使用的 0.53 版本,iOS 完美,android 有个 TextInput 的 崩溃问题

0.55 在 iOS 上问题较多,自带输入法无法输入中文,react-native-navigation 兼容问题(隐藏 tab 不稳定,有时候出白条,有时候闪烁) android 没有仔细测试,不清楚具体问题多少

android 已知问题修复

android 平台 jpush 和 react-native-navigation 兼容问题解决

问题现象

android App 在后台状态,点击通知 App 会重置

原因

react-native-navigation 的启动逻辑是在 MainActivity 启动时,主 Activity 从 MainActivity 替换成 NavigationActivity 见:https://wix.github.io/react-native-navigation/#/android-specific-use-cases?id=why-overriding-these-methods-in-mainactivity-won39t-work 而 jpush 处理点击时,总是去激活 MainActivity ,这就导致总会产生一个新的 NavigationActivity

处理办法是修改 jpush 处理点击的逻辑

修改 jpush-react-native/android/src/main/java/cn/jpush/reactnativejpush/JPushModule.java 544 行

if (isApplicationRunningBackground(context)) {
    ComponentName componentName = getTopActivity(context);
    intent = new Intent();
    if (componentName != null) {
        intent.setClassName(componentName.getPackageName(), componentName.getClassName());
    } else {
        intent.setClassName(context.getPackageName(), context.getPackageName() + ".MainActivity");
    }
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
} else {

并增加一个函数 getTopActivity

private static ComponentName getTopActivity(Context context){
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Service.ACTIVITY_SERVICE);
    if (activityManager == null) return null;
    List<ActivityManager.RunningTaskInfo> runningTaskInfoList = activityManager.getRunningTasks(Integer.MAX_VALUE);
    for (ActivityManager.RunningTaskInfo taskInfo : runningTaskInfoList) {
        if (taskInfo.topActivity.getPackageName().equals(context.getPackageName())){
            return taskInfo.topActivity;
        }
    }
    return null;
}

获取 getTopActivity 的原因

App 后台,或者退出后,通过通知唤起,都会进入 isApplicationRunningBackground 的分支条件 从后台唤起,应该激活 NavigationActivity ,而退出状态下唤起,不能直接启动 NavigationActivity,因为缺少初始化的参数 NavigationActivity 的初始化时通过 MainActivity 运行的 所以需要先获取当前激活的 Activity,如果有,则直接激活,如果没有,则启动 MainActivity

jpush 引起崩溃的问题

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.util.SparseArray.get(int)' on a null object reference at cn.jpush.reactnativejpush.JPushModule$MyJPushMessageReceiver.onAliasOperatorResult(JPushModule.java:654) at cn.jpush.android.a.a$a.run(SourceFile:76) at android.os.Handler.handleCallback(Handler.java:808) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:166) at android.os.HandlerThread.run(HandlerThread.java:65)

修改 jpush-react-native/android/src/main/java/cn/jpush/reactnativejpush/JPushModule.java 85 行

    if (null != sCacheMap) {
         sCacheMap.clear();
-        sCacheMap = null;                   //删掉这行
    }

android react-native-fetch-blob 问题

如果 android targetSdkVersion >= 24 ,自动更新打开安装包的动作会报错

RNFetchBlob.android.actionViewIntent(resp.path(), 'application/vnd.android.package-archive');

所以 sdk 暂时使用 23

官方有一个修复的pull,不过还没合并

wkh237/react-native-fetch-blob#614

需要持续关注

iOS 已知问题修复

react-native-image-crop-picker iOS 安装问题

建议按照官方的 pod 方式安装 注意:安装 pod 后,需要从 xcode 里打开 xcworkspace 文件才能编译通过

react-native-fabric iOS 安装问题

react-native-fabric react-native link 的时候,会通过 pod 安装,但是 pod 方式安装编译失败, 暂时没有找到解决办法,最好是 link 后恢复自动修改的 pod 文件,通过手动方式安装

iOS FlatList 手动下拉刷新后,用程序触发刷新,刷新指示器不显示的问题

修改 react 源码 /React/Views/RCTRefreshControl.m 57 行

-    CGPoint offset = {scrollView.contentOffset.x, scrollView.contentOffset.y - self.frame.size.height};
+    CGPoint offset = {scrollView.contentOffset.x, scrollView.contentOffset.y - 60};

一直存在的问题,官方一直没有修改

react/react-native#17734

RN 0.55 TextInput 无法输入中文的问题

已确认 RN bug

反馈:react/react-native#18403 (comment)

pull:react/react-native#18456

还未合并,持续关注

可手工修改代码解决

bugs

oblador/react-native-vector-icons#626

android 目前加载图片没有进度条,因为官方的 Image 组件没有获取进度的事件

第三方组件 react-native-fast-image 有进度事件 但是 onLoad 事件触发诡异,无法实现加载进度

react-native-navigation 在 android 上 debug 时没有进度条,如果无法链接更新服务器则会卡在启动屏上

Debug Server 问题

Debug Server 出现 While resolving module react-native-vector-icons/Ionicons 错误

rm ./node_modules/react-native/local-cli/core/fixtures/files/package.json rm ./node_modules/react-native/local-cli/core/fixtures/files/package.json

oblador/react-native-vector-icons#627