首先说下背景:我有一个账号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设置不同导致的,比较好的解答位置:
但是我的两个APP的accountType是相同的,res/xml/authenticator.xml里的accountType也是相同的。提示上述错误就有点怪了,自己搞了好久,没搞出来,问了下师傅,师傅说我的APP要满足以上的两个条件。这才能够让两个APP兼容。
在解决问题的过程中,遇到了jks签名文件,我要在android studio中测试已签名的APP,在app/build.gradle的android{}下面添加配置签名信息
//配置keystore签名因为不知道keyAlias是什么,怎么查询呢?需要使用keytool查看jks中的签名信息,
signingConfigs {
release {
storeFile file("******.jks")
storePassword "******"
keyAlias "******"
keyPassword "******"
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
在命令行中输入以下命令:
keytool -list -v -keystore C:\Users\He\Desktop\******.jks -storepass xxx
我把jks文件的名字用***隐藏掉了,xxx为签名的密码。
里面的别名就是keyAlias。
感觉自己能写很多,但写着写着就感觉没什么了。就这些吧,里面的知识点自己有时间还是要学习的