Please improve the jungle processor by adding new features. The idea is to give more power to developers to optimize their code. For example to enable to decrease the code size by giving easily usable directory structure and excludeAnnotations.
1. Hardware related things:
One widely "used" feature that can easily be added to jungle is the memory available for certain app type. This could include sourcePath, resurcePath, excludeAnnotations. For example:
fenix3.sourcePath = source;...;source-datafile-16K
fenix6.sourcePath = source;...;source-datafile-32K
fenix3.resourcePath = resources;...;resources-datafield-16K
fenix6.resourcePath = resources;...;resources-datafield-32K
fenix3.excludeAnnotations = base;...;datafield16K
fenix6.excludeAnnotations = base;...;datafield32K
Of course the same for all the possible app types.
2. Software related things:
This might be a little more tricky, because sometimes things get upgraded (in which case the newly released SDK should have the new information available of course), but it would be nice to have the system-level and maybe the api-level (though this might be redundant if we have the system-level):
I'm not exactly sure what would be the best way, maybe:
fenix3.excludeAnnotations = base;...;system2;system3;system4;system5
fenix6.excludeAnnotations = base;...;system1;system2;system3
maybe:
fenix3.excludeAnnotations = base;...;system-min-1;system-max-1
fenix6.excludeAnnotations = base;...;system-min-4;system-max-5
Even better if there would also be a way to have similar diferentiations in the resources and source.
The use case is that it can help developers to decide which devices they support. When they decided it can help optimizing code by excluding code that is "too new" for a device. For example there's no need for the following code on system 1 devices with max api level < 2.4.0, because they can never have Properties:
function setConfig(key as Application.PropertyKeyType, val as Application.PropertyValueType) { if (App has :Properties) { App.Properties.setValue(key, val); } else { App.AppBase.setProperty(key, val); } }
By knowing this we can save some precious bytes in the memory if we use:
(:system2) function setConfig(key as Application.PropertyKeyType, val as Application.PropertyValueType) { App.AppBase.setProperty(key, val); } (:system3) function setConfig(key as Application.PropertyKeyType, val as Application.PropertyValueType) { if (App has :Properties) { App.Properties.setValue(key, val); } else { App.AppBase.setProperty(key, val); } }