luckybilly / CC

业界首个支持渐进式组件化改造的Android组件化开源框架,支持跨进程调用。Componentize your android project gradually.
https://luckybilly.github.io/CC-website/
Apache License 2.0
4.05k stars 635 forks source link

一个手机安装多个包 #74

Closed shingohu closed 5 years ago

shingohu commented 6 years ago

主工程依赖一个有多进程的库,如implementation 'com.liulishuo.filedownloader:library:1.7.5' 通过productFlavors 配置两个flavor,先安装一个正常,再安装另一个时不能安装,异常如下

image

shingohu commented 6 years ago

看了下生成的配置文件里面 provider android:authorities='com.my.ccproject:filedownloader.com.billy.cc.core.remote'

<provider android:name="com.billy.cc.core.component.remote.RemoteProvider" android:authorities="com.my.ccproject.test.com.billy.cc.core.remote" android:exported="true" />

一个是对的 一个是不对的

shingohu commented 6 years ago

然后我还发现 ccregister.multiProcessEnabled = false 这个就可以安装,设置为true就是上面提示的不能安装,老大有时间看看 @luckybilly

luckybilly commented 5 years ago

通过QQ群交流,造成这个问题的原因是:子进程名称没有以":"开头,2个apk里的进程名称相同,设置ccregister.multiProcessEnabled = true后,cc-register插件自动生成的provider到AndroidManifest.xml时,android:authorities相同,导致安装时报provider冲突的错

解决办法:

  1. 子进程使用":"开头来命名
  2. 如果该子进程不需要使用CC的多进程调用,可配置ccregister.excludeProcessNames,让cc-register插件在生成provider到AndroidManifest.xml的过程中排除该进程:https://luckybilly.github.io/CC-website/#/manual-multi-process