Differences between revisions 9 and 10
Revision 9 as of 2014-02-14 15:33:11
Size: 4517
Editor: jbondc
Comment:
Revision 10 as of 2014-02-14 15:46:27
Size: 4569
Editor: jbondc
Comment:
Deletions are marked like this. Additions are marked like this.
Line 132: Line 132:
 Which format is better for user? Web devs likely prefer JSON. Native devs likely prefer XML.   Which format is better for user?
 
Web devs likely prefer JSON. Native devs likely prefer XML.
Line 135: Line 136:
 A JSON config means the code in cordova-cli & cordova-plugman is easier to read.
 No parsing involved so much faster.
 Could convert XML to 1-1 mapping in JSON to get benefit of having no XML logic in the code.
  A JSON config means the code in cordova-cli & cordova-plugman is easier to read.
  No parsing involved so much faster.
  Could convert XML to 1-1 mapping in JSON to get benefit of having no XML logic in the code.
Line 143: Line 144:
 * jbondc  * Jonathan

 * -1 Jesse
Line 147: Line 150:
 * Josh
Line 150: Line 154:
 * jbondc  * Jonathan
Line 152: Line 156:
=== Preference for XML or JSON as user config ===
 * jbondc
=== Preference for XML & JSON both supported as user config ===
 * Jonathan

Cordova configs

  • {$PLATFORM_RUNTIME} is either just "android" (default runtime) or "android.chromeview" (alternative runtime)
  • {$CLI_PROJECT} is the root the cordova cli
  • {$WWW_DIR} is the path to a platform's web app directory

Hybrid: {$CLI_PROJECT}/config.xml

<app>
 <!-- default/global configuration of application -->
 <name>Some app</name>
 <version>1.0.1</version>
 <icon></icon>

 
 <!-- platform specific config and/or overrides  -->
 <platform name="ios">
    <version build="2">1.0.1</version>
    <icon id="foo@2x">path</icon>    
 </platform>

 <platform name="android">
    <version release="1.0.0" .../>
    <icon/>    
    
     <!-- runtime specific config and/or overrides  -->
    <runtime name="chromeview">
        <name>Some app (beta!)</name>
        <dosomething />    
    </runtime>

 </platform>

  <!-- Rename cordova/worklight... "engine" to view?  -->
  <view name="cordova">
     <content src="index.html" />
     <access origin="*" />
  </view>

  <!-- <engine name="cordova" ..> ? -->
  <!-- <webview name="cordova" ..> ? -->
  <!-- <api name="cordova" ..> -->
  <!-- <context name="cordova" ..> ? -->
  <!-- <env name="cordova" ..> ? -->
  <!-- <js-env name="cordova" ..> ? -->
  <!-- <hostenv name="cordova" ..> ? -->
  
</app>

Could keep 'config.xml' and create new "cordova" namespace:

http://phonegap.com/blog/2014/01/30/customizing-your-android-manifest-and-ios-property-list-on-phonegap-build/

XML namespacing is great in theory, never adopted well by web developers.

Install meta: {$CLI_PROJECT}/platforms/{$PLATFORM_RUNTIME}/cordova/project.json

  • All required metadata for a native cordova project: current version in the project, ...?
  • All required metadata about installed plugins for a specific platform.

(needs to convert all necessary plugin.xml information into a json format)

  • Need enough info to uninstall & re-install a plugin properly (list of files installed + version number).

Runtime meta: {$CLI_PROJECT}/platforms/{$PLATFORM_RUNTIME}/{$WWW_DIR}/wat.json

"WAT" --> "Web app technology? Existing configs:

Typically this would be loaded by the WebView / browser.

{
 "name": "Some app!",
 "version": "1.0.1",
 "meta": { /* meta-data (auto-generated by cli/plugman)

   "cordova": {
     "plugins": [], /* list of plugins installed */
     "modules": []  /* list of modules to load dynamically (if needed) */
    }
 }
}

Defaults: {$CLI_PROJECT}/platforms/{$PLATFORM_RUNTIME}/cordova/project/defaults/

Store all default configuration & platform files here e.g.

  • {$CLI_PROJECT}/platforms/{$PLATFORM_RUNTIME}/cordova/project/defaults/config.xml
  • {$CLI_PROJECT}/platforms/{$PLATFORM_RUNTIME}/cordova/project/defaults/cordova.js
  • ?

Plugman config: {$PLUGMAN_PROJECT}/cordova/config.xml

If using cli, it must update {$PLUGMAN_PROJECT}/cordova/config.xml

NOTES

Some objectives:

  • cli should write plugin information to the same place as 'plugman' (cordova project)
    • offers an aggregate view over all installed platform projects.
  • must be able to safely rollback changes to a previous change.
    • project.transaction(); project.rollback(); project.commit();
  • must be able to add a different plugin version to a specific native platform

e.g. plugin list

org.apache.cordova.file     0.2.5 
org.apache.cordova.camera   0.2.6  (ios, windows8)
org.apache.cordova.camera   0.2.5  (android)
  • need a migration path to convert existing 3.x project
    • And think about easy upgrade process:

 cordova info
 cordova upgrade [platform list]

XML vs. JSON as config

  • User perspective
    • Which format is better for user? Web devs likely prefer JSON. Native devs likely prefer XML.
  • Cordova perspective
    • A JSON config means the code in cordova-cli & cordova-plugman is easier to read. No parsing involved so much faster. Could convert XML to 1-1 mapping in JSON to get benefit of having no XML logic in the code.

Drop config.xml widget spec

  • Andrew
  • Braden
  • Jonathan
  • -1 Jesse

Preference for JSON only as user config

  • Braden
  • Josh

Preference for XML only as user config

  • Brian
  • Jonathan

Preference for XML & JSON both supported as user config

  • Jonathan

config/cordova.xml (last edited 2014-06-03 16:52:53 by jbondc)