diff --git a/src/lime/tools/ConfigData.hx b/src/lime/tools/ConfigData.hx index b6cafa33b..8e8ab7d12 100644 --- a/src/lime/tools/ConfigData.hx +++ b/src/lime/tools/ConfigData.hx @@ -373,7 +373,7 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic } } - public function push(id:String, value:Dynamic):Void + public function push(id:String, value:Dynamic, ?unique:Bool = false):Void { var tree = id.split("."); var current = this; @@ -399,13 +399,18 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic if (Reflect.hasField(current, field)) { - if (!Reflect.hasField(current, field + ARRAY)) + var array:Array = Reflect.field(current, field + ARRAY); + + if (array == null) { - Reflect.setField(current, field + ARRAY, Reflect.hasField(current, field) ? [ObjectTools.deepCopy(Reflect.field(current, field))] : []); + array = [ObjectTools.deepCopy(Reflect.field(current, field))]; + Reflect.setField(current, field + ARRAY, array); } - var array:Array = Reflect.field(current, field + ARRAY); - array.push(value); + if (array.indexOf(value) == -1) + { + array.push(value); + } } Reflect.setField(current, field, value); diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index 6f6bc7dc1..611b4c6a7 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -1797,21 +1797,8 @@ class ProjectXMLParser extends HXProject case "install-location": config.set("android.install-location", value); - case "extension": - var extensions = config.getArrayString("android.extension"); - - if (extensions == null || extensions.indexOf(value) == -1) - { - config.push("android.extension", value); - } - - case "permission": - var permissions = config.getArrayString("android.permission"); - - if (permissions == null || permissions.indexOf(value) == -1) - { - config.push("android.permission", value); - } + case "extension", "permission": + config.push("android." + name, value, true); case "gradle-version": config.set("android.gradle-version", value);