Open brendanzagaeski opened 4 years ago
Move any Android resources mentioned in the error APT2144: invalid file path errors out of the unrecognized subdirectories and into the single level of canonical directories that are supported:
(In most cases, this is probably in fact the recommended way to fix the issue and not just a workaround.)
I'm having this issue but it is because I'm trying to make a shared library with EmbeddedResources target android so as to avoid this bug from happening: xamarin/xamarin-macios#16401
Because it is an existing shared library that was initially structured without android in mind I'd rather not rename the top level resource folders. That being said, I have tried renaming the Resources folder entirely and changing all the references but somehow I still get this error. Weirder still the error doesn't come from the Shared Library but rather the Xamarin project that references it. I don't know whats going on.
EDIT: To be clear, I do not want any of my shared library's resources to interact with android at all. If there is a way I can exclude them entirely that would be great.
You can try adding the following to your project
<EnableDefaultAndroidItems>False</EnableDefaultAndroidItems>
This will disable ALL the defailt android Items including .jar file inclusions etc. I am assuming you are targeting .net7.0 btw. If that does not work, try this.
<ItemGroup>
<AndroidResource Remove="$(MonoAndroidResourcePrefix)/*/*.*" />
</ItemGroup>
Context: https://developercommunity.visualstudio.com/content/problem/1156349/index.html
Steps to reproduce
Alternatively, extract the attached test case and build it on the command line:
Test case: AndroidResourcesSubdirectory.zip
Expected behavior
The build should succeed.
For example, the build succeeds in Visual Studio 2019 version 16.6.5 with Xamarin.Android SDK version 10.3.1.4 (d16-6@3a10de9).
I think the relevant invocation of
Aapt2Compile
from the diagnostic build output is:It appears _drawable\subdirectory\xamarinlogo.png is ignored in this case. It seems only _drawable\xamarinlogo.png is packaged into the app:
Related: https://stackoverflow.com/questions/1077357/can-the-android-drawable-directory-contain-subdirectories
Actual behavior
In Visual Studio 2019 version 16.7.2 with Xamarin.Android SDK version 11.0.2.0, the build fails:
It looks like the difference is that
Aapt2Compile
now passes each resource path individually to AAPT2:(I'll omit the full list of items from
ResourcesToCompile
for compactness.)Since it seems that files in unrecognized Resources\drawable subdirectories were previously silently ignored by AAPT2, this new behavior could arguably be considered more useful to help users avoid unexpected behaviors, so it might be OK to close this issue as a desirable change.