idisfkj / android-startup

🔥The Android Startup library provides a straightforward, performant way to initialize components at the application startup. Both library developers and app developers can use Android Startup to streamline startup sequences and explicitly set the order of initialization.
https://rousetime.com
Apache License 2.0
1.6k stars 158 forks source link

在AndroidManifest中配置的StartupProviderConfig一定会被打进主dex包吗? #21

Closed wangkunhui closed 3 years ago

wangkunhui commented 3 years ago

大佬好,我有一个疑问,就是项目比较庞大的时候,分成了很多个模块,每个模块里面都会有如下的配置:

<provider
    android:name="com.rousetime.android_startup.provider.StartupProvider"
    android:authorities="${applicationId}.android_startup"
    android:exported="false">
    <meta-data
        android:name="com.rousetime.sample.startup.SampleStartupProviderConfigX"
        android:value="android.startup.provider.config" />
</provider>

因为65535的问题,class文件会被分到多个dex包,那我打包的时候,meta-data里配置的类会不会不在主dex包内? 如果出现这种情况,app还能正常启动吗?

idisfkj commented 3 years ago

provider相关类都会在主dex包中

wangkunhui commented 3 years ago

请问有什么理论依据?很好奇这个问题,一直没有找到依据。

zlrab commented 1 year ago

请问有什么理论依据?很好奇这个问题,一直没有找到依据。

agp会在编译期合并该provider下的所有meta-data,前提是你在provider节点配置了tools:node="merge"子节点 官方文档 https://developer.android.com/build/manage-manifests