In my app, flavor Lite has it's own manifest and overrides the main's SplashActivity with SplashActivityLite. The main manifest has a launcher intent-filter for SplashActivity. But since the SplashActivityLite also has a launcher intent-filter, 2 app icons are installed.
I have tried adding tools:node="replace" and tools:node="merge" to activity tag SplashActivityLite. I have tried adding tools:node="replace" to each attribute in the intent-filter (action and category tags).
How can override the intent filter of the main manifest when the class names are not the same?
Given your comment, what you seem to be aiming for is a merged manifest for this flavor where SplashActivityLite
exists but SplashActivity
does not.
In the flavor's manifest, I think you would need to have two <activity>
elements (at least, in terms of relevance to this problem):
One would point to
SplashActivityLite
and be normal, with yourMAIN
/LAUNCHER
<intent-filter>
The other would point to
SplashActivity
and havetools:node="remove"
to get rid of it from the merged manifest
Alternatively, you could:
Have the
SplashActivityLite
normal manifest entry in the flavorIn
main
, haveandroid:enabled="@bool/useMainSplash"
onSplashActivity
In
main
, defineuseMainSplash
to betrue
In the flavor, define
useMainSplash
to befalse
That would keep the manifest entry for SplashActivity
but disable it so it would not be launchable.
In either approach, the SplashActivity
class should be unaffected, so SplashActivityLite
can extend it without issue.