Upload
imshining-devcamp
View
1.380
Download
5
Embed Size (px)
Citation preview
Android DevCamp Produced by CSDN Website: http://devcamp.csdn.net/ Weibo: http://weibo.com/cmdnclub/
Android的账户同步备份框架
乐众Rom架构师 �盛大创新院 �郭振 �
北漂,攻城狮
霍华德图片
http://p.yoho.cn/11670215.jpg
服务
Google Service Framework
• 账户:Gmail,Google play,G+,Google Now • 同步: Google Sync • 备份:Google Data Backup
设计⼀一个同步备份的软件
功能需求
设计盛大服务统⼀一入口:盛大账户,共享登陆成果
将通讯录和日历信息同步到服务器上
将通话记录,短信,系统设置等信息备份到存储卡
交互界面
交互界面
交互界面
盛大账户的设计
一般的账户模块设计
输入用户名和密码
发送登录请求
登录成功,获得Token 数据库
加入Token构造网络请求
存储登录信息
读取
读取
账户管理是什么
提供了集中的账户访问接口 AccoutManager public Account[] getAccountsByType(String type) public getAuthToken()
管理多账户和存储账户信息
结构
AccountAuthenticator
AccountManager
AccountManagerServiceAccountAuthenticatorService
SQLite
binder
app framework
app
Web service Passport
账户系统
app
手机
token
tokentoken
token
SndaAccountActivity
用户输入用户名和密码
连接到账户server进行验证
把获得的证书存储到设备上
AccountAuthenticatorActivity AbstractAccountAuthenticator
SndaAuthenticator
1:getAuthToken(Account) 2:addAccount(AccountType)
。。。。
AuthenticaltorService
<action android:name="android.accounts.
AccountAuthenticator" />
mAccountManager.addAccountExplicitly(account, mPassword, null);
注意
1:账户Server支持,Web服务接入
2:注意账户信息的安全
如何调用
1:GET_ACCOUNTS权限2:请求流程:
AccountType:com.snda�
get
getAuthToken/blockingGetAuthToken
根据token构造请求
invalidateAuthTokentoken是否过期 是
继续app处理
getAccountsByType
addAccount是否有账户 否
是
否
Account & Sync的设置
功能需求
使用盛大账户登录,且登录之后,其他应用无需再登录
将通讯录和日历信息同步到服务器上
PIM同步设计
同步Server 用户验证 解析同步包 冲突解决 响应同步结果
同步Client同步请求和响应同步信息处理 同步请求控制和调度
SymcML协议,HTTP请求
同步管理框架
– 处理基于账户的信息同步 – 只负责调度控制各同步流程,具体协议,服务,操作各App自行开发
– gmail的通讯录,calendar同步,FaceBook自动更新
架构图
SyncManager
SyncStorageEngine
ActiveSyncContext
AbstractThreadSyncAdapter
SyncService
SyncQueue
AlarmManager
app framework
app
ContactManager SyncContacts()
AbstractThreadSyncAdapter
ContactSyncrAdapterOnPerformSync()
SyncService
<action android:name=" android:name="android.content.SyncAdapter" />" />
通讯录同步
功能需求
使用盛大账户登录,且登录之后,其他应用无需再登录
将通讯录和日历信息同步到服务器上
将通话记录,短信,系统设置备份到存储卡
Google如何设计的数据备份的?
App
GoogleTransaportor
BackupManagerService
BackupAgent
LocalTransport
ServiceKey
Cache
dataChanged
云端存储
BackupAgent
CalllogBackupAgentonBackup()和onRestore()
在manifest文件内用android:backupAgent属性声明备份代理和backup key
我们怎么做?
1:抛弃框架,直接读写数据库
2:获得Root权限,通过shell命令将应用的data数据强制拷贝到sd卡下
3:扩展备份系统
• 扩展Transport,负责与存储信息 IBackupTransport.Stub
performBackup preformRestore
• 版本管理 • 界面开发
扩展备份系统
功能需求
使用盛大账户登录,且登录之后,其他应用无需再登录
将通讯录和日历信息同步到服务器上
将通话记录,短信,系统设置,应用程序备份到存储卡
回顾
• 账户管理 • 同步管理 • 备份管理
乐众ROM:娱乐+大众
娱乐:依托盛大集团资源打造手机娱乐平台
大众:高、中、低端 16款机型全面覆盖