Flutter对接极光认证的注意事项
签名
极光的后台只能配置一个应用签名,如果应用的debug签名和release签名不同,那么就只能选择其中一个填写到极光的后台,这种情况会导致要么debug(开发调试)无法使用一键登录,要么release无法使用。
我目前采用的做法是将debug和release共用一个签名,可以规避上述问题,但是由此会产生什么问题,目前尚未可知。
修改android/app/bulid.gradle
的android
节点,仅保留signingConfigs
的一个子节点,让buildTypes
的release
和debug
共用signingCOnfigs.config
。
其中buildTypes.release
还有一些额外的配置,例如minifyEnabled
、useProguard
等是开启混淆所需要的配置,混淆是必须使用的配置,将在下文说明。
android {
...
signingConfigs {
config {
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
storeFile file('debug.keystore')
}
}
buildTypes {
release {
signingConfig signingConfigs.config
shrinkResources false
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.config
}
}
...
}
混淆
集成完极光的认证后,iOS可以正常使用,但是安卓只能在开发调试时有效,build release
打完生产包后,认证会出现6001
的错误信息,经过与极光工作人员的沟通之后,找到了解决方法。
方法很简单,那就是开启混淆,并且根据极光安卓的配置文档配置混淆内容。
配置混淆
创建 /android/app/proguard-rules.pro
文件,并添加以下规则:
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
-dontwarn cn.com.chinatelecom.**
-keep class cn.com.chinatelecom.** { *; }
-dontwarn com.ct.**
-keep class com.ct.** { *; }
-dontwarn a.a.**
-keep class a.a.** { *; }
-dontwarn com.cmic.**
-keep class com.cmic.** { *; }
-dontwarn com.unicom.**
-keep class com.unicom.** { *; }
-dontwarn com.sdk.**
-keep class com.sdk.** { *; }
-dontwarn com.sdk.**
-keep class com.sdk.** { *; }
切记上述内容需要全部添加。
开启混淆
打开 /android/app/build.gradle
文件,定位到 buildTypes
块。
在 release
配置中将 minifyEnabled
和 useProguard
设为 true
,再将混淆文件指向上一步创建的文件。
android {
...
buildTypes {
release {
signingConfig signingConfigs.config
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
...
}
proguard-android.txt
文件由系统自动创建,不需要手动创建。
获取log
向极光工作人员反馈问题时,最好带上出现问题时的log文件。
开发调试时很容易获取,直接在Android Studio的log处就能拿到,但是打完生产包后如何获取日志?这个问题困扰了我许久,最后在极光的社区中找到了答案。
详情可以看这篇文章:https://community.jiguang.cn/article/98251,这里只简单讲下安卓release后获取日志的方法。
首先需要在代码中开启debug模式:
jverify.setDebugMode(true);
打包后在手机上进行安装,然后执行如下步骤:
1. 电脑通过USB连接手机
2. 进入终端(windows可以使用cmd),执行`adb logcat -f /sdcard/logjverify.txt`
3. 如果 adb 命令没用,说明你的环境变量里面没有配置 Android 环境变量
4. 在手机上打开app
5. `ctrl+c`退出adb,进入磁盘目录 `cd ~/Demo/logs`,如果没有的话,自己创建一个目录并进入
6. 执行`adb pull /sdcard/logjverify.txt`,将日志文件拉取到磁盘目录中
这时候就可以在~/Demo/logs
目录中看到logjverify.txt
文件。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!