[ https://issues.apache.org/jira/browse/CB-13647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16283474#comment-16283474 ]
Michael Goffioul commented on CB-13647: --------------------------------------- [~bowserj] I admit that 2 <config-file> entries with different path types is more theoretical. The more practical problem I faced was with my own plugin, using both <config-file> and <edit-config>. The cordova-android@7.0.0 release notes only states to modify <edit-config>, it doesn't say anything about <config-file>, and more importantly it doesn't state that if you use both, they MUST refer to the same path type. I'm using cordova-common@2.2.0 On a side but related note, I also faced inconsistencies when using <resource-file>, because path translation is enforced, meaning you can't (and must not) use the prefix "app/src/main" in the target attribute. For instance, with the following plugin.xml, you end up with a file in platforms/android/app/src/main/app/src/main/res/drawable/image.png and that's not what you want: {code} <?xml version="1.0" encoding="UTF-8"?> <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="com.example.testplugin1" version="1.0.0"> <name>Test Plugin 1</name> <platform name="android"> <resource-file src="image.png" target="app/src/main/res/drawable/image.png" /> </platform> </plugin> {code} So at the moment, the rules I've figured out are (new == with prefix "app/src/main", legacy == without prefix): - <config-file>: you may use new or legacy paths - <edit-config>: you may only use new paths - <source-file>: you may use new or legacy paths for *.java files; for other files you may only use new paths - <resource-file>: you may only use legacy paths It would be easier to have a consistent behavior for all of them. > Incomplete plugin restoration > ----------------------------- > > Key: CB-13647 > URL: https://issues.apache.org/jira/browse/CB-13647 > Project: Apache Cordova > Issue Type: Bug > Components: cordova-android > Affects Versions: 7.0.0 > Reporter: Michael Goffioul > Assignee: Joe Bowser > > I'm having a problem with plugin restoration since cordova-android 7.0.0, > when plugins use a mix of config-file and edit-config on the same file (e.g. > AndroidManifest.xml) and only edit-config uses the real path to the file. > I've tried both cordova-cli 6.5.0 and 7.1.0 with the same result. > 1) Create a new corodva project and enter top-level direcotyr > 2) Create subfolder to contain a local plugin: mkdir -p > localplugins/testplugin1 > 3) Create the following files to define the local plugin: > - plugin.xml (adds an attribute to <application> and a category to > <intent-filter>) > {code} > <?xml version="1.0" encoding="UTF-8"?> > <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" > id="com.example.testplugin1" version="1.0.0"> > <name>Test Plugin 1</name> > <platform name="android"> > <config-file target="AndroidManifest.xml" > parent="/manifest/application/activity/intent-filter"> > <category android:name="android.intent.category.HOME" /> > </config-file> > <edit-config file="app/src/main/AndroidManifest.xml" > target="/manifest/application" mode="merge"> > <application android:largeHeap="true" /> > </edit-config> > </platform> > </plugin> > {code} > - package.json > {code} > { > "name": "com.example.testplugin1", > "version": "1.0.0" > } > {code} > 4) Add android platform: cordova platform add android@7.0.0 --save > 5) Add local plugin: cordova plugin add localplugins/testplugin1 --save > At this point, if you check > platforms/android/app/src/main/AndroidManifest.xml, it'll contain the 2 > changes defined in the plugin. > Now attempt to use platform/plugin restoration with thw following: > {code} > cordova platform rm android > cordova prepare android > {code} > If you check again AndroidManifest.xml, it will only contain one of the > changes defined in the plugin (the attribute to <application>). The other > change is missing. > If you use the real path to AndroidManifest.xml for the definition of > <config-file>, then the problem does not occur. BUT, the problem can also > occur when changes to AndroidManifest.xml are coming from multiple plugins, > including the standard cordova plugin, most of which do not use the real path > to AndroidManifest.xml yet. > The problem can affect other files too. For instance I experienced incomplete > restoration of plugins trying to register themselves in res/xml/config.xml. > Only one plugin, out of 7, was using the real path > app/src/main/res/xml/config.xml and I ended up with only one plugin defined > in res/xml/config.xml, causing the application to fail to start. -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org