移动端系统生物认证技术详解

相信大家对于生物认证应该不会陌生,使用指纹登陆或者 FaceId 支付等的需求场景如今已经很普遍,所以基本上只要涉及移动端开发,不管是 Android 、iOS 或者是 RN 、Flutter 都多多少少会接触到这一业务场景。

当然,不同之处可能在于大家对于平台能力或者接口能力的熟悉程度,所以本篇主要介绍 Android 和 iOS 上使用系统的生物认证需要注意什么,具体流程是什么,给需要或者即将需要的大家出一份汇总的资料

继续阅读移动端系统生物认证技术详解

使用allowInsecureProtocol属性解决gradle的仓库地址不安全警告

使用 allowInsecureProtocol 属性解决 gradle 的仓库地址不安全警告,在 IDEATerminal 中使用命令

可以打印出当前 gradle 存在的所有警告信息。

如果有报以下警告:

说明你配置了除 maven 中央仓库之外的其他不安全的仓库(至于“不安全”在这里的定义,我也不是很清楚,一些国内的镜像仓库例如阿里的也是“不安全”的)gradle 中有一个属性可以允许 gradle 使用“不安全”的仓库并且不报警告信息,该属性是 allowInsecureProtocol,官方的

翻译过来就是指定通过不安全的HTTP连接与仓库通信是否可接受,如果该属性的值设置为 true,则表示接受“不安全”的仓库地址。

目前,升级项目的 gradle 7.0.2 版本之后,报错如下:

只需要在 build.gradle 中进行如下的配置即可:

参考链接


使用 allowInsecureProtocol 属性解决 gradle 的仓库地址不安全警告

Flutter单元测试报错“Error: Not found: 'dart:ui'”

开发环境:macOS Big Sur (11.6.2)/Flutter 2.8.1/Android Studio Atrctic Fox (2020.3.1 Patch 4)

参照 将Flutter module集成到Android项目(Android Studio Arctic Fox 2020.3.1/Flutter 2.8.1) 建立项目,在执行 Flutter 单元测试代码的时候报错

继续阅读Flutter单元测试报错“Error: Not found: 'dart:ui'”

Android Studio 2020.3.1 编译报错 "Installed Build Tools revision 32.0.0 is corrupted"

最近,在使用升级老项目的 compileSdkVersion 32 进行 Android 12L适配的时候,报错

详细的报错信息如下:

报错产生的原因是从 Android SDK 31.0.0 开始,SDK里面的构建工具 dx.jar 被改名成 d8.jar,早期(7.x之前)的构建工具在尝试调用的时候找不到原来的的 dx.jar 导致报错。

解决方法有两种:

  1. 升级根目录下的 build.gradle 中的 'com.android.tools.build:gradle:4.1.3'7.0.4 以及以上的版本。
  2. 复制或者创建快捷方式把 d8.jar 复制并改名成 dx.jar

参考链接


Android Studio error "Installed Build Tools revision 31.0.0 is corrupted"

macOS Big Sur(11.6.2) Android Studio (version 2020.3) 执行 flutter doctor 报错

在执行 flutter doctor --android-licenses 的时候报错:

原因为 Java 版本太高,Flutter 1.22.5 只能使用 Java 1.8版本:

对于错误

原因:

Android Studio(4.1)后,安装插件的位置发生了变化,但是flutter doctor还是去原先的位置找,导致的安装过插件还报错。

解决方法:

更简单的方式是执行

升级到 flutter 2.8.1 以及之后的版本即可。

参考链接


UiAutomation injectInputEvent注入屏幕点击事件

注意:injectInputEvent 的第二个参数 sync 当被设置为 true 的时候,只可在测试框架的子线程中调用,不可在被测试者的主线程(UI线程)中调用,否则会导致被测试UI线程阻塞。原因是调用之后需要在另一个线程中等待执行结果。

参考链接


How to inject click event with Android UiAutomation.injectInputEvent

Android跳转权限设置页面

最近项目上有个需求,读取通讯录。当用户点了拒绝访问通讯录或者其他权限,导致无法使用,这时候我想重新打开权限设置,但是对于很多小白用户不知道怎么设置,这就会导致用户体验不友好的一面。

之前已经有人写过类似的文章,不过都比较分散,经实测将这些方法总结了一下。

要跳转的权限设置界面如图:目前手上只有华为和小米作为测试

继续阅读Android跳转权限设置页面

国产手机Android R(Android 11)系统执行Espresso UI(AndroidX)遇到的问题总结

最近在 Android R(Android 11)系统上执行以前写的Espresso UI(AndroidX)单元测试用例的时候,发现在 联想拯救者电竞手机Pro(128GB) 系统版本 12.5.225上,如果测试用例申请了通讯录写入权限,如下:

那么测试用例执行的时候,会报告如下错误:

详细的logcat日志如下:

目前测试发现,即使通过GrantPermissionRule授予权限,也是没用的,代码根本来不及执行,应用就一下被系统杀死了。

目前只能是不测试这部分功能。

OPPO/VIVO/小米等手机上,需要手工开启 后台弹出界面权限 才能执行单元测试。有个思路是通过UI Automator来自动开启这个权限,暂时还需要测试一下。

参考链接


Android R(11) ContentResolver报错java.lang.IllegalArgumentException: Invalid token limit

Android 11执行如下代码:

会出现如下错误:

原因为 Android 11 上使用 ContentResolver 的时候,已经不允许进行 SQL语句拼接,主要是为了防止 SQL注入攻击。

代码参考如下:

参考链接


limiting number of rows in a ContentResolver.query() function