起因:上传Google后台的apk有错误警告,运营希望尽快处理,错误警告如下
自检定位问题:
1、查询 recaptcha 是什么。经查询应该是进行安全验证的插件包。
reCAPTCHA项目是由卡内基梅隆大学所发展的系统,主要目的是利用CAPTCHA技术来帮助典籍数字化的进行,这个项目将由书本扫描下来无法准确的被光学文字识别技术识别的文字显示在CAPTCHA问题中,让人类在回答CAPTCHA问题时用人脑加以识别。
2、检查 gralde 配置文件中是否引用 com.google.android.recaptcha:recaptcha:18.1.2,如果有,直接更新成新版本 18.4.0 即可
而我们在gradle中并没有发现引用,所以需要查询是否是其他现有的sdk引用了。
3、查询所有sdk的引用结构。需先导出安卓项目,从安卓项目中执行gradle 查询依赖关系的命令,查询项目中的所有依赖,存储到 log.txt 中。从中我们找到警告中提到的包,并且版本也能对的上。接下来就是更新。
gradlew app:dependencies > log.txt
解决问题:
1、查询firebase更新日志没发现明确说明 recaptcha 更新的日志,但是经各种线索查找,发现更新即可解决。接下来进行更新。
firebase 更新日志地址 https://firebase.google.com/support/release-notes/unity
2、导入最新的 firebase-Unity sdk 到一个空项目中。导入需要的几个插件包,我们只需要以下5个插件,所以只导入了这几个,下载地址如下,暂时测试结果是,可以更改版本号下载到指定的版本
https://dl.google.com/firebase/sdk/unity/firebase_unity_sdk_11.9.0.zip?hl=zh-cn
3、复制项目中 Assets/Firebase/Plugins 里的文件到自己项目中,程序中调用的代码就是这些
复制项目中 Assets/GeneratedLocalRepo 文件夹到自己项目Assets下,这些是unity能调用firebase原生安卓包必备的jar包。这个目录需要在安卓的gradle中配置
注意:Assets/Firebase/Plugins/Android 里可能有某个包自带的额外的jar包,需要一并复制到自己项目中。例如 firebase-Messaging 就有 firebase-messaging-cpp.aar
4、更新配置 Gradle/Podfile ,利用插件自带的依赖管理器处理安卓和iOS的依赖。
安卓
Assets/External Dependency Manager/Android Resolver/Force Resolve
取 Plugins/Android/maintemplate.gradle 中被以下注释涵盖的内容复制到自己的gradle
// Android Resolver Dependencies Start //例如这个 implementation 'com.google.android.gms:play-services-base:18.4.0' // Assets/Firebase/Editor/AppDependencies.xml:17 // Android Resolver Dependencies End
把复制的 Assets/GeneratedLocalRepo 目录配置到gradle 的 repositories 中
// Android Resolver Repos Start ([rootProject] + (rootProject.subprojects as List)).each { project -> project.repositories { def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/") maven { url "https://maven.google.com" } maven { url (unityProjectPath + "/Assets/GeneratedLocalRepo/Firebase/m2repository") } mavenLocal() mavenCentral() } } // Android Resolver Repos End
安卓项目到此就可以了