两个APP共享AccountManager管理的账号

时间:2021-02-18 17:40:34

首先说下背景:我有一个账号APP,用来进行账号管理,还有一个APP(称为运动APP),运动APP需要账号APP提供Jar包,进行账号的操作。账号APP用Android AccountManager进行账号管理,这两个APP共享账号信息。

我师傅告诉我,两个APP共享账号信息需要满足两个条件,一个是在同一个用户组里,还有一个是使用相同的签名。感谢我师傅!

当然,上述两个条件的前提是两个APP的accountType是相同的。


下面说下我的错误历程:

刚开始我的账号APP和运动APP不能够兼容,安装了账号APP后运动APP崩溃,反之亦然,提升错误为

W/System.err: java.lang.SecurityException: caller uid 10121 is different than the authenticator's uid

百度了下这个错误是因为accountType设置不同导致的,比较好的解答位置:

http://*.com/questions/3774282/securityexception-caller-uid-xxxx-is-different-than-the-authenticators-uid/5329490#5329490

但是我的两个APP的accountType是相同的,res/xml/authenticator.xml里的accountType也是相同的。提示上述错误就有点怪了,自己搞了好久,没搞出来,问了下师傅,师傅说我的APP要满足以上的两个条件。这才能够让两个APP兼容。


在解决问题的过程中,遇到了jks签名文件,我要在android studio中测试已签名的APP,在app/build.gradle的android{}下面添加配置签名信息

//配置keystore签名
signingConfigs {
release {
storeFile file("******.jks")
storePassword "******"
keyAlias "******"
keyPassword "******"
}
}


buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
因为不知道keyAlias是什么,怎么查询呢?需要使用keytool查看jks中的签名信息,

在命令行中输入以下命令:

keytool -list -v -keystore C:\Users\He\Desktop\******.jks -storepass xxx

我把jks文件的名字用***隐藏掉了,xxx为签名的密码。

里面的别名就是keyAlias。


感觉自己能写很多,但写着写着就感觉没什么了。就这些吧,里面的知识点自己有时间还是要学习的