@Alex,
Happy to follow up, and please remember these are just thoughts for improvement as I have no problems with the current system. I wasn't intending to present an argument or present even an advocacy for any particular solution; my apologies as my meaning was muddled with the intention of presenting the use case of a new user using Google only provided technologies and winding up in a situation that warranted a requirement of accessing the /res directory from the NDK. The goal was merely to show it is a non-zero chance (and I'd wager an increasing chance) that only going down the path of Google best practices results in developers having an unaddressed need.
However, I would mention that perhaps we're a bit quick to say there isn't a solution that we can craft to address the needs of a cross platform developer having access to apk resources. There's tradeoffs to other solutions, however, if we first accept that all languages the NDK might support now and in the future can natively read files off the disk with basic file I/O and all other platforms share similar basic file I/O capabilities. A solution presents itself if we eliminate the zipped nature of the apk.
Obvious trade off with that solution is it would take up more disk space on app install. This could be mitigated by expanding only portions a developer would care about; which providing an api would allow a developer to say what files should be available or label them in the manifest for easy NDK access then explode to temp directory on either app install, run, or when requested via API. There's also a chance if one were to be a bit clever of crafting a ramdisk solution in Java that C sees as a file system.
Moving on to the Resources access for shared GUI concerns. I'd wager that when sharing resources one wouldn't need to have concern about which screen size / orientation etc are used. Allow me to elaborate this strange assertion with pointing out that if one were to go down the path of having their own GUI and requiring shared resources, then likely it's shared because they're still using the very excellent Android GUI for some interactions. This would indicate with my wild assumption that the reason they might have a second GUI requirement is because the Android GUI doesn't completely fit their needs. Now the reason why there's different resources for different orientations, screen densities etc is because the GUI is operating on a different viewport dictated by being different size, oriented or on different screen densities etc.
Assuming my understanding is correct, the time an end user would get into a use case requirement of needing their own GUI is when the frustum are not the same as the full screen one provided by Android's GUI. This would be the case of VR or AR and some games. Thus, if you have a custom projection matrix, you likely have need of one version of a resource and wouldn't care what the Java mapping is for a resource that wouldn't match your viewport in the first place; after all, if you did care, you likely would be in a scenario where Android's GUI is a better path forward.
So to clarify the use case here is Android GUI can't fit the needs due to not using the custom viewport (which by the way you guys provide a means to render the Android GUI to a GLTexture and I'll sing the highest of praises for Android's GUI). However, there are some resources that can be used sans changes between GUIs (logos and other sharable disk guzzling assets that are high res etc). So my point in all this is it wouldn't likely matter that R.drawable.my_background_image maps to /res/hdpi/xxxx/background.png instead of /res/xxx/yyy/background.jpg.
What would ultimately matter is generic access to the file in the first place as the reasoning behind the correlation is lost. It would have to be incumbent upon the developer to determine the correct mapping within the resources directory of reusable resources as that developer is the only one capable of knowing the frustum they will be using.
If the dev wants to use a completely custom GUI, then they have all resources in Assets and they have an existing solution. If the dev wants to use completely Android GUI, then this isn't an issue as they can use Java. If the dev has need for keeping the apk small (instant apps) and they're looking for cutting file size costs, then providing a means to access resources that might be shared between the two is attractive.
In this case what I'd propose is packaging zlib along with an easy to use interface (API) to return a file for a given path within the APK. I'm not sure there's a need to be more clever than that for the shared GUI problem.