Notice (2018-05-24): bugzilla.xamarin.com is now in
Please join us on
Visual Studio Developer Community and in the
Mono organizations on
GitHub to continue tracking issues. Bugzilla will remain
available for reference in read-only mode. We will continue to work
on open Bugzilla bugs, copy them to the new locations
as needed for follow-up, and add the new items under Related
Our sincere thanks to everyone who has contributed on this bug
tracker over the years. Thanks also for your understanding as we
make these adjustments and improvements for the future.
Please create a new report on
Developer Community or GitHub with
your current version information, steps to reproduce, and relevant error
messages or log files if you are hitting an issue that looks similar to
this resolved bug and you do not yet see a matching new report.
I couldn't reproduce this issue bigsplash HEAD/linux. Maybe OSX or mono 2.10 dependent. Will try later.
OK, so you had some local changes in project API Level.
It is kind of expected. The resource set in the zip contains resources that are valid only after API Level 14 ("values-v14"). Those resources have references to other resources that exist only in API Level 14 or higher.
You need to create different zip file for ABS with lower API Level.
Now, it is arguable or needs investigation that *how* Android Java excludes those API-specific resources.
If the resource set is compiled per target API level in java and aapt, we are likely unable to avoid that and users will have to use two different ABS binding dll (Java people don't need that because their resources are rather shipped as "a jar and set of resources", but we need it because our outcome is a single dll).
If the resource set is compiled independent of target API level in java and aapt - it might be either dependent on the fact that Java is different from .NET and it somehow allows to run compiled code with higher API level on lower API target. If that's the case, again we cannot do the same, we'll need to use two different dlls for two API level sets (higher/lower). If not, we are likely able to live with single dll. Or there may be any other reason that rejects single dll.
Anyways, with current MFA you need two different set of zip and binding dlls.
Well, let's keep it open, there is something we can make it better.
I dug in depth in the issue and found that Android aapt bundles all those resources and loads the appropriate resource at run time. Hence the resource build is done along with targetSdkVersion.
For ABS, we should do the same, setting target platform as 14 or higher, and set minSdkVersion to 4 (or whatever applicable). (We can set it in the AndroidManifest.xml or project properties for it.)
Today we have checked this issue with following builds:
Xamarin Studio 4.0 - a4ca67108f5600f7c65f7d47a402f772dc73ef35
And we are successfully able to build and deploy application having target framework >= 4.0 and we are able to open resource.designer.cs file.
However with Target framework below ICS, We are getting build error.
Means this application will work on ICS and above
Changing the status to Verified.