I'm working on a personal project where I need to use different AndroidManifest.xml
files for different brands of the app. Each brand has its own manifest file located in a separate directory. However, despite configuring the .csproj
to include the correct AndroidManifest.xml
for the active brand, the build process only includes the base AndroidManifest.xml
, and the brand-specific manifest is not being merged.
Platforms/Android/AndroidManifest.xml
Stuff/Brand1/Android/AndroidManifest.xml
Several variations of modifying the .csproj
file as such:
<ItemGroup>
<None Remove="Platforms/Android/AndroidManifest.xml" />
<AndroidManifest Include="Stuff/Brand1/Android/AndroidManifest.xml">
<LogicalName>Platforms/Android/AndroidManifest.xml</LogicalName>
</AndroidManifest>
</ItemGroup>
OR
<ItemGroup Condition="$(cfg.Contains('-Brand1'))">
<None Remove="Platforms/Android/AndroidManifest.xml" />
<AndroidManifest Include="Stuff/Brand1/Android/AndroidManifest.xml">
<LogicalName>Platforms/Android/AndroidManifest.xml</LogicalName>
</AndroidManifest>
</ItemGroup>
Conditionals do work in .csproj
as I am using them for other brand-specific settings.
Clean and Rebuild: I’ve performed a clean build multiple times, but the brand-specific manifest is still not being merged.
Checked Merged Manifest: After the build, I checked the obj/Debug/android/manifest/AndroidManifest.xml
, and it only contains the base manifest.
Build Output Logs: I reviewed the build logs but didn’t see any obvious errors or warnings related to the manifest merging process.
Despite these efforts, the brand-specific AndroidManifest.xml
isn’t being picked up or merged during the build. As a result, 3rd party configurations, which are specific to the brand, are missing in the final build.
AndroidManifest.xml
is correctly included and merged during the build process?.csproj
configuration that could be causing this issue?Any insights or suggestions would be greatly appreciated!
Thank you in advance for your help.
BONUS
Would also be nice to know if:
<meta-data
android:value="${ApplicationId}.MYCLASS"/>
is valid syntax within the AndroidManifest.xml
.
Have no Manifest present at Platforms\Android\AndroidManifest.xml
Update .csproj file to set the manifest for chosen Build Configurations
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-android34.0|AnyCPU'">
<AndroidManifest>Platforms\Android\Public\AndroidManifest.xml</AndroidManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='ReleaseE|net8.0-android34.0|AnyCPU'">
<AndroidManifest>Platforms\Android\Enterprise\AndroidManifest.xml</AndroidManifest>
</PropertyGroup>