APK安装时自动安装辅助应用的实现方案咨询(类Facebook应用管理器)
当然可以实现类似Facebook的这种多应用协作方案,但必须严格遵循Android系统的安装规则——绝对不能绕过用户授权搞静默安装,这是红线。下面我结合行业实践给你拆解可行的思路:
核心原则:用户授权是前提
从Android 6.0(API 23)开始,系统就彻底关闭了非系统应用的静默安装权限。所有辅助应用的安装操作,必须经过用户的明确确认,要么唤起系统安装界面,要么依托官方应用商店的合规流程完成。常规落地方案:主应用引导安装
这也是Facebook这类大厂采用的标准路径,步骤很清晰:- 主APK安装完成后,首次启动时检测辅助应用是否已存在;
- 如果未安装,通过
Intent(Intent.ACTION_VIEW)指向辅助应用的APK资源(可以内置在主APK中,或者从你的服务器安全下载),唤起系统自带的安装界面,让用户点击确认; - 辅助应用安装完成后,你可以通过Content Provider(推荐,更安全)或者配置了跨应用权限的
SharedPreferences来实现多应用共享本地数据; - 监听应用卸载的需求,辅助应用可以注册
PACKAGE_REMOVED广播,但要注意Android 8.0(API 26)之后静态注册的广播会被限制,建议改用动态注册或者结合JobScheduler来实现监听逻辑。
更顺滑的渠道方案:依托Google Play的动态交付
如果你的应用是通过Google Play发布的,可以利用动态功能模块(Dynamic Feature Modules),把辅助应用的功能封装成一个动态模块。用户安装主应用时,Play商店会提示是否同时下载安装该模块,或者你也可以设置为自动关联安装——整个流程不需要额外唤起安装界面,体验更流畅,但这种方式仅适用于Play商店渠道。聊下Facebook的实现逻辑
你提到的Facebook App Installer和Facebook App Manager,前者负责主应用的安装、更新调度,后者则承担跨应用数据存储、状态监听(包括卸载)的角色。它们之间通过Facebook自研的跨进程通信机制实现数据交互,而且所有安装操作都是在用户主动触发主应用下载时,由Play商店引导用户确认安装这两个辅助应用,完全符合系统规则,没有违规操作。
重要提醒:无论采用哪种方案,都绝对不能跳过用户的安装确认步骤。违规的静默安装不仅会导致应用被应用商店下架,还会触发系统的安全预警,严重影响用户信任。
内容的提问来源于stack exchange,提问作者Hossam Hassan

