cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-6414) Cordova plugman will ignore config_munge features for config.xml if two are listed in plugin.xml
Date Tue, 08 Apr 2014 23:59:15 GMT

    [ https://issues.apache.org/jira/browse/CB-6414?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13963640#comment-13963640
] 

ASF GitHub Bot commented on CB-6414:
------------------------------------

Github user kamrik commented on the pull request:

    https://github.com/apache/cordova-plugman/pull/72#issuecomment-39915727
  
    Looks like the root of the problem is in config_keeper. The files there are identified
by the "fake path" [see note], so when the same file is referenced as "config.xml" and "res/xml/config.xml",
config keeper considers them to be two different files and changes for one of them get overwritten
by the changes to the other.
    
    I think it would be better to solve the problem in config_keeper rather than here, otherwise
we might hit it again later with another file that might get referenced as two different names.
    
    Maybe we could even go a level higher and avoid referring to the same file by two different
names when generating the munge.
    
    Anyway, if you decide to go with the current solution, please add a commend about what
it does. Otherwise it is very cryptic.
    
    [note]
    Fake path is constructed as project_root/file_name. It is used because deducing the full
real path requires globbing which is very slow (tens of milliseconds in some cases). The assumption
was that the same file will alway be referred to with the same file_name in the munges. This
assumption is broken in this case.


> Cordova plugman will ignore config_munge features for config.xml if two are listed in
plugin.xml
> ------------------------------------------------------------------------------------------------
>
>                 Key: CB-6414
>                 URL: https://issues.apache.org/jira/browse/CB-6414
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugman
>    Affects Versions: 3.4.0
>         Environment: Android
>            Reporter: Josh Bavari
>            Assignee: Josh Bavari
>            Priority: Minor
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> When using a phonegap plugin like the Facebook Connect plugin, there are two series of
listed config transforms, as such:
> The <config-file> element,
>   <config-file target="config.xml" parent="/*">
> 	    <access origin="https://m.facebook.com" />
> 	    <access origin="https://graph.facebook.com" />
> 	    <access origin="https://api.facebook.com" />
> 	    <access origin="https://*.fbcdn.net" />
> 	    <access origin="https://*.akamaihd.net" />
>     </config-file>
> As well as the transform for Android:
>  <config-file target="config.xml" parent="/*">
>             <feature name="FacebookConnectPlugin">
>                 <param name="android-package" value="org.apache.cordova.facebook.ConnectPlugin"
/>
>             </feature>
>         </config-file>
> Which after running 'cordova prepare android':
> "config_munge": {
>         "res/xml/config.xml": {
>             "/*": {
>                 "<feature name=\"Camera\"><param name=\"android-package\" value=\"org.apache.cordova.camera.CameraLauncher\"
/></feature>": 1,
>                 "<feature name=\"Contacts\"><param name=\"android-package\"
value=\"org.apache.cordova.contacts.ContactManager\" /></feature>": 1,
>                 "<feature name=\"Device\"><param name=\"android-package\" value=\"org.apache.cordova.device.Device\"
/></feature>": 1,
>                 "<feature name=\"Notification\"><param name=\"android-package\"
value=\"org.apache.cordova.dialogs.Notification\" /></feature>": 1,
>                 "<feature name=\"File\"><param name=\"android-package\" value=\"org.apache.cordova.file.FileUtils\"
/><param name=\"onload\" value=\"true\" /></feature>": 1,
>                 "<feature name=\"FileTransfer\"><param name=\"android-package\"
value=\"org.apache.cordova.filetransfer.FileTransfer\" /></feature>": 1,
>                 "<feature name=\"Geolocation\"><param name=\"android-package\"
value=\"org.apache.cordova.geolocation.GeoBroker\" /></feature>": 1,
>                 "<feature name=\"InAppBrowser\"><param name=\"android-package\"
value=\"org.apache.cordova.inappbrowser.InAppBrowser\" /></feature>": 1,
>                 "<feature name=\"Media\"><param name=\"android-package\" value=\"org.apache.cordova.media.AudioHandler\"
/></feature>": 1,
>                 "<feature name=\"Capture\"><param name=\"android-package\" value=\"org.apache.cordova.mediacapture.Capture\"
/></feature>": 1,
>                 "<feature name=\"NetworkStatus\"><param name=\"android-package\"
value=\"org.apache.cordova.networkinformation.NetworkManager\" /></feature>": 1,
>                 "<feature name=\"SplashScreen\"><param name=\"android-package\"
value=\"org.apache.cordova.splashscreen.SplashScreen\" /></feature>": 1
>             }
>         },
>         "AndroidManifest.xml": {
>             "/*": {
>                 "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"
/>": 5,
>                 "<uses-permission android:name=\"android.permission.READ_CONTACTS\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"
/>": 2,
>                 "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.RECORD_VIDEO\"
/>": 1,
>                 "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"
/>": 1
>             },
>             "application": {
>                 "<meta-data android:name=\"com.facebook.sdk.ApplicationId\" android:value=\"@string/fb_app_id\"
/>": 1,
>                 "<activity android:label=\"@string/fb_app_name\" android:name=\"com.facebook.LoginActivity\"
/>": 1
>             }
>         },
>         "res/values/facebookconnect.xml": {
>             "/*": {
>                 "<string name=\"fb_app_id\">448</string>": 1,
>                 "<string name=\"fb_app_name\">RaiseMore</string>": 1
>             }
>         },
>         "config.xml": {
>             "/*": {
>                 "<access origin=\"https://m.facebook.com\" />": 1,
>                 "<access origin=\"https://graph.facebook.com\" />": 1,
>                 "<access origin=\"https://api.facebook.com\" />": 1,
>                 "<access origin=\"https://*.fbcdn.net\" />": 1,
>                 "<access origin=\"https://*.akamaihd.net\" />": 1,
>                 "<feature name=\"FacebookConnectPlugin\"><param name=\"android-package\"
value=\"org.apache.cordova.facebook.ConnectPlugin\" /></feature>": 1
>             }
>         }
>     },
> Which then leads to the final config.xml that only has the config munge from the facebook
plugin:
> <?xml version='1.0' encoding='utf-8'?>
> <widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
>     <preference name="loglevel" value="DEBUG" />
>     <feature name="App">
>         <param name="android-package" value="org.apache.cordova.App" />
>     </feature>
>     <access origin="https://m.facebook.com" />
>     <access origin="https://graph.facebook.com" />
>     <access origin="https://api.facebook.com" />
>     <access origin="https://*.fbcdn.net" />
>     <access origin="https://*.akamaihd.net" />
>     <feature name="FacebookConnectPlugin">
>         <param name="android-package" value="org.apache.cordova.facebook.ConnectPlugin"
/>
>     </feature>
>     <name>HelloCordova</name>
>     <description>
>         A sample Apache Cordova application that responds to the deviceready event.
>     </description>
>     <author email="dev@cordova.apache.org" href="http://cordova.io">
>         Apache Cordova Team
>     </author>
>     <content src="index.html" />
>     <access origin="*" />
>     <preference name="Orientation" value="landscape" />
> </widget>



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message