You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2013/05/31 18:17:17 UTC

[07/22] added version 2.8.0rc1

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/blackberry10/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/blackberry10/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/blackberry10/index.md
new file mode 100644
index 0000000..e5e6b21
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/blackberry10/index.md
@@ -0,0 +1,185 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with BlackBerry 10
+==================================
+
+Apache Cordova is an application development platform that allows you to use common web technologies�primarily HTML5, JavaScript, and CSS�to create applications for mobile devices. Cordova uses a standard set of APIs to access common device features. Additional plugins allow you to access BlackBerry specific APIs, so that you can extend your application to tightly integrate with the BlackBerry 10 OS.
+
+Requirements
+------------
+
+Cordova for BlackBerry has the following software requirements:
+
+-   Windows XP (32-bit) or Windows 7 (32-bit and 64-bit) or Mac OSX 10.6.4+
+-   node.js (> 0.9.9) [Download node.js now](http://nodejs.org/)
+-   BlackBerry 10 Native SDK. [Download the BlackBerry 10 Native SDK now.](http://developer.blackberry.com/native/download/)
+
+Setting up your signing keys
+----------------------------
+
+Before starting development, you�ll need to register for your code signing key and debug token. The signing key allows you to sign your completed app so that you can distribute it through BlackBerry World. The debug token allows you to test an unsigned app on a BlackBerry 10 device. You do not need to create and install the debug token yourself; if you supply the keystore password, the build script will create and install the debug token for you.
+
+-   [Register for your code signing key now.](https://www.blackberry.com/SignedKeys/codesigning.html)
+-   [Set your computer up for code signing. ](http://developer.blackberry.com/html5/documentation/set_up_for_signing.html)
+-   [Learn more about debug tokens.](http://developer.blackberry.com/html5/documentation/running_your_bb10_app_2008471_11.html)
+
+Creating your project
+-------------------------
+
+To create a new project, you use the `create` command to set up the folder structure for your app.
+
+1.  On the command line, navigate to the folder where you extracted Cordova.
+2.  Run the `create` command using the following syntax:
+    ```
+	bin/create <path-to-project>
+	```
+
+This command creates the folder structure for your project at the specified location. All of your project resource files should be stored in the *<path-to-project>*/www folder, or in a subfolder within it.
+
+Adding and managing targets
+---------------------------
+
+A target refers to a BlackBerry device or simulator that you will use to test your app. Targets are added directly to your project; you can add multiple targets to your project, each with a unique name. Then, when you want to deploy your app to a particular target, you can simply refer to that target by name when you run your script.
+
+###Add a target
+
+To add a target, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/target  add  <name>  <ip-address>  [-t <device | simulator>]  [-p | --password <password>]  [--pin <device-pin>]
+```
+
+where
+
+-   `<name>`  specifies a unique name for the target.
+-   `<ip-address>`  specifies the ip address of the BlackBerry device or simulator.
+-   `-t <device | simulator>` specifies the target type. If not provided, the default value is device.
+-   `-p|--password <password>`  specifies the password for the device or simulator. This is required only if the device or simulator is password protected.
+-   `--pin <device-pin>`  specifies the PIN of the BlackBerry device, which identifies that device as a valid host for the debug token. This argument is required only if you are creating a debug token.
+
+###Remove a target
+
+To remove a target, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/target  remove  <name>
+```
+
+###Set a target as the default
+
+To specify a specific target as the default, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/target  default  <name>
+```
+
+Building your app
+-----------------
+
+To build your app, run the build script. You can build the app in either release mode or in debug mode.
+
+-   When you build the app in release mode, you are preparing it for distribution through BlackBerry World. The script packages your app resources and plugins together in a .bar file, then signs the app.
+-   When you build the app in debug mode, you are preparing it to be tested. The script packages your app resources and plugins together in a .bar file, but does not sign it. The script can also deploy the app onto a previously defined target. If you have not already created and installed a debug token, you can supply the keystore password, and the build script will create and install the debug token for you as well.
+
+    Debug mode also enables Web Inspector for the app, which allows you to remotely inspect the source code. A prompt displays the URL that you can use to connect to and inspect your app. For more information on using Web Inspector, see [Debugging using Web Inspector](http://developer.blackberry.com/html5/documentation/web_inspector_overview_1553586_11.html).
+
+###Build your app in release mode
+
+To build your app in release mode, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/build  release  -k|--keystorepass <password>  [-b|--buildId <number>]  [-p|--params <params-JSON-file>]
+```
+
+where
+
+-   `-k|--keystorepass <password>`  specifies the password you defined when you configured your computer to sign applications.
+-   `-b|--buildId <number>`  specifies the build version number of your application. Typically, this number should be incremented from the previous signed version. This argument is optional.
+-   `-p|--params <params-JSON-file>`  specifies a JSON file containing additional parameters to pass to downstream tools. This argument is optional.
+
+###Build your app in debug mode
+
+To build your app in release mode, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/build  debug  [<target>]  [-k|--keystorepass <password>]  [-p|--params <params-JSON-file>]  [-ll|--loglevel <error|warn|verbose>]
+```
+
+where
+
+-   `<target>`  specifies the name of a previously added target. If `<target>`  is not specified, the default target is used, if one has been created. This argument is only required if you want the script to deploy your app to a BlackBerry device or simulator and you have not created a default target. Additionally, if `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
+-   `-k|--keystorepass <password>`  specifies the password you defined when you configured your computer to sign applications. This password is also used to create your debug token. This argument is only required if you want the script to create and install the debug token for you.
+-   `-p|--params <params-JSON-file>`  specifies a JSON file containing additional parameters to pass to downstream tools.
+-   `-ll|--loglevel <level>`  specifies the log level. The log level may be one of `error`, `warn`, or `verbose`.
+
+Note that all of these parameters are optional. If you have previously defined a default target (and installed a debug token, if that target is a BlackBerry device), you can run the script with no arguments, and the script will package your app and deploy it to the default target. For example:
+
+```
+<path-to-project>/cordova/build debug
+```
+
+Deploying an app
+-------------------------
+
+You can test your app using either a BlackBerry device or a simulator. Before deploying your app, you must first create a target for the device or simulator you want to deploy your app to.
+
+The run script will first build  your app. If you intend to deploy an app to a physical device for testing, you must first install a debug token on that device. If you specify the `--keystorepass <password>` argument when running the run script, the script will create and install the debug token for you. You do not need a debug token to test your app on a simulator, even if that app is unsigned.
+
+To deploy your app to a device or simulator, on a command line type the following command:
+
+```
+<path-to-project>/cordova/run <target> [--no-build]
+```
+
+where
+-   `<target>`  specifies the name of a previously added target. If `<target>`  is a device, then that device must be connected to your computer by USB connection or be connected to the same Wi-Fi network as your computer.
+
+-   `-no--build` will use the most recently built version of the application rather than re-building. This is useful to test an application in release mode.
+
+Adding and managing plugins
+---------------------------
+
+To add additional functionality that is outside of the core features of Cordova, you�ll need to add plugins. A plugin represents a set of APIs that provide access to additional features of the platform.
+
+In order to use a plugin, you must first add it into your project. Once added into your project, the plugin will be bundled with your project during the build process, to ensure that your app has access to all the APIs it needs.
+
+###Add a plugin
+
+To add a plugin, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/plugin add <path to plugin>
+```
+
+###Remove a plugin
+
+To remove a plugin, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/plugin rm <name>
+```
+
+###View a list of installed plugins
+
+To view a list of installed plugins, on the command line, type the following command:
+
+```
+<path-to-project>/cordova/plugin ls
+```

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/index.md
new file mode 100644
index 0000000..766d64a
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/index.md
@@ -0,0 +1,33 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started Guides
+======================
+
+- Getting Started with Android
+- Getting Started with BlackBerry
+- Getting Started with BlackBerry 10
+- Getting Started with iOS
+- Getting Started with Symbian
+- Getting Started with WebOS
+- Getting Started with Windows Phone 7
+- Getting Started with Windows Phone 8
+- Getting Started with Windows 8
+- Getting Started with Bada
+- Getting Started with Tizen

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/ios/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/ios/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/ios/index.md
new file mode 100644
index 0000000..f894b93
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/ios/index.md
@@ -0,0 +1,323 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with iOS
+========================
+
+## Introduction ##
+
+Apache Cordova is a library used to create native mobile applications using Web technologies.  The application is created using HTML, CSS and JavaScript and compiled for each specific platform using the platform native tools.  Cordova provides a standard set of JavaScript APIs to access device features on all supported platforms. This document describes how to get started using Apache Cordova for the iOS platform.
+
+### Requirements ###
+
+
+- **Intel-based Computer with Mac® OS X® Lion or greater (10.7.4+)**

+    The Apple® tools required for building iOS applications run only on the OS X operating system. The version of the development environment required, Xcode® 4.5, runs only on Mac OS X version 10.7 (Lion) or greater.  

+- **Xcode 4.5 and iOS 6 SDK**
+    
    To submit apps to the Apple App Store℠, you must be using the latest versions of the Apple tools. Currently the latest versions are Xcode 4.5.2 and the iOS 6 SDK (Software Development Kit). The download of Xcode 4.5.2 includes the iOS 6 SDK. 

+    - Download from the [App Store](https://itunes.apple.com/us/app/xcode/id497799835?mt=12) (https://itunes.apple.com/us/app/xcode/id497799835?mt=12). 

+    - Download from [Apple Developer Downloads](https://developer.apple.com/downloads/index.action) (https://developer.apple.com/downloads/index.action).  Note:  This link requires Apple Developer registration.
+
+- **Xcode Command Line Tools**
+
+    Cordova uses the command line to create a new application project.  To access the Xcode tools from the command line an additional download is required.  The tools are downloaded from within Xcode.

+    1. Open Xcode
+    2. Select the following via the Xcode Menus:  **Xcode Preferences> Downloads>Command Line Tools**.  This will download and install copies of the core command line tools and system headers into system folders on your computer.
+
+
+- **iOS Device**
+
+    You can test many of the Cordova features using the iOS simulator that is installed with the iOS SDK and Xcode, but you will need an actual device to fully test all of the device features used in your applications before submitting to the App Store.  The device must have at least iOS 5.x installed - this is the minimum iOS version supported as of Cordova 2.3.  Devices that support at least iOS 5 include all iPad® models, iPhone® 3GS and above, and iPod® Touch 3rd Generation or later. 
    
    In addition, to install apps onto a device, you must be a member of the [iOS Developer Program](https://developer.apple.com/programs/ios/) from Apple.  The program costs $99 per year. This Getting Started guide documents deploying the application to the iOS simulator so registration with the developer program is not required.
+
+## Install Cordova
+
+### Download Cordova
+
+Download the latest version of [Apache Cordova](http://www.apache.org/dist/cordova/) from http://www.apache.org/dist/cordova/.  Click on the Download icon and select cordova-X.Y.Z-src.zip to download to your machine. The X, Y and Z represent the version number of Cordova, for example x.x.x.  The download includes the code for all of the Apache Cordova supported platforms.  

+### Extract Cordova
+
+To access the code it will need to be extracted from the archive (.zip) file.
+
+
+1. Navigate to the folder where you downloaded the code.  Find the cordova-X.Y.Z-src.zip file.  

+    Note: The file names change with each new version of Cordova.  The file name will be different if you are using an updated or newer version of Cordova.

+
+2. Using the Finder® app, double click the file to extract. This will create a directory named, cordova-X.Y.Z.  

+
+3. Expand this folder and locate the cordova-ios.zip file and double click to extract it.  

+
+4. The code for iOS is within the cordova-ios directory structure.
+
+## Project Creation
+
+Xcode projects for Cordova are created by invoking a script file via the command line. The following steps explain how to create the necessary directory structure, open and use the Terminal application to create a new project, and execute the create script. 

+### Determine Project Location
+
+Determine where on your system you will locate the Xcode project files for your application.  For this tutorial I created a CordovaXY directory under my Documents folder:  ~/Documents/CordovaXY  where the X and Y refer the to Cordova version #.

+
+1. In Finder navigate to the Documents Directory. 

+
+2. Create a directory called CordovaXY within the Documents directory where the X and Y represent the Cordova version number (23, for example).  You can use a different directory name or location if you wish but you will need to remember this directory location and name for subsequent steps.

+
+### Open Terminal
+
+1. In Finder, navigate to the Applications Folder. Find and expand the Utilities Folder.

+
+2. Locate the Terminal app and double click to open it. 

+
+3. In Finder, navigate to the cordova-ios directory from the downloaded and extracted Cordova code and expand it if necessary.   Highlight the bin directory as shown:
+
+  ![](img/guide/getting-started/ios/bin_dir_listing.png)
+
+  **Note:** This screen capture was from the Cordova-2.3.0 download, your listing will vary based on the actual Cordova version installed.
+
+4. Drag this directory to the open Terminal icon in the dock.  This will open up a default terminal window with the path set to the bin directory.
+
+### Create New Project
+
+#### Command Line Syntax
+
+  1. Determine Required Parameters
+
+  There are 3 ordered, required parameters for creating a Cordova project from the command line:

+    1. **project location**
+
+      This is the directory where the Xcode project and files for the application will be located. This tutorial is using ~/Documents/CordovaXY as the base location and the application name as the project directory.  Thus the location for our project will be 
~/Documents/CordovaXY/HelloWorld, where HelloWorld is the project name  (note that the X and Y represent the Cordova version, for example 22 for version 2.2).  The final directory, HelloWorld in this example, must not already exist as it will be created during execution of the command.
+
+    2. **package name**
+
+      When submitting apps to the App Store, this must be the reverse domain name App ID that is created via the Apple Provisioning Portal (described in the Deploy to Device section).  The Provisioning Portal is accessible once you have paid for and signed into your iOS Developer Account.   Since you will not be submitting this sample app, this tutorial uses org.apache.Cordova plus the app name, HelloWorld:  
org.apache.cordova.HelloWorld

+    3. **project name**
+
+      This is the name of the actual project.  Most developers make the project name and the application name the same.  In this example the project name is HelloWorld.

+  2. Execute the Command
+
+  In the terminal app with bin as the current directory, enter the 3 pieces of information via the following command:
+  
  `./create ~/Documents/CordovaXY/HelloWorld org.apache.cordova.HelloWorld HelloWorld`
+
+  ![](img/guide/getting-started/ios/create.png)
+
+  3. Fix Common Problems
+
+      **No Developer Directory Found**
+
+      The “Error: No developer directory found at /Developer” message is displayed if the create script can not find the location of the command line tools within Xcode. This can occur if more than one version of Xcode is installed on the system or when upgrading from older versions of Xcode.  The solution is to run the xcode-select command to set the location.  If you have installed Xcode in the default location the command to execute is:

+
+            sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer

+
+      See [http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/xcode-select.1.html](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/xcode-select.1.html) for more information on the xcode-select command if you have installed Xcode in a different location.
+
+#### Optional Features
+
+  - **Additional Parameters**
+
+  The default create script copies the necessary common library files from the Cordova distribution directory into your Xcode project directory.  These files will appear within the CordovaLib directory of your project structure.  Some development organizations prefer to have developers reference the common Cordova library files from a fixed location.  A common location helps to insure that all developers are using the exact same copy of the CordovaLib code.  This is accomplished by adding the --shared parameter to the create command.  The following command will create a project that references the CordovaLib directory from the iOS directory location where the create script is executed:

+
+        ./create --shared ~/Documents/CordovaXY/HelloWorld org.apache.cordova.HelloWorld HelloWorld

+  
  The Xcode project is still created in the ~/Documents/CordovaXY/HelloWorld directory, but it references the CordovaLib files from the fixed location of the Cordova distribution rather than a copy of these files within the project directory. 

+  - **Additional Scripts**
+
+  Within the cordova-ios/bin directory there is an additional script that changes the location of the CordovaLib directory to refer to a shared location after the project has been created,

+
+         ./update_cordova_subproject path/to/your/project

+
+  Most users will be satisfied with the default project creation procedure and do not need this additional script. This script uses the location of CordovaLib directory at the same directory level as the bin directory from which it is run as the shared location for CordovaLib. To modify the newly created HelloWorld project to use a shared location for CordovaLib, execute the following command from the bin directory:

+
+        ./update_cordova_subproject ~/Documents/CordovaXY/HelloWorld

+
+## Running the Application
+
+### Open the Project
+
+  Using the Finder app, navigate to the location where you created the project. This guide uses ~/Documents/CordovaXY/HelloWorld.  Double click the HelloWorld.xcodeproj file to open the project in Xcode.
+
+  Your screen should look similar to:
+
+![](img/guide/getting-started/ios/helloworld_project.png)
+  **Note:** this screen capture shows a project that was created with the name as HelloWorld23.   

+### Deploy to the Simulator
+
+  1. In the upper left hand corner of Xcode, click on the Scheme drop down and select the project name, HelloWorld, as the target.  

+  2. Click the device section and select an iOS Simulator such as iPhone 6.0 Simulator as shown:  

+![](img/guide/getting-started/ios/select_xcode_scheme.png)
+
+  3. Click the **Run** button in your project window's toolbar to build, deploy and run the application in the simulator. 

+
+### Deploy to the Device
+
+#### Requirements
+
+  There are several requirements to deploy to a device. Since this information is not related directly to Cordova, please refer to the Apple Configuring Development and Distribution Assets section of the [Tools Workflow Guide for iOS](http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/00-About_the_iOS_Application_Development_Workflow/introduction.html#//apple_ref/doc/uid/TP40007959) documentation for complete details.

+
+  - Join the Apple iOS Developer Program

+
+  - Create a Provisioning Profile within the [iOS Provisioning Portal](https://developer.apple.com/ios/manage/overview/index.action).   You can use the Development Provisioning Assistant within the Provisioning Portal to create and install the profile and certificate for use within Xcode.

+
+  - Verify that the Code Signing Identity in the Code Signing sections of the Hello World Xcode project settings has been set with your provisioning profile name.   

+
+#### Deployment Steps
+
+  1. Plug your device into your Mac via the USB Cable.

+  2. Select the Target and device
+
+    1. In the upper left hand corner of Xcode, click the Scheme drop down and select the project name, HelloWorld, as the target.

+    2. Click the device section and select your device from the list.  If your device is plugged in via the USB but not visible in the device list, click the **Organizer** button to determine any errors.

+
+  3. Click the **run** button to build, deploy and run the application on your device.
+
+## Results
+
+  The running HelloWorld app is shown below.  The Device is Ready line should be slowly pulsating.
+
+  ![](img/guide/getting-started/ios/HelloWorldStandard.png)
+
+## Common Problems
+
+### Deprecation Warnings
+
+  When an application programming interface (API) has been changed or replaced by another API, it is marked as “deprecated.”  The API will still work in the near term but will be removed in a future version of the code library.  Apache Cordova contains some of these deprecated interfaces.  When you build and deploy an application, Xcode will issue warnings about these deprecated APIs.  The ‘invokeString’ method that Xcode is warning about represents functionality to invoke the app from a custom URL. The process for loading from a custom URL has changed but this code is included to provide backwards functionality for apps created with older versions of Cordova.  The sample app does not use this functionality so the references to the items causing the warnings can be ignored.
+
+  If you wish to remove the warnings you can remove the code that is referencing the invokeString deprecated API. 

+
+  1. Navigate to the MainViewController.m file in the Classes folder.

+  2. Find and comment out the following code by surrounding it with the begin, /*,  and end, */, comment characters as highlighted in the code snippet below.
+
+        (void)webViewDidFinishLoad:(UIWebView*)theWebView
+        {
+        // only valid if ___PROJECTNAME__-Info.plist specifies a protocol to handle
+        /*
+        if (self.invokeString) {
+          // this is passed before the deviceready event is fired, so you can access it in js when you receive deviceready
+          NSLog(@"DEPRECATED: window.invokeString - use the window.handleOpenURL(url) function instead, which is always called when the app is launched through a custom scheme url.");
+          NSString* jsString = [NSString stringWithFormat:@"var invokeString = \"%@\";", self.invokeString];
+          [theWebView stringByEvaluatingJavaScriptFromString:jsString];
+        }
+        */
+        // Black base color for background matches the native apps
+        theWebView.backgroundColor = [UIColor blackColor];
+        
+        return [super webViewDidFinishLoad:theWebView];
+        }
+    
+  3. Press Command s to save the file. 

+  4. Navigate to the AppViewDelegate.m file in the Classes Folder.
+
+  5. Comment out the following line by placing a double slash at the beginning of line 73 as shown below:

+
+        //self.viewController.invokeString = invokeString;

+
+  6. Press Command-s to save the file.
+
+  7. Press Command-b to rebuild the project and eliminate the warnings.

+
+### Missing Headers
+
+  Some users have encountered compilation errors relating to missing headers.  This refers to a problem in the build location and is fixed via Xcode preferences. 

+
+  1.  Within the Xcode menus select **Xcode>Preferences>Locations**. 

+  2. In the Derived Data section click the Advanced button and select Unique as the Build Location as shown: 

+![](img/guide/getting-started/ios/xcode_build_location.png)
+
+  This is the default setting for a new Xcode install but it may have been set differently if you upgraded from an older version of Xcode.
+
+## Next Steps
+
+### Building Your Own Applications
+
+  **Include Cordova**
+
+  All of the code for the sample application is contained within the www directory in the Xcode project structure.  The starting page is named index.html.  Any page that uses Cordova must include the cordova-*.js file for the associated Cordova version and platform.  The format of the JavaScript file name is cordova-x.y.z where x represents the major version number, y the minor version and z any point release.  For example, the Cordova 2.2.0 file was named cordova-2.2.0.js.   The sample HelloWorld application includes this file from index.html.
+
+      <script type="text/javascript" src="cordova-2.2.0.js"></script>
+      <script type="text/javascript" src="js/index.js"></script>
+      <script type="text/javascript">
+              app.initialize();
+      </script>
+    
+  **Wait for deviceReady Event**
+
+  When loading a page, Cordova’s deviceReady event must fire before you can access any of the platform features via the Cordova JavaScript APIs.  Within the sample application this is set up within the app object found within the js/index.js file. The app.initialze() call at the bottom of the index.html file (visible in the previous code example) sets in motion the binding of events to receive and respond to the deviceReady event.
+
+  Another common method of initializing a page is to add an event listener for the deviceReady event within the handler for the body onload event as shown in the code snippet below:
+
+      <head>
+        <script type="text/javascript" src="cordova-x.x.x.js"></script>
+        <script>
+	      function onLoad() {
+	    document.addEventListener(
+		  ‘deviceready’, onDeviceReady, false);
+        }
+        function onDeviceReady() {
+          // do Something!
+          // example: display a Cordova Alert
+          // see docs.cordova.io for full details
+          navigator.notification.alert(
+            'Cordova is ready!',  		// message
+            function() {//do something},  // callback
+            'Congratulations',            // title
+            'Done'             	      // buttonName
+           );
+        }
+        </script>
+        </head>
+        <body onload=”onLoad();”>
+        .....
+
+
+###Code Your Application
+
+  Replace the sample code in the www directory of a new project with the HTML, JavaScript and CSS code for your application.  The name of the initial file to load when the app is launched should be index.html (advanced users can change this if necessary).  As demonstrated in the HelloWorld sample application, subdirectories within the www directory are permitted.  Note that the www directory is readonly, you can not write information to this directory during app execution.  If you need to store information use the Cordova File or Storage APIs.
+
+  You can use many mobile JavaScript frameworks with Cordova  to create the UI and page navigation of your application.  Popular ones include:
+
+  - JQuery Mobile
+  - Dojo Mobile
+  - Sencha Touch
+
+### Modify Project Settings
+
+  There are many additional considerations to make your application unique.  The sample HelloWorld application is set up to run in all iOS environments, iPhone, iPod, and iPad.  You can design an app for a single device type by modifying the build settings within Xcode.
+
+  You should customize the application with your own icons and splash screens.  The sample application includes Cordova specific images in the Apple required sizes and resolutions as examples.  The Cordova Specific settings are located in the config.xml file and documented in the Cordova Project Settings Guide. Refer to the Resources section for more Apple specific information about building iOS Apps.
+
+## Resources
+
+### Apple
+
+
+  Some of these references are within the Apple iOS Developer Reference and require an iOS Developer License.

+
+  - [Start Developing iOS Apps Today](http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/index.html#//apple_ref/doc/uid/TP40011343) provides a quick overview of steps for developing iOS Apps.

+  - [Member Center home page](https://developer.apple.com/membercenter/index.action) provides links to several iOS technical resources including technical resources, the provisioning portal, distribution guides and community forums. 

+  - [Tools Workflow Guide for iOS](http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/00-About_the_iOS_Application_Development_Workflow/introduction.html#//apple_ref/doc/uid/TP40007959) 

+  - [Xcode 4 User Guide](http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/000-About_Xcode/about.html#//apple_ref/doc/uid/TP40010215) 

+  - [Session Videos](https://developer.apple.com/videos/wwdc/2012/) from the Apple World Wide Developer Conference 2012 (WWDC2012)
+
+### Apache Cordova
+
+  The [Apache Cordova home page](http://cordova.apache.org/) contains all of the links below and more.
+
+  - Cordova API documentation is available at [http://docs.cordova.io](http://docs.cordova.io)

+  - [PhoneGap google group](https://groups.google.com/forum/?fromgroups=%23!forum/phonegap) to discuss and ask questions about Cordova.  This forum is monitored by Cordova developers as well as users.  When posting please include the platform, device type, Cordova version and as many details as possible about the error or problem. 

+  - File Cordova bugs at [https://issues.apache.org/jira/browse/CB](https://issues.apache.org/jira/browse/CB)
+
+
+### Credits
+    
+  Mac®, OS X®, Apple®, Xcode®, App Store℠, iPad®, iPhone®, iPod® and  Finder® are Trademarks of Apple Inc.

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/symbian/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/symbian/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/symbian/index.md
new file mode 100644
index 0000000..d73ad92
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/symbian/index.md
@@ -0,0 +1,78 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with Symbian
+============================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+Video Tutorials:
+----------------
+
+- [Cordova Installer - Xcode 4 Template](http://www.youtube.com/v/R9zktJUN7AI?autoplay=1)
+
+
+1. Requirements
+---------------
+
+- Windows, OS X, or Linux
+
+There are also [QT for Symbian](http://wiki.phonegap.com/w/page/16494811/PhoneGap-Symbian-%28Qt%29) and [Symbian with Sony Ericsson](http://wiki.phonegap.com/w/page/16494782/Getting-Started-with-PhoneGap-Symbian-(WRT-on-Sony-Ericsson)) guides.
+
+
+2. Install SDK + Cordova
+-------------------------
+
+- Download and install [cygwin](http://www.cygwin.com/setup.exe) (Windows only). Make sure you select "make" as it is not included by default
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the Android directory.
+
+
+3. Setup New Project
+--------------------
+
+- In cygwin, navigate to where you extracted Cordova and go into the Symbian directory</li>
+
+ 
+4. Hello World
+--------------
+
+- Open up index.html located in phonegap/symbian/framework/www with your favourite editor. 
+- In the `body` tag, remove the line `"Build your phonegap app here! Dude!"` and add the line `<h1>Hello World</h1>`
+- In cygwin/terminal, type make. This will produce phonegap-symbian.wrt/app.wgz. 
+
+
+5A. Deploy to Simulator
+-----------------------
+
+- For Mac or Linux you should install [Aptana Studio](http://www.aptana.org/products/studio2/download) and [Nokia WRT Plug-in for Aptana Studio](http://www.forum.nokia.com/info/sw.nokia.com/id/00d62bd8-4214-4c86-b608-5f11b94dad54/Nokia_WRT_Plug_in_for_Aptana_Studio.html). This has a browser-based javascript emulator
+- For Windows you can download the [S60 SDK](http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html) which includes the S60 Emulator
+- Load the phonegap-symbian.wrt/app.wgz file into the emulator.
+
+
+5B. Deploy to Device
+--------------------
+
+- Load the phonegap-symbian.wrt/app.wgz file into the device using bluetooth or email.
+
+
+Done!
+-----
+
+You can also checkout more detailed version of this guide [here](http://wiki.phonegap.com/w/page/16494780/Getting-Started-with-Phonegap-Nokia-WRT).
+

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/tizen/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/tizen/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/tizen/index.md
new file mode 100644
index 0000000..a45895e
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/tizen/index.md
@@ -0,0 +1,108 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with Tizen
+=========================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+1. Requirements
+---------------
+
+- Linux Ubuntu 10.04/10.10/11.04/11.10 32-bit, Windows XP SP3/7 32-bit.
+
+2. Install SDK + Cordova
+-------------------------
+
+- Download and install the [Tizen SDK](https://developer.tizen.org/sdk).
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the tizen directory.
+- (optional) Install Tizen Cordova template projects: copy the `/templates` directory content into you Tizen Eclipse IDE web templates directory (e.g: `/home/my_username/tizen-sdk/IDE/Templates/web`).
+
+3. Setup New Project
+--------------------
+
+- **Method #1: Import a Cordova Tizen project sample**
+    - Launch Tizen Eclipse IDE
+    - Select  **File** -> **Import** -> **Tizen Web Project**
+
+    ![](img/guide/getting-started/tizen/import_project.png)
+
+    - Click **Next**
+    - Make sure that **Select root directory** is checked
+    - Make sure **Copy projects into workspace** is checked
+    - Click **Browse**
+    - Browse to one of the Cordova Tizen "samples" project directory (e.g: `/cordova-basic`) and select it
+
+    ![](img/guide/getting-started/tizen/import_widget.png)
+
+    - Click **Finish**
+
+    ![](img/guide/getting-started/tizen/project_explorer.png)
+
+    - Your project should now have been imported and appear **Project Explorer** view
+
+- **Method #2: Use Tizen Eclipse IDE Cordova Tizen project templates**
+    - Launch Tizen Eclipse IDE
+    - Select  **File** -> **New** -> **Tizen Web Project**
+    - Select **User Template** and **User defined** items
+    - Select one of the Tizen Cordova template (e.g: **CordovaBasicTemplate**)
+    - Fill-up the **Project name** and its target **Location**
+
+    ![](img/guide/getting-started/tizen/project_template.png)
+
+    - Click **Finish**
+
+    ![](img/guide/getting-started/tizen/project_explorer.png)
+
+    - Your project should now have been created and appear **Project Explorer** view
+
+4. Hello World
+--------------
+- To build your project:
+
+    - **Right Click** your project in the **Project Explorer** view and Select **Build Project**
+
+    ![](img/guide/getting-started/tizen/build_project.png)
+
+    - A widget package should have been generated in your project root directory (e.g: `cordova-basic.wgt`)
+
+    - **Note** that the provided samples Tizen Cordova projects are not basic hello world applications. They contain a simple example usage of the Battery Cordova API.
+
+
+5A. Deploy to Simulator
+-----------------------
+
+- **Right Click** your project in the **Project Explorer** view and Select **Run As** and **Tizen Web Simulator Application**
+
+    ![](img/guide/getting-started/tizen/runas_web_sim_app.png)
+
+5B. Deploy to Device/Emulator
+--------------------
+
+- Make sure that your target device is properly launched/connected/configured ("Date and Time" settings must have been set correctly)
+- Select your application deployment target with the **Connection Explorer** view (Select **Window** Menu -> **Show View** -> **Connection Explorer** )
+
+    ![](img/guide/getting-started/tizen/connection_explorer.png)
+
+- **Right Click** your project in the **Project Explorer** view and Select **Run As** and **Tizen Web Application**
+
+    ![](img/guide/getting-started/tizen/runas_web_app.png)
+
+Done!
+-----

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/webos/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/webos/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/webos/index.md
new file mode 100644
index 0000000..37ab244
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/webos/index.md
@@ -0,0 +1,79 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with WebOS
+==========================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+Video Tutorials:
+----------------
+
+- [Cordova and HP Palm webOS quick start video](http://www.youtube.com/v/XEnAUbDRZfw?autoplay=1)
+- [How to convert iPhone app to a Palm](http://www.youtube.com/v/wWoJfQw79XI?autoplay=1)
+
+
+1. Requirements
+---------------
+
+- Windows, OS X, or Linux
+
+
+2. Install SDK + Cordova
+----------------------------
+
+- Download and install [Virtual Box](http://www.virtualbox.org/)
+- Download and install [WebOS SDK](http://developer.palm.com/index.php?option=com_content&view=article&layout=page&id=1788&Itemid=321/)
+- Download and install [cygwin SDK](http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;layout=page&amp;id=1788&amp;Itemid=321)  (Windows only). Make sure you select "make" as it is not included by default
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the webOS directory.
+- Download and install XCode from the [Mac App Store](http://itunes.apple.com/ca/app/xcode/id497799835?mt=12) (OSX only)
+- Download and install Command Line Tools for XCode (OSX only); this can be done by going to XCode's Preferences -> Downloads -> Components and then click install on Command Line Tools
+
+ 
+3. Setup New Project
+--------------------
+
+- Open up terminal/cygwin and navigate to where you extracted your Cordova Download. Go into the webOS directory.
+
+
+4. Hello World
+--------------
+
+In phonegap/webOS/framework/www, open up index.html with your favourite editor. After the body tag add `<h1>Hello World</h1>`
+
+
+5A. Deploy to Simulator
+-----------------------
+
+- Open up your Palm Emulator from your applications folder/start menu.
+- Type `make` in your terminal/cygwin while in the webOS directory.
+
+
+5B. Deploy to Device
+--------------------
+
+- Make sure your device is in [Developer Mode and plug it in.](http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1552&amp;Itemid=59#dev_mode)
+- Type `make` in your terminal/cygwin while in the webOS directory.
+       
+
+Done!
+-----
+
+You can also checkout more detailed version of this guide [here](http://wiki.phonegap.com/w/page/16494781/Getting-Started-with-PhoneGap-webOS).
+

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/windows-8/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/windows-8/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/windows-8/index.md
new file mode 100644
index 0000000..1c2a6ad
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/windows-8/index.md
@@ -0,0 +1,104 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with Windows 8
+==================================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+During development of Windows 8 and Windows RT, Microsoft deprecated the name "Metro-style apps". On MSDN, this type of app is now called a "Windows Store" app. That's the name that we'll use in this guide. Also in this guide whenever we refer to Windows 8, you should take that to mean both Windows 8 and Windows RT.
+
+1. Requirements
+---------------
+
+- Windows 8
+
+- Visual Studio 2012 Professional or better, or Visual Studio 2012 Express for Windows 8
+
+Follow the instructions [here](http://www.windowsstore.com/) to submit your apps Windows Store.
+
+2. Install SDK + Cordova
+----------------------------
+
+- Setup your preferred variant of Visual Studio 2012. All of the paid versions of the product (Professional, etc) let you build Windows Store apps. To build Windows Store apps using the [Express editions](http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products), you will need **Express for Windows 8**.
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the subfolder **lib\windows-8**.
+
+3. Setup New Project
+--------------------
+
+You can already build Windows 8 apps using the "HTML/JavaScript track" available in Windows Store apps. The purpose of Cordova in Windows Store apps is to expose the same APIs used on all the other Cordova platforms.
+
+- Open Visual Studio 2012 and choose **New Project**.
+- Select **Installed - Template - Other Languages - JavaScript - Windows Store** from the tree, and then **Blank App** from the projects list. Enter whatever project name you like. We're using **CordovaWin8Foo** in this guide.
+
+    ![](img/guide/getting-started/windows-8/wsnewproject.png)
+
+- Microsoft continues to use **default.html** as the default page for use in websites, whereas most "open web" developers use **index.html**. (Plus it's likely that in the other platform variants of your project you are using **index.html** as the name of your default page.) To fix this, in Solution Explorer rename the **default.html** file to **index.html**. Then double-click the **package.appxmanifest** file and change the **Start page** value to **index.html**. 
+
+	![](img/guide/getting-started/windows-8/wschangemanifest.png)
+
+- To include **cordova.js** in your project, right-click on the **js** folder in Solution Explorer and select **Add - New Item**. Locate the **cordova.js** file in the **lib\windows-8** folder that we called out previously. 
+
+- Edit the code for **index.html**. Add a reference to **cordova.js**. You can do this manually, or by dragging the file from Solution Explorer.
+
+### Adding the reference...
+	    <!-- WinJS references -->
+	    <link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />
+	    <script src="//Microsoft.WinJS.1.0/js/base.js"></script>
+	    <script src="//Microsoft.WinJS.1.0/js/ui.js"></script>
+
+	    <!-- Cordova -->
+	    <script src="/js/cordova.js"></script>
+
+	    <!-- CordovaWin8Foo references -->
+	    <link href="/css/default.css" rel="stylesheet" />
+	    <script src="/js/default.js"></script>
+
+- Next we want to add some code that will demonstrate that Cordova is working. 
+
+### Adding a 'deviceready' handler...
+	<body>
+	    <p>Content goes here</p>
+
+	    <script type="text/javascript">
+
+	        console.log("Subscribing...");
+	        document.addEventListener("deviceready", function () {
+
+	            navigator.notification.alert("The device is ready!");
+
+	        });
+
+	    </script>
+
+	</body>
+
+
+5. Test the Project
+-------------------------------
+
+- Run the project from Visual Studio. You'll see the message box appear.
+
+	![](img/guide/getting-started/windows-8/wsalert.png)
+
+Done!
+-----
+
+That's it! You're now ready to build Windows Store apps with Cordova.
+

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-7/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-7/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-7/index.md
new file mode 100644
index 0000000..3a8f81f
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-7/index.md
@@ -0,0 +1,116 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with Windows Phone 7
+==================================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+Video Tutorials:
+----------------
+
+- [Cordova and Windows Phone quick setup video](http://www.youtube.com/v/wO9xdRcNHIM?autoplay=1)
+- [Cordova and Windows Phone deep dive](http://www.youtube.com/v/BJFX1GRUXj8?autoplay=1)
+
+
+1. Requirements
+---------------
+
+- Windows 7, Windows 8 or Windows Vista with SP2
+
+Note: Running in VM has issues, if you are on a Mac, you will need to setup a bootcamp partition with Windows 7 or Vista
+
+Necessary for Installing on Device and Submitting to Market Place:
+
+- Become an [App Hub member](http://create.msdn.com/en-US/home/membership).
+
+
+2. Install SDK + Cordova
+----------------------------
+
+- Download and install [Windows Phone  SDK](http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=27570/)
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the subfolder: lib\windows-phone\
+- copy the file CordovaWP7_x_x_x.zip to the folder : \My Documents\Visual Studio 2012\Templates\ProjectTemplates
+( if the template file does not exist, you will need to build it. See 2.1 below )
+if you have just installed VisualStudio, you should launch it once to create this folder
+if you prefer, you may add the project instead to the "Silverlight for Windows Phone" subfolder of "Visual C#". This is up to you, and only affects where the project template is shown when creating a new project. Also, You may need to create this folder. 
+
+
+2.1. Building the template
+-----------------------------
+( note, this step may not be required.  If the lib\windows-phone directory already contains a file CordovaWP7_x_x_x.zip then you may skip this step )
+- Open the file lib\windows-phone\templates\standalone\CordovaSolution.sln in Visual Studio Express for Windows Phone
+- From the file menu, select 'Export Template...' 
+- Choose template type 'Project template'
+- Give the exported template a name, ex. CordovaStarter-2.1.0 will produce CordovaStarter-2.1.0.zip
+- Optionally, you may add a description, icon image, and Preview image.  These are what is displayed in Visual Studio in the 'New Project' dialog.- 
+- Note: If you select ( 'Automatically import the template ... ') then you will not need to copy the .zip file over as outlined in step 2.
+- Press 'Finish'
+
+
+
+
+3. Setup New Project
+--------------------
+
+- Open Visual Studio Express for Windows Phone and choose **New Project**.
+- Select **CordovaStarter**. ( the version number will be displayed in the template description )
+- - note: If you do not see it, you may have to select the top level 'Visual C#' to see it
+- Give your project a name, and select OK.
+
+    ![](img/guide/getting-started/windows-phone-7/wpnewproj.png)
+
+ 
+4. Review the project structure
+-------------------------------
+
+- The 'www' folder contains your Cordova html/js/css and any other resources included in your app.
+- Any content that you add here needs to be a part of the Visual Studio project, and it must be set as content. 
+
+    ![](img/guide/getting-started/windows-phone-7/wp7projectstructure.png)
+
+
+5. Build and Deploy to Emulator
+-------------------------------
+
+- Make sure to have **Windows Phone Emulator** selected in the top drop-down menu.
+- Hit the green **play button** beside the Windows Phone Emulator drop-down menu to start debugging or press F5.
+
+    ![](img/guide/getting-started/windows-phone-7/wprun.png)
+    ![](img/guide/getting-started/windows-phone-7/wpfirstrun.png)
+
+
+6. Build your project for the device
+------------------------------------
+
+In order to test your application on a device, the device must be registered. Click [here][register-url] to read documentation on deploying and testing on your Windows Phone.
+
+- Make sure your phone is connected, and the screen is unlocked
+- In Visual Studio, select 'Windows Phone Device' from the top drop-down menu.
+- Hit the green **play button** beside the drop-down menu to start debugging or press F5.
+
+    ![](img/guide/getting-started/windows-phone-7/wpd.png)
+
+
+Done!
+-----
+
+You can also checkout more detailed version of this guide [here](http://wiki.phonegap.com/w/page/48672055/Getting%20Started%20with%20PhoneGap%20Windows%20Phone%207).
+
+[register-url]: http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402565(v=vs.105).aspx

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-8/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-8/index.md b/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-8/index.md
new file mode 100644
index 0000000..e69c7aa
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/getting-started/windows-phone-8/index.md
@@ -0,0 +1,133 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Getting Started with Windows Phone 8
+==================================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+Note: Applications built with Apache Cordova for Windows Phone 8 will only run on Windows Phone 8 devices. If you are looking to target both 7.5 AND 8 devices, then you should be using Apache Cordova for Windows Phone 7, which does not have all the new shiny features included in IE10, but implements the same APIs.
+
+1. System Requirements
+---------------
+
+- Operating System: 
+    - Windows 8 or Windows 8 Pro
+        - The 64-bit version (x64) of Windows is required for the SDK.
+        - The Pro version is recommended so you can run a device emulator.
+
+- Hardware:
+    - 6.5 GB of free hard disk space
+    - 4 GB RAM
+    - 64-bit (x64) CPU
+
+- Windows Phone 8 Emulator
+    - The phone emulator uses Hyper-V, so this list includes those pre-reqs.
+    - Windows 8 Pro 64-bit edition or greater
+    - Requires a processor that supports virtualization and [Second Level Address Translation (SLAT)](http://en.wikipedia.org/wiki/Second_Level_Address_Translation)
+        - See the [list of Intel processors that support VT-x (virtualization) and EPT (SLAT)](http://ark.intel.com/Products/VirtualizationTechnology)
+    - Enable the virtualization capability (i.e., VT-x on Intel) in your BIOS settings, as usually this is disabled by default.
+
+- SDK + IDE ( Visual Studio )
+    - Visual Studio 2012 Professional, Premium, or Ultimate. Note that Visual Studio Express for Windows Phone (included in the SDK) is not recommended because you can not build the template (see below) with VS Express, as it does not have the "Export Template" functionality, which is only in VS Pro or higher.
+
+- Register and pay for a [Windows Phone Dev Center](http://dev.windowsphone.com/en-us/publish) account if you want to install your app on a real device and/or submit it to Market Place.
+
+Note: Running the SDK in Virtual Machine might present some challenges. You can read this blog post that gives insight on the solutions to develop for [Windows Phone on a Mac](http://aka.ms/BuildaWP8apponaMac).
+
+
+2. Install SDK + Cordova
+----------------------------
+
+- Download and install [Windows Phone SDK](http://www.microsoft.com/en-us/download/details.aspx?id=35471)
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the subfolder: lib\windows-phone-8\
+- copy the file CordovaWP8_x_x_x.zip to the folder : \My Documents\Visual Studio 2012\Templates\ProjectTemplates\
+
+
+2.1. Building the template
+-----------------------------
+Note: this step may not be required.  If the lib\windows-phone directory already contains a file CordovaWP8_x_x_x.zip then you may skip this step.
+
+In order to simplify the development process, Cordova comes with a Visual Studio template that allows creating a Cordova application rapidly. This template can be modified if needed and the below steps indicate how to proceed if you want to modify and re-generate the template.
+
+- Open the file lib\windows-phone\templates\standalone\CordovaSolution.sln in Visual Studio Express for Windows Phone
+- From the file menu, select 'Export Template...' 
+- Choose template type 'Project template'
+- Give the exported template a name, ex. CordovaStarter-2.1.0 will produce CordovaStarter-2.1.0.zip
+- Optionally, you may add a description, icon image, and Preview image.  These are what is displayed in Visual Studio in the 'New Project' dialog.- 
+- Note: If you select ( 'Automatically import the template ... ') then you will not need to copy the .zip file over as outlined in step 2.
+- Press 'Finish'
+
+
+2.2 About the template
+--------------------
+Apache Cordova for Windows Phone 8 has moved to only supporting the standalone template.
+
+The 'Stand-Alone' template includes ALL the source code for Apache Cordova.  This project is easier to fine-tune to use just the features you need, thereby working around the permissions issues of using the dll.  In order to exclude an API (Plugin) you are not using, you can simply right-click-select the Command class file in Visual Studio and choose 'do not include in project'.
+
+
+3. Setup New Project
+--------------------
+
+- Open Visual Studio Express for Windows Phone and choose **New Project**.
+- Select **CordovaWP8**. ( the version number will be displayed in the template description )
+- Give your project a name, and select OK.
+
+![](img/guide/getting-started/windows-phone-8/StandAloneTemplate.png)
+
+ 
+4. Review the project structure
+-------------------------------
+
+- The 'www' folder contains your Cordova html/js/css and any other resources included in your app.
+- Any content that you add here needs to be a part of the Visual Studio project, and it must be set as content. 
+
+![](img/guide/getting-started/windows-phone-8/projectStructure.png)
+
+
+5. Build and Deploy to Emulator
+-------------------------------
+
+- Make sure to have **Windows Phone Emulator** selected in the top drop-down menu.
+- Hit the green **play button** beside the Windows Phone Emulator drop-down menu to start debugging or press F5.
+
+![](img/guide/getting-started/windows-phone-8/BuildEmulator.png)
+
+
+6. Build your project for the device
+------------------------------------
+
+In order to test your application on a device, the device must be registered. Click [here][register-url] to read documentation on deploying and testing on your Windows Phone 8.
+
+- Make sure your phone is connected, and the screen is unlocked
+- In Visual Studio, select 'Device' from the top drop-down menu.
+- Hit the green **play button** beside the drop-down menu to start debugging or press F5.
+
+![](img/guide/getting-started/windows-phone-7/wpd.png)
+
+
+Done!
+-----
+
+Further Reading 
+-------
+
+For more details on the specific differences between IE10 and WebKit browsers, and how to support both MS has a helpful [guide here](http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10.aspx)
+
+[register-url]: http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402565(v=vs.105).aspx

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/plugin-development/android/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/plugin-development/android/index.md b/docs/en/2.8.0rc1/edge/guide/plugin-development/android/index.md
new file mode 100644
index 0000000..e262c8a
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/plugin-development/android/index.md
@@ -0,0 +1,188 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements. See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership. The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License. You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied. See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+# Developing a Plugin on Android
+
+Writing a plugin requires an understanding of the architecture of Cordova-Android. Cordova-Android consists
+of an Android WebView with hooks attached to it. These plugins are represented as class mappings in the config.xml
+file.
+
+A plugin will consist of at least a single Java class that extends the `CordovaPlugin` class. A plugin must override one
+of the `execute` methods from `CordovaPlugin`. In addition to this, there is a best practice that
+the plugin should handle pause and resume events, and should handle message passing between plugins.
+Plugins with long-running requests, background activity (e.g. playing media), listeners or internal state should implement the `onReset()` method as well. This method is run when the `WebView` navigates to a new page or refreshes, which reloads the Javascript.
+
+## Plugin Class Mapping 
+
+The JavaScript portion of a plugin always uses the `cordova.exec` method as follows:
+
+    exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
+
+This will marshal a request from the WebView to the Android native
+side, more or less boiling down to calling the `action` method on the
+`service` class, with the arguments passed in the `args` Array.
+
+Whether you distribute your plugin as Java file or as a JAR of its own, the plugin must be added to the `config.xml` file in your Cordova-Android application's `res/xml/` folder.
+
+    <plugin name="<service_name>" value="<full_name_including_namespace>"/>
+
+The service name should match what you use in the JavaScript `exec` call, and the value will be the full name of the Java class including the namespace. Without this added, the plugin may compile but 
+will not be reachable by Cordova.
+
+## Writing an Android Java Plugin
+
+We have JavaScript to fire off a plugin request to the native side. We
+have the Android Java plugin mapped properly via the `config.xml` file.
+So what does the final Android Java Plugin class look like?
+
+What gets dispatched to the plugin via JavaScript's `exec` function gets
+passed into the Plugin class's `execute` method. Most `execute`
+implementations look like this:
+
+    @Override
+    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+        if ("beep".equals(action)) {
+            this.beep(args.getLong(0));
+            callbackContext.success();
+            return true;
+        }
+        return false;  // Returning false results in a "MethodNotFound" error.
+    }
+
+We compare the value of the `action` parameter, and dispatch
+the request off to a (private) method in the class, optionally passing
+some of the parameters to the method.
+
+When catching exceptions and returning errors, it's important that the error we return to JavaScript match the Java exception as much as possible, for clarity.
+
+### Threading
+
+JavaScript in the WebView does *not* run on the UI thread. It runs on
+the WebCore thread. The `execute` method also runs on the WebCore thread.
+
+If you need to interact with the UI, you should use the following:
+
+    @Override
+    public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
+        if ("beep".equals(action)) {
+            final long duration = args.getLong(0);
+            cordova.getActivity().runOnUiThread(new Runnable() {
+                public void run() {
+                    ...
+                    callbackContext.success(); // Thread-safe.
+                }
+            });
+            return true;
+        }
+        return false;
+    }
+
+If you do not need to run on the UI thread, but do not want to block the WebCore thread:
+
+    @Override
+    public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
+        if ("beep".equals(action)) {
+            final long duration = args.getLong(0);
+            cordova.getThreadPool().execute(new Runnable() {
+                public void run() {
+                    ...
+                    callbackContext.success(); // Thread-safe.
+                }
+            });
+            return true;
+        }
+        return false;
+    }
+
+### Echo Android Plugin Example
+
+We would add the following to our config.xml:
+
+    <plugin name="Echo" value="org.apache.cordova.plugin.Echo" />
+
+Then we would add the following file to
+`src/org/apache/cordova/plugin/Echo.java` inside our Cordova-Android
+application:
+
+    package org.apache.cordova.plugin;
+
+    import org.apache.cordova.api.CordovaPlugin;
+    import org.apache.cordova.api.PluginResult;
+    import org.json.JSONArray;
+    import org.json.JSONException;
+    import org.json.JSONObject;
+
+    /**
+     * This class echoes a string called from JavaScript.
+     */
+    public class Echo extends CordovaPlugin {
+        @Override
+        public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+            if (action.equals("echo")) {
+                String message = args.getString(0); 
+                this.echo(message, callbackContext);
+                return true;
+            }
+            return false;
+        }
+
+        private void echo(String message, CallbackContext callbackContext) {
+            if (message != null && message.length() > 0) { 
+                callbackContext.success(message);
+            } else {
+                callbackContext.error("Expected one non-empty string argument.");
+            }
+        }
+    }
+
+Let's take a look at the code. At the top we have all of the necessary
+Cordova `imports`. Our class extends from `CordovaPlugin`. We override
+the execute() method in order to recieve messages from exec(). Our method
+first compares against `action`: this plugin only supports
+one action, the `echo` action. Any other action will return false, which
+results in an error of type `INVALID_ACTION` - this will translate
+into an error callback invocation on the JavaScript side. Next, we grab
+the echo string using the `getString` method on our `args`, telling it
+we want to get the 0th parameter in the parameter array. We do a bit of
+parameter checking: make sure it is not `null`, and make sure it is not
+a zero-length string. If it is, we call callbackContext.error() (which,
+by now, you should know will invoke the error callback). If all of those
+checks pass, then we call callbackContext.success(), and pass in the
+`message` string we received as a parameter. This will finally translate
+into a success callback invocation on the JavaScript side. It will also
+pass the `message` parameter as a parameter into the JavaScript success
+callback function.
+
+## Debugging Plugins
+
+Eclipse can be used to debug an Android project, and the plugins can be debugged if the Java source is included in the project. Only the latest version of the Android Dev Tools is known to allow source code attachment to JAR dependencies, this is not fully supported at this time.
+
+## Common Pitfalls
+
+* Plugins have access to a `CordovaInterface` object. This object has access to the Android `Activity` that is running the application. This is the `Context` required to launch
+a new Android `Intent`. The `CordovaInterface` allows plugins to start an `Activity` for a result, and to set the callback plugin for when the `Intent` comes back to the application. This is important, since the
+`Intent`s system is how Android communicates between processes.
+* Plugins do not have direct access to the `Context` as they have in the past. The legacy `ctx` member is deprecated, and will be removed six months after 2.0 is released. All the methods that `ctx` has exist on the `Context`, so both `getContext()` and `getActivity()` are capable of returning the proper object required.
+
+## Use the Source
+
+One of the best ways to prepare yourself to write your own plugin is to
+have a [look at other plugins that already exist](https://github.com/apache/cordova-android/tree/master/framework/src/org/apache/cordova).
+
+You should also read through the comments in [CordovaPlugin.java](https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/api/CordovaPlugin.java).

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/plugin-development/bada/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/plugin-development/bada/index.md b/docs/en/2.8.0rc1/edge/guide/plugin-development/bada/index.md
new file mode 100644
index 0000000..3e059a8
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/plugin-development/bada/index.md
@@ -0,0 +1,74 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Developing a Plugin on Bada
+===========================
+
+Plugins are only supported on Bada 2.0 and above. Bada 1.2 does not support plugins.
+
+The Bada implementation is a full javascript implementation. Therefore, adding a custom plugin involves updating CordovaJS with your plugin code. Follow these steps to add a simple _Hello World_ plugin:
+
+1. Clone the CordovaJS repository
+
+        git clone https://git-wip-us.apache.org/repos/asf/cordova-js.git
+
+2. Create a new javascript file under __lib/bada/plugin/bada/__ and name it _HelloWorld.js_. Add the following content:
+
+        function HelloWorld() {
+        }
+
+        HelloWorld.prototype.printHello = function(success, fail, arg) {
+            alert(Osp.Core.StringHelper('Hello %1', arg[0]));
+        }
+
+        module.exports = new HelloWorld();
+
+3. Add a link to your newly created plugin in __lib/bada/platform.js__ under the objects property:
+    
+        objects: {
+            ...
+            HelloWorld: {
+                'cordova/plugin/bada/HelloWorld' 
+            },
+            ...
+        }
+        ...
+4. Update the plugin list under __lib/bada/exec.js__ to include your plugin
+
+        var plugins = {
+            ...
+            "HelloWorld": require('cordova/plugin/bada/HelloWorld')
+        };
+5. Now you can write your user-facing javascript however you like but remember that in order for your plugin to execute you need to call the following method
+
+        exec(success, fail, 'HelloWorld', 'printHello', ['Jackson!']);
+
+    success is the success callback that gets executed when the plugin succeeds
+    fail is the failure callback that gets executed if the plugin fails
+    'HelloWorld' is the name of your plugin
+    'printHello' is your plugin action
+    Finally, the last argument is your plugin parameters (if any).
+
+6. Run the following command to generate the new common javascript (make sure you have the jake npm module installed)
+
+        jake
+
+7. Copy the newly generated javascript under __pkg/cordova.bada.js__ to your Bada project under __Res/js__
+
+6. That is it! You can now add new Bada plugins and implement the many features that are not currently supported by Cordova Bada.

http://git-wip-us.apache.org/repos/asf/cordova-docs/blob/303c6663/docs/en/2.8.0rc1/edge/guide/plugin-development/blackberry/index.md
----------------------------------------------------------------------
diff --git a/docs/en/2.8.0rc1/edge/guide/plugin-development/blackberry/index.md b/docs/en/2.8.0rc1/edge/guide/plugin-development/blackberry/index.md
new file mode 100644
index 0000000..84394e8
--- /dev/null
+++ b/docs/en/2.8.0rc1/edge/guide/plugin-development/blackberry/index.md
@@ -0,0 +1,136 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+Developing a Plugin on BlackBerry
+=================================
+
+## How to make the Echo plugin on Blackberry
+
+In this article, we will explore how to develop the Echo plugin on BlackBerry. If you haven't read the
+top level article about the JavaScript part of the plugin, it would be best if you read that first
+and then this article. In addition, please download the [Cordova Blackberry repo](https://git-wip-us.apache.org/repos/asf?p=cordova-blackberry-webworks.git;a=summary).
+
+To note, the Cordova-BlackBerry project allows you to deploy to BlackBerry devices like the
+Torch, Bold, etc and as well as the Playbook. There exists a distinction between deploying to
+normal BlackBerry hand held devices (ie, Torch and Bold) and the Playbook. The code base between
+the two are separate so when you develop for one, you have to duplicate your efforts for the other!
+Therefore in this article, the focus will be on the hand held devices and not the tablet. In the future,
+this guide should cover both platforms.
+
+Continuing on from the previous article, the Echo plugin is essentially returning whatever message a user 
+provides to the `window.echo` function. 
+
+The Echo function:
+
+    window.echo = function(str, callback) {
+            cordova.exec(callback, function(err) {
+                callback('Nothing to echo.');
+            }, "Echo", "echo", [str]);
+        };
+
+## Modifying plugins.xml
+
+This file resides in your project's www folder and contains all of the references to the plugins that 
+your Cordova project uses. We are going to add an additional reference so that when cordova.exec is called,
+Cordova will know how to map the "Echo" argument of `cordova.exec` to the Echo class that we want to write natively.
+
+    <plugins>
+      ...
+      <plugin name="Echo" value="org.apache.cordova.echo.Echo"/>
+      ...
+    </plugins>
+
+## Adding Echo.java
+
+If you notice the structure of the value attribute, you'll see a defined path that leads to the Echo
+plugin. In the root folder of the Cordova BlackBerry WebWorks repo, look for a folder called framework.
+This folder contains all of the source code that runs natively on the BlackBerry. cd into the folder 
+structure until you reach the path: `framework/ext/src/org/apache/cordova`. At this point, you'll see
+all of the plugin folders and inside each folder is the plugins' source code. So, we will add
+the folder echo to `framework/ext/src/org/apache/cordova/echo` and create a file called `Echo.java`
+at `framework/ext/src/org/apache/cordova/echo/Echo.java`.
+
+## Writing Echo.java
+
+The basic idea of writing a plugin is to create a class that extends the Plugin class and have
+a method called execute to return a PluginResult class. Any call to cordova.exec will pass in 
+the action that we want to execute within the class as well as the arguments. In this case,
+"echo" is the action we want to execute within the class "Echo" and [str] are the arguments we are passing in.
+
+    package org.apache.cordova.echo;
+
+    import org.apache.cordova.api.Plugin;
+    import org.apache.cordova.api.PluginResult;
+    import org.apache.cordova.json4j.JSONArray;
+    import org.apache.cordova.json4j.JSONException;
+    import org.apache.cordova.json4j.JSONObject;
+    /**
+     * A simple plugin to demonstrate how to build a plugin for Blackberry
+     * Basically echos back the msg that a user calls to this plugin 
+     */
+    public final class Echo extends Plugin {
+
+        public static final String echo = "echo";
+
+        public PluginResult execute(String action, JSONArray args, String callbackId) {
+            PluginResult result = new PluginResult(PluginResult.Status.INVALID_ACTION, "Echo: Invalid action:" + action);
+            if(action.equals(echo)){
+                try {
+                    String theMsg = args.getString(0);
+                    if(theMsg!= null || theMsg.length()>0){   
+                        result = new PluginResult(PluginResult.Status.OK, theMsg);
+                    }else{
+                        result = new PluginResult(PluginResult.Status.ERROR, "Nothing to echo.");
+                    }
+                } catch (JSONException e) {
+                    result = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
+                }
+            }
+
+            return result;
+        }
+
+    }
+
+So if we look at the code above, we can see that within the execute method, we are first looking for
+what actions are coming in. The Echo plugin has only one action, "echo" so we will be only checking for 
+that. If our plugin had more actions, it's simply a matter of adding more if-conditionals to check
+for those actions.
+
+We are then going to grab the message coming in from the arguments which is supplied by the args parameter.
+We can grab the first argument by simply doing `String theMsg = args.getString(0);`.
+
+We will do some error checking and if the message looks okay, we will instantiate a new PluginResult with
+an ok status: PluginResult.Status.OK and return the message: theMsg. After this, we will then return the 
+result which will then pass back to JavaScript to be fired in the success callback. If something should fail, 
+we can return various status exceptions like PluginResult.Status.ERROR, PluginResult.Status.JSON_EXCEPTION,
+or PluginResult.Status.INVALID_ACTION. When these types of results are passed back, they will fire the fail 
+callback in JavaScript. 
+
+## Updating the .jar in your project's www folder
+
+The addition of the Echo.java needs to be updated in your project so to build the .jar file, cd
+to the root directory of the BlackBerry WebWorks repo. Use the ant command:
+
+    ant update -Dproject.path="~/path_to_my_project"
+
+This will build a new .jar file in the build/ext folder. Copy the `build/ext/cordova.jar` file into your
+project/www/ext folder. 
+
+If all goes well, that should allow you to use the Echo plugin in BlackBerry.