[ 
https://issues.apache.org/jira/browse/CB-13514?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ibrahim M. Ghazal updated CB-13514:
-----------------------------------
    Description: 
Adding {{<edit-config>}} to config.xml is removing some XML elements added by 
plugins. For example, {{cordova-plugin-file-opener2}} adds a {{<provider>}} 
element to AndroidManifest.xml. If I add an {{<edit-config>}} to config.xml 
that modifies AndroidManifest.xml, the {{<provider>}} element is removed on 
{{cordova (prepare|build|run) android}}

To reproduce, create a cordova project with the following two files:

package.json
{code}
{
  "name": "com.example.test",
  "displayName": "Test",
  "version": "1.0.0",
  "dependencies": {
    "cordova-android": "6.3.0",
    "cordova-plugin-file-opener2": "2.0.19"
  },
  "cordova": {
    "platforms": [
      "android"
    ],
    "plugins": {
      "cordova-plugin-file-opener2": {}
    }
  }
}
{code}

config.xml
{code}
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.test" version="1.0.0" 
xmlns="http://www.w3.org/ns/widgets"; 
xmlns:cdv="http://cordova.apache.org/ns/1.0";>
    <name>Test</name>
    <content src="index.html" />
    <platform name="android">
        <edit-config file="AndroidManifest.xml" mode="merge" 
target="/manifest/application" 
xmlns:android="http://schemas.android.com/apk/res/android";>
            <application android:allowBackup="false" />
        </edit-config>
    </platform>
    <engine name="android" spec="6.3.0" />
    <plugin name="cordova-plugin-file-opener2" spec="2.0.19" />
</widget>

{code}

Then run:

$ npm install && cordova platform add [email protected] --nosave
[output omitted]
$ cat ./platforms/android/AndroidManifest.xml
{code}
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" 
android:versionName="1.0.0" package="com.example.test" 
xmlns:android="http://schemas.android.com/apk/res/android";>
    <supports-screens android:anyDensity="true" android:largeScreens="true" 
android:normalScreens="true" android:resizeable="true" 
android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:allowBackup="false" android:hardwareAccelerated="true" 
android:icon="@mipmap/icon" android:label="@string/app_name" 
android:supportsRtl="true">
        <activity 
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
android:label="@string/activity_name" android:launchMode="singleTop" 
android:name="MainActivity" 
android:theme="@android:style/Theme.DeviceDefault.NoActionBar" 
android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider android:authorities="${applicationId}.opener.provider" 
android:exported="false" android:grantUriPermissions="true" 
android:name="io.github.pwlin.cordova.plugins.fileopener2.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" 
android:resource="@xml/opener_paths" />
        </provider>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
{code}
$ cordova run android
Conflict found, edit-config changes from config.xml will overwrite plugin.xml 
changes
[rest of output omitted]
$ cat ./platforms/android/AndroidManifest.xml
{code}
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" 
android:versionName="1.0.0" package="com.example.test" 
xmlns:android="http://schemas.android.com/apk/res/android";>
    <supports-screens android:anyDensity="true" android:largeScreens="true" 
android:normalScreens="true" android:resizeable="true" 
android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:allowBackup="false" android:hardwareAccelerated="true" 
android:icon="@mipmap/icon" android:label="@string/app_name" 
android:supportsRtl="true">
        <activity 
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
android:label="@string/activity_name" android:launchMode="singleTop" 
android:name="MainActivity" 
android:theme="@android:style/Theme.DeviceDefault.NoActionBar" 
android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
{code}

Note the missing {{<provider>}} element after running {{cordova run android}}

  was:
Adding {{<edit-config>}} to config.xml is removing some XML elements added by 
plugins. For example, {{cordova-plugin-file-opener2}} adds a {{<provider>}} 
element to AndroidManifest.xml. If I add an {{<edit-config>}} to config.xml 
that modifies AndroidManifest.xml, the {{<provider>}} element is removed on 
{{cordova (prepare|build|run) android}}

To reproduce, create a cordova project with the following two files:

package.json
{code}
{
  "name": "com.example.test",
  "displayName": "Test",
  "version": "1.0.0",
  "dependencies": {
    "cordova-android": "6.3.0",
    "cordova-plugin-file-opener2": "2.0.19"
  },
  "cordova": {
    "platforms": [
      "android"
    ],
    "plugins": {
      "cordova-plugin-file-opener2": {}
    }
  }
}
{code}

config.xml
{code}
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.test" version="1.0.0" 
xmlns="http://www.w3.org/ns/widgets"; 
xmlns:cdv="http://cordova.apache.org/ns/1.0";>
    <name>Test</name>
    <content src="index.html" />
    <platform name="android">
        <edit-config file="AndroidManifest.xml" mode="merge" 
target="/manifest/application" 
xmlns:android="http://schemas.android.com/apk/res/android";>
            <application android:allowBackup="false" />
        </edit-config>
    </platform>
    <engine name="android" spec="6.3.0" />
    <plugin name="cordova-plugin-file-opener2" spec="2.0.19" />
</widget>

{code}

Then run:

$ npm install && cordova platform add [email protected] --nosave
[output omitted]
$ cat .\platforms\android\AndroidManifest.xml
{code}
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" 
android:versionName="1.0.0" package="com.example.test" 
xmlns:android="http://schemas.android.com/apk/res/android";>
    <supports-screens android:anyDensity="true" android:largeScreens="true" 
android:normalScreens="true" android:resizeable="true" 
android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:allowBackup="false" android:hardwareAccelerated="true" 
android:icon="@mipmap/icon" android:label="@string/app_name" 
android:supportsRtl="true">
        <activity 
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
android:label="@string/activity_name" android:launchMode="singleTop" 
android:name="MainActivity" 
android:theme="@android:style/Theme.DeviceDefault.NoActionBar" 
android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider android:authorities="${applicationId}.opener.provider" 
android:exported="false" android:grantUriPermissions="true" 
android:name="io.github.pwlin.cordova.plugins.fileopener2.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" 
android:resource="@xml/opener_paths" />
        </provider>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
{code}
$ cordova run android
Conflict found, edit-config changes from config.xml will overwrite plugin.xml 
changes
[rest of output omitted]
$ cat .\platforms\android\AndroidManifest.xml
{code}
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" 
android:versionName="1.0.0" package="com.example.test" 
xmlns:android="http://schemas.android.com/apk/res/android";>
    <supports-screens android:anyDensity="true" android:largeScreens="true" 
android:normalScreens="true" android:resizeable="true" 
android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:allowBackup="false" android:hardwareAccelerated="true" 
android:icon="@mipmap/icon" android:label="@string/app_name" 
android:supportsRtl="true">
        <activity 
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
android:label="@string/activity_name" android:launchMode="singleTop" 
android:name="MainActivity" 
android:theme="@android:style/Theme.DeviceDefault.NoActionBar" 
android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
{code}

Note the missing {{<provider>}} element after running {{cordova run android}}


> <edit-config> in config.xml removes some XML elements added by plugins
> ----------------------------------------------------------------------
>
>                 Key: CB-13514
>                 URL: https://issues.apache.org/jira/browse/CB-13514
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-common
>    Affects Versions: 2.1.0
>         Environment: cordova-android 6.3.0
>            Reporter: Ibrahim M. Ghazal
>
> Adding {{<edit-config>}} to config.xml is removing some XML elements added by 
> plugins. For example, {{cordova-plugin-file-opener2}} adds a {{<provider>}} 
> element to AndroidManifest.xml. If I add an {{<edit-config>}} to config.xml 
> that modifies AndroidManifest.xml, the {{<provider>}} element is removed on 
> {{cordova (prepare|build|run) android}}
> To reproduce, create a cordova project with the following two files:
> package.json
> {code}
> {
>   "name": "com.example.test",
>   "displayName": "Test",
>   "version": "1.0.0",
>   "dependencies": {
>     "cordova-android": "6.3.0",
>     "cordova-plugin-file-opener2": "2.0.19"
>   },
>   "cordova": {
>     "platforms": [
>       "android"
>     ],
>     "plugins": {
>       "cordova-plugin-file-opener2": {}
>     }
>   }
> }
> {code}
> config.xml
> {code}
> <?xml version='1.0' encoding='utf-8'?>
> <widget id="com.example.test" version="1.0.0" 
> xmlns="http://www.w3.org/ns/widgets"; 
> xmlns:cdv="http://cordova.apache.org/ns/1.0";>
>     <name>Test</name>
>     <content src="index.html" />
>     <platform name="android">
>         <edit-config file="AndroidManifest.xml" mode="merge" 
> target="/manifest/application" 
> xmlns:android="http://schemas.android.com/apk/res/android";>
>             <application android:allowBackup="false" />
>         </edit-config>
>     </platform>
>     <engine name="android" spec="6.3.0" />
>     <plugin name="cordova-plugin-file-opener2" spec="2.0.19" />
> </widget>
> {code}
> Then run:
> $ npm install && cordova platform add [email protected] --nosave
> [output omitted]
> $ cat ./platforms/android/AndroidManifest.xml
> {code}
> <?xml version='1.0' encoding='utf-8'?>
> <manifest android:hardwareAccelerated="true" android:versionCode="10000" 
> android:versionName="1.0.0" package="com.example.test" 
> xmlns:android="http://schemas.android.com/apk/res/android";>
>     <supports-screens android:anyDensity="true" android:largeScreens="true" 
> android:normalScreens="true" android:resizeable="true" 
> android:smallScreens="true" android:xlargeScreens="true" />
>     <uses-permission android:name="android.permission.INTERNET" />
>     <application android:allowBackup="false" 
> android:hardwareAccelerated="true" android:icon="@mipmap/icon" 
> android:label="@string/app_name" android:supportsRtl="true">
>         <activity 
> android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
> android:label="@string/activity_name" android:launchMode="singleTop" 
> android:name="MainActivity" 
> android:theme="@android:style/Theme.DeviceDefault.NoActionBar" 
> android:windowSoftInputMode="adjustResize">
>             <intent-filter android:label="@string/launcher_name">
>                 <action android:name="android.intent.action.MAIN" />
>                 <category android:name="android.intent.category.LAUNCHER" />
>             </intent-filter>
>         </activity>
>         <provider android:authorities="${applicationId}.opener.provider" 
> android:exported="false" android:grantUriPermissions="true" 
> android:name="io.github.pwlin.cordova.plugins.fileopener2.FileProvider">
>             <meta-data android:name="android.support.FILE_PROVIDER_PATHS" 
> android:resource="@xml/opener_paths" />
>         </provider>
>     </application>
>     <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
>     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" 
> />
> </manifest>
> {code}
> $ cordova run android
> Conflict found, edit-config changes from config.xml will overwrite plugin.xml 
> changes
> [rest of output omitted]
> $ cat ./platforms/android/AndroidManifest.xml
> {code}
> <?xml version='1.0' encoding='utf-8'?>
> <manifest android:hardwareAccelerated="true" android:versionCode="10000" 
> android:versionName="1.0.0" package="com.example.test" 
> xmlns:android="http://schemas.android.com/apk/res/android";>
>     <supports-screens android:anyDensity="true" android:largeScreens="true" 
> android:normalScreens="true" android:resizeable="true" 
> android:smallScreens="true" android:xlargeScreens="true" />
>     <uses-permission android:name="android.permission.INTERNET" />
>     <application android:allowBackup="false" 
> android:hardwareAccelerated="true" android:icon="@mipmap/icon" 
> android:label="@string/app_name" android:supportsRtl="true">
>         <activity 
> android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
> android:label="@string/activity_name" android:launchMode="singleTop" 
> android:name="MainActivity" 
> android:theme="@android:style/Theme.DeviceDefault.NoActionBar" 
> android:windowSoftInputMode="adjustResize">
>             <intent-filter android:label="@string/launcher_name">
>                 <action android:name="android.intent.action.MAIN" />
>                 <category android:name="android.intent.category.LAUNCHER" />
>             </intent-filter>
>         </activity>
>     </application>
>     <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
>     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" 
> />
> </manifest>
> {code}
> Note the missing {{<provider>}} element after running {{cordova run android}}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to