Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
8.0.0
-
None
Description
On both iOS and Android platforms, using <config-file> causes duplication in the `ios.json` and `android.json` files, which could lead to extremely large file sizes (and possibly unexpected behaviour?).
For a Cordova 7.1/8.0 application, add the following to config.xml:
<platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> <config-file parent="NSCameraUsageDescription" target="*-Info.plist"> <string>Please permit Camera!</string> </config-file> </platform>
Now run `cordova prepare`. The file `platforms/ios/ios.json` now contains the below. Note the count is 1.
"config_munge": { "files": { "*-Info.plist": { "parents": { "NSCameraUsageDescription": [ { "xml": "<string>Please permit Camera!</string>", "count": 1 } ] } } } },
Run `cordova prepare` again. The platforms/ios/ios.json changes, increasing the count to 2.
"config_munge": { "files": { "*-Info.plist": { "parents": { "NSCameraUsageDescription": [ { "xml": "<string>Please permit Camera!</string>", "count": 2 } ] } } } },
Furthermore, if we change the text inside the `<string>` in the `config.xml`:
<platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> <config-file parent="NSCameraUsageDescription" target="*-Info.plist"> <string>This app uses Camera!</string> </config-file> </platform>
Then after running `cordova prepare`, there is now a second entry in `platforms/ios/ios.json`, rather than replacing the existing entry.
"config_munge": { "files": { "*-Info.plist": { "parents": { "NSCameraUsageDescription": [ { "xml": "<string>Please permit Camera!</string>", "count": 2 }, { "xml": "<string>This app uses Camera!</string>", "count": 1 } ] } } } },
This behaviour is the same for Android, and can be reproduced in the same way, by adding something like the below to `config.xml`:
<platform name="android"> <allow-intent href="market:*" /> <config-file parent="/manifest" target="AndroidManifest.xml"> <uses-permission android:name="android.permission.VIBRATE" /> </config-file> </platform>