A Blog to Write about Everything

0%

大家好~欢迎查阅本次更新日志。

v1.70.1的版本已经于2月14号发布了,修复了v1.70.0的数个问题。遇到一些奇怪的问题的用户可以升级下版本。

今年以来,「人升」陆续地登上了更多的应用市场:应用宝、华为应用市场、豌豆荚、360应用市场、UC等。

现在可以在上述的一些平台进行应用更新了。

(之前仅登录了酷安、小米、魅族、Google Play市场。华为应用市场的之前被侵权了,这次也靠着大家的举报和申诉成功拿回来了管理权)

本文会简单介绍各个新功能,以及其使用方法。

比如讲解了如何用坚果云做WebDAV备份。

总览

  1. 简洁模式

  2. 图片附件

  3. WebDAV备份

  4. 自定义属性

  5. 更多改进

    5.1 “撤销”功能优化

    5.2 动态显示效果优化

  6. 详细更新日志

阅读全文 »

上周六已经发布了本次1.69.0的更新。

更新内容覆盖面较广,本以为会出现很多问题,现在看来还好~

因为更新比较匆忙,当时没写更新介绍,现在补上。

有的更新内容不看更新日志不容易察觉,比如团队事项编辑的开放。

这次更新的主题是加强实用性,增强各个功能模块

开始正题之前,先发下这篇文章的总览:

总览

  1. 子任务

  2. 逾期处理

  3. 自定义排序以及菜单重制

  4. 桌面小部件升级

  5. 更多改进

    5.1 冻结

    5.2 编辑团队事项

  6. 详细更新日志

阅读全文 »

这个系列好久没更新了(离目标日渐遥远

这段时间的开发其实遇到了不少问题,不过都没及时记录导致最后也忘记了。

这里记一下新鲜的优化遇到的坑吧。

桌面小部件

之前匆忙写的桌面小部件是不支持分别显示不同清单的,并且还只能显示“所有”。

需要实现在桌面小部件,点击可以直接选择清单。

这里选择了透明Activity+BottomSheetDialog的方案,看上去没打开应用就进行了选择。

实现清单选择功能

第一步:实现透明Activity

透明Style(其实是历史代码):

1
2
3
4
5
6
7
8
9
10
<style name="Transparent_Activity" parent="AppTheme.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>

并且这个Activity应该是独立栈,所以将启动模式设置为singleInstance

并且在Activity处理Intent传递过来的appWidgetId参数,实现清单选择。

阅读全文 »

欢迎更新到v1.68.0~

这个版本可能是比肩商店系统的一次重要更新。

首先是实现了远比之前版本完善的成就系统,其次也更新了日历视图,各个页面也有大大小小的优化。

开始正题之前,先发下这篇文章的总览:

总览

  1. 全新的成就系统,56种成就。
  2. 日历视图
  3. 金币详情
  4. 历史页面
  5. 其他改进
  6. To Do
阅读全文 »

现在人升国内没有设置任何盈利手段,你们的捐赠和支持是我们更新的极大动力!😘

捐赠手段

支付宝

支付宝可以直接在应用内的关于界面跳转捐赠~

微信


捐赠名单

感谢以下各位的捐赠:

(按时间倒序排序)

时间 姓名 金额
2020/02/16 *培星 6.66
2020/02/15 *子贤 10.00
2020/02/15 *文涛 2.00
2020/02/15 (微信)夏 10.00
2020/02/14 (微信)楸 1.00
2020/02/14 *钰瑶 8.88
2020/02/13 (微信)我的名字 18.00
2020/02/13 (微信)就暮 2.88
2020/02/11 (微信匿名) 5.00
2020/02/09 *凯航 1.88
2020/02/09 *立国 9.99
2020/02/08 *杨 5.00
2020/02/06 *君瑞 2.77
2020/02/05 (微信)gorkor 5.20
2020/02/05 *明 6.66
2020/02/04 *鑫 3.65
2020/01/28 (微信)Good luck,Mr. Gosky. 20.00
2020/01/26 (微信)长欢 6.00
2020/01/22 (支付宝)*— 10.00
2020/01/18 (微信)Player 3.00
2020/01/17 (微信)sin 1.00
2019/12/30 (微信)HouRuilong 6.66
2019/12/28 *宇轩 3.00
2019/12/15 *银川 5.00
2019/12/13 *子秋 3.00
2019/12/11 (微信)竹璃纷染 3.00
2019/12/10 *奕斯 2.00
2019/12/08 *柏墚 2.00
2019/12/08 (微信)孙書云101029 2.00
2019/12/06 (微信匿名) 6.66
2019/12/05 *谦 7.77
2019/12/03 *裕钦 2.00
2019/11/23 *阳 10.00
2019/11/23 *克富 1.00
2019/11/04 【红巢】夕阳薄暮 1.00
2019/10/31 *孝宇 6.00
2019/10/31 *静 6.00
2019/10/31 酷安 @该账号涉嫌严重违纪 6.66
2019/10/28 *刚 5.00
2019/10/28 *江 6.00
2019/10/27 *艺 5.00
2019/10/26 *博超 1.00
2019/10/20 *海涛 3.00
2019/10/17 *佳佳 1.00
2019/10/10 *进伟 30.00
2019/10/03 *心煌 10.00
2019/09/24 *羽 2.00
2019/08/29 *步军 10.00
2019/08/29 *金陆 5.00
2019/08/25 *永振 3.00
2019/08/25 *静 10.00
2019/06/22 *思远 5.00
2019/05/21 *瀚禧 57.21
2019/04/12 *国浩 5.00
2019/04/06 *耿 0.01
2019/04/03 *金娥 5.00
2019/03/29 *浩宗 1.00
2019/03/21 *晓阳 10.00
2019/03/20 *泽恺 1.00
2019/03/19 *伟棠 5.00
2019/03/09 *翊淇 3.00
2019/02/27 *汉凯 6.66
2019/02/27 *京 9.99
2019/02/15 *猛 5.00
2019/02/14 *涵予 5.00
2019/02/02 *佳融 5.00

参考: https://blog.csdn.net/qq_16445551/article/details/70213660

起因

这个问题其实一直存在,但是新版本增加了Toolbar收缩之后,就因为这个自动滚动直接导致了Toolbar收缩,现象更为明显。

解决办法

参考原文两个解决办法

如果你的应用的最小支持版本达到了Android KitKat 4.4的话,建议使用第一种方法。

简单总结一下:

  1. support.v7包的PopupMenu换成android.widget.PopupWindow包下的PopupMenu。

    对应到AndroidX的话,就是将androidx.appcompat.widget.PopupMenu换成import android.widget.PopupMenu

  1. 重写与PopupMenu绑定的AnchorViewrequestRectangleOnScreen(Rect rectangle, boolean immediate)方法,并且return false

参考: https://github.com/Kotlin/kotlinx.coroutines/issues/799

起因

发布了《人升》新版本后,

线上突然出现了数个Kotlin协程相关的异常。

IllegalStateException: Module with the Main dispatcher is missing. Add dependency providing the Main dispatcher, e.g. ‘kotlinx-coroutines-android’

而我们肯定是已经依赖了kotlin的协程库的,问题不在于此。

不是很懂为什么在更新的好几天之后才集中爆发这个问题。

查询了一下发现是升级kotlin版本后的混淆bug,要增加几条混淆规则。

混淆规则

https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro

将以下混淆规则加入到项目的混淆规则文件中:

1
2
3
4
5
6
7
8
9
10
# ServiceLoader support
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepnames class kotlinx.coroutines.android.AndroidExceptionPreHandler {}
-keepnames class kotlinx.coroutines.android.AndroidDispatcherFactory {}

# Most of volatile fields are updated with AFU and should not be mangled
-keepclassmembernames class kotlinx.** {
volatile <fields>;
}

然后重新编译打包发版吧~

找到实习后,挺长一段时间没更新了。

《人升》的话,最近接入了Crashlytics,更新了金币系统等等。

回忆一下Crashlytics的接入过程~

为什么选择Crashlytics?

  • 不需要额外权限

    而国内很多崩溃统计向的都有不少权限要求,比如友盟统计必须依赖READ_PHONE_STATE等权限。

  • 国内也能访问

    是的,虽然Crashlytics属于Firebase,但是并没有用到Google的服务器。

  • 配置简单,不需要额外代码

    这一点我也很惊喜,只需要在Gradle文件里进行一些配置。项目代码甚至不需要任何变动。

  • 能直接在Crashlytics后台看到混淆前的堆栈信息

另外除了崩溃分析/管理功能外,其实还能在控制台看到活跃用户统计、用户行为分析、次日留存率、版本情况等等。

查看这些信息感觉很有助于维持更新兴趣~

总体来讲,感觉Crashlytics很适合独立开发者使用。

接入Firebase以及Crashlytics

Crashlytics已经被并入了Firebase体系,所以要先接入Firebase。

Fabric虽然还能直接加入Crashlytics,但是仅提供支持到2020年3月31号,官网也在建议用户迁移至Firebase。

接入Firebase可以参考官方教程

流程可以概述为:

  1. 创建Firebase项目

  2. 注册应用,上传签名的SHA码

    这两步在官网跟着流程走就可以,就不详细说明了。

  3. 下载 google-services.json放到项目的模块目录(一般是app文件夹里)中。

  4. 项目级gradle文件里加入Firebase和Crashlytics配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    buildscript {
    ...

    repositories {
    // 加上这两个仓库地址
    google()
    maven {
    url 'https://maven.fabric.io/public'
    }
    }
    dependencies {
    classpath 'com.google.gms:google-services:4.3.0' // Google 服务
    classpath 'io.fabric.tools:gradle:1.29.0' // Crashlytics 插件
    }
    }
  5. 模块级gradle文件里加入:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'io.fabric'

    dependencies {
    ...

    /** firebase **/
    implementation 'com.google.firebase:firebase-core:17.0.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

    }

    到这一步为止,其实已经集成完毕了。

  6. (可选)如果你的应用开启了代码混淆的话,建议在proguard-rules.pro文件里加入以下规则,以便拿到混淆前的堆栈信息:

    1
    2
    3
    4
    5
    6
    # Crashlytics
    -keepattributes *Annotation*
    -keepattributes SourceFile,LineNumberTable
    -keep public class * extends java.lang.Exception
    -keep class com.crashlytics.** { *; }
    -dontwarn com.crashlytics.**
  7. 测试一下崩溃吧

    在相应的地方可以用以下语句制造一个崩溃,然后过几分钟后,前往Firebase的后台查看崩溃信息吧~

    1
    Crashlytics.getInstance().crash() // 制造一个崩溃

更多玩法

更多Crashlytics的用法可以参考官方的页面,比如可以记录try-catch住的异常,自定义一些key-value信息方便分析崩溃等等。

Original Publish

这件事的最恐怖之处在于,既不是意外,也不是群体作案,只是一个恶魔因不明原因想报复就造成了这么大的损伤。

京阿尼在日本动画业界是独树一帜的存在:几乎所有的工作都是内部员工完成,培养自己的原画师,福利制度,以及完全不用担心的作品高质量。只因为一个疯子就损失了大半有生力量。

7月18号,早上看到京阿尼工作室遭纵火的消息。初还不相信,看到死亡1人的时候还觉得不是特别严重。然后看着死亡人数慢慢升到了33人,再后来变成34人遇难。心情非常复杂,难受。又忍不住继续看事件的报道更新,然后继续难受。

一开始是看了《K-ON》接触到了京阿尼,动画演绎的形式让这部音乐题材的漫画焕发了新生。初还觉得不会对音乐类的动画感兴趣,看完感觉真香。原来日常都能演绎得这么温馨有趣!

后续看了京阿尼的其他作品,无一不是制作精良。生活忙碌之后,虽然有几部京阿尼的番剧还没看,但想着,有京阿尼在,优秀的番剧总会源源不断地产出吧,囤着慢慢看也不迟。但…

希望奇迹能发生,希望不要再有遇难人数增加了。希望我们还能再遇见京阿尼。

也希望各方能依此次事件加强安保,减少、杜绝这种个人恐怖袭击事件。


另外,看到一些幸灾乐祸和道德绑架捐赠者的言论也很是难受。

拿捐赠来说,他人捐赠何方是他人意愿,哪容得你一个外人干预。甚至你可以去呼吁不要捐赠,但请不要恶意评论捐赠者。更何况,我甚至怀疑那些人可曾进行过捐赠。

不过,他们也不会看这些的吧。