cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Goffioul (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-13647) Incomplete plugin restoration
Date Fri, 08 Dec 2017 12:46:01 GMT

    [ 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-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message