title: checklist of creating phonegap project- Can SomeOne add More elements
body: <p>FOR UPDATED LIST PLS SEE THIS URL</p>
  
  <p><a href="http://www.aurigait.com/blog/checklist-of-creating-phonegap-project/" rel="nofollow noreferrer">http://www.aurigait.com/blog/checklist-of-creating-phonegap-project/</a></p>
  
  <ol>
  <li>We will be doing core HTML dev. But Jquery Mobile Can be used as a platform for its wide range device support &amp; ease in making forms with a tradeoff of performance on lower-end devices. </li>
  <li>UI transitions are not supported in various devices either we can selectively apply transitions.</li>
  <li>iOS and android navigation to be kept same or different since back button navigation in available in android</li>
  <li>Language / Audio / Tectical Support</li>
  <li>Analytics / Notifications and Intensity [Notificatioin Pages History]  / Adwords / geolocation based</li>
  <li>Resposive layout resolution breakup</li>
  <li>We will be supporting resolutions of 320*480 and Above. (for that we can have a UI Designs for 320*480 (mobile Portrait) / 768*1024  (tablet Portrait) / 1280*720 (Desktop)</li>
  <li>Updates &amp; News</li>
  <li>Event Calender &amp; Reminders</li>
  <li>User feedback Forms</li>
  <li>swipe gestures</li>
  <li>Sharing of all the content from the application</li>
  <li>Single page applications [Single Page layouts effectively implement those. (follow examples of paytm / asana / gmail)]</li>
  <li>Bringing html directly from server with UI just being a container of view.</li>
  <li>Using application transforms like Mobstac for this. / xslts / transforms</li>
  <li>Single page applications [Single Page layouts effectively implement those. (follow examples of paytm / asana / gmail)]</li>
  <li>Bringing html directly from server with UI just being a container of view.</li>
  <li>Using application transforms like Mobstac for this. / xslts / transforms.</li>
  <li>Sharing for ios and android</li>
  <li>back button navigation support</li>
  <li>Documentation of the application/admin panel is needed</li>
  <li>Export options of reports</li>
  </ol>
  
  <p>(1)Back button navigation support in android is very important should be planned from the day 1 of development cycle. In IOS back button must be provided for desired navigation. 
  Remember android and iOS have different navigation patterns.</p>
  
  <pre><code> document.addEventListener("backbutton", onBackKeyDown, false); //onBackKeyDown
  </code></pre>
  
  <p>(2)avoid using Form elements inside pages because there is just no use, you will never submit.</p>
  
  <p>(3)for phonegap splash screen please use navigator splash hide() rather than autohide=true and timeout.</p>
  
  <pre><code>&lt;preference name="auto-hide-splash-screen" value="false" /&gt;
  </code></pre>
  
  <p>(4)android splash landscape is supported so pls put landscape splash images as well into the system (for iOS we are looking into it)</p>
  
  <p>(5)when using cloud build for phonegap and then native build remember to delete the repo’s images since if using cloud build images will be uploaded as a zip package increasing the size of application.</p>
  
  <p>(6)for android and ios different JS for plugin maintain seperate files remember only one repository will be kept for android and iOS in SVN there will be no exception.</p>
  
  <pre><code>   &lt;!--iOS / Android cordova
      &lt;script src="js/ios/cordova-2.5.0.js"&gt;&lt;/script&gt;--&gt;
       &lt;script src="js/android/cordova-2.5.0.js"&gt;&lt;/script&gt;
       &lt;!--android cordova--&gt;
       &lt;script src="js/android/flurry.js"&gt;&lt;/script&gt;
       &lt;script src="js/android/PushNotification.js"&gt;&lt;/script&gt;
       &lt;script src="js/android/AdMobPlugin.js"&gt;&lt;/script&gt;
       &lt;script src="js/android/share.js"&gt;&lt;/script&gt;
       &lt;script src="js/android/ExecutePlugin.js"&gt;&lt;/script&gt;
      &lt;!--iOS / Android cordova  
      &lt;script src="js/ios/AdMobPlugin_iOS.js"&gt;&lt;/script&gt;
      &lt;script src="js/ios/flurryPlugin_iOS.js"&gt;&lt;/script&gt;
      &lt;script src="js/ios/PushNotification_iOS.js"&gt;&lt;/script&gt;
      &lt;script src="js/ios/iOS_Execute.js"&gt;&lt;/script&gt;
      &lt;script src="js/ios/share.js"&gt;&lt;/script&gt;--&gt;
  </code></pre>
  
  <p>(7)Do not use Javascript confirm box and alerts use Native boxes. They look good</p>
  
  <pre><code>navigator.notification.confirm("Do You want to Exit Km?", function (idx) { if (idx == 2) { navigator.app.exitApp(); } }, 'Exit Application', 'No,Yes');
  
  function Native_Alert(msg) {
      if (navigator.notification != undefined) {
          navigator.notification.alert(msg);
      }
      else
          alert(msg);
  }
  </code></pre>
  
  <p>(8)When using list select use native option list and check list because they look better. Not the html select items</p>
  
  <pre><code> &lt;select id="Select2" name="Select2" data-role="none" &gt;
                      &lt;option&gt;Town&lt;/option&gt;
                  &lt;/select&gt;
  </code></pre>
  
  <p>(9)inorder to remove white overlays for android 4.0.3 element use below</p>
  
  <pre><code>input{
     -webkit-user-modify: read-write-plaintext-only;}
  </code></pre>
  
  <p>(10)Never do preferred installation SD card not supported in ~android 2.2</p>
  
  <p>(11)screen width can not change for a mobile app only vertical scroll can come with some exceptions. Screen sometimes moves outside areas should be taken care Only at the time of writing markup and css.</p>
  
  <p>(12)native loading panels for Android and iOS are preferred Due to Their BLOCKING nature.
  <a href="http://abstractlayers.com/2013/03/09/phonegap-adding-progress-dialogspinner/" rel="nofollow noreferrer">http://abstractlayers.com/2013/03/09/phonegap-adding-progress-dialogspinner/</a></p>
  
  <p>(13)dynamic and eval script registering and De-registering</p>
  
  <p>(14)Phonegap childbrowser can not be trusted for loading every content we can use, open windows in New Browser outside phonegap instead you can use InAppbrowser.</p>
  
  <pre><code>function OpenLinkinNewWindow(weblink, sharecontrol, subjectval) {
      try {
  
          if (global_deviceType == undefined || global_deviceType == "")
              global_deviceType = (navigator.userAgent.match(/iPod/i)) == "iPod" ? "iOS" : (navigator.userAgent.match(/iPad/i)) == "iPad" ? "iOS" : (navigator.userAgent.match(/iPhone/i)) == "iPhone" ? "iOS" : (navigator.userAgent.match(/Android/i)) == "Android" ? "Android" : (navigator.userAgent.match(/BlackBerry/i)) == "BlackBerry" ? "BlackBerry" : "other";
          switch (sharecontrol) {
              case 'facebook':
                  weblink = 'http://www.facebook.com/sharer.php?u=' + encodeURI(weblink) + '&amp;t=' + encodeURI(subjectval);
                  break;
              case 'twitter':
                  weblink = 'http://twitter.com/share?text=' + encodeURI(subjectval) +'&amp;url=' + encodeURI(weblink);
                  break;
              default:
                  break;
          }
          consoleLOG('sharer weblink : ' + weblink);
          //incase of videos android and iOS have different problems while loading videos since childbrowser can open vid for on IOS
          if (global_deviceType == "Android")
              navigator.app.loadUrl(weblink, { openExternal: true });
          else if (global_deviceType == "iOS")
              window.open(weblink, '_system', 'location=yes'); //andriod changes
          else
              window.open(weblink); //andriod changes
      }
      catch (ex) { consoleLOG('error in OpenLinkinNewWindow : ' + ex); window.open(weblink); }
  
  }
  </code></pre>
  
  <p>(15)application offline check with html5 features</p>
  
  <p>(16)while creating iOS Native build please copy the references into the folder of the build otherwise build will have issues while porting to another system.</p>
  
  <p>(17)phonegap cloud build must be Locked to particular version of phonegap otherwise it will create build for latest RC versions which may have bugs. config.xml file should be read thoroughly before using the feature of phonegap build.</p>
  
  <p>(18)for creating next android and iOS build the version must be updated to version 1.0 + 0.1 or what is suitable.</p>
  
  <p>(19)keep the application namespace, bundle id correct  at the first moment because you Can never change that once app is deployed on app / play store. [*dont put com.demo.demoApp]</p>
  
  <p>(20)Keep the apple provisioning and distribution profiles in backup as well as developer profile for any mac you are using since the application code base &amp; certificates, public keys and p12 file is very dependent on Macs.</p>
  
  <p>(21)disable unwanted permission for android and iOS to avoid unwanted components to be loaded and also its shown on app stores permissions tab and while installation user may get confused by seeing unwanted permissions being required by the application.</p>
  
  <pre><code>&lt;plugins&gt;
      &lt;plugin name="App" value="org.apache.cordova.App"/&gt;
      &lt;plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/&gt;
      &lt;plugin name="Device" value="org.apache.cordova.Device"/&gt;
      &lt;!-- commented &lt;plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/&gt;
      &lt;plugin name="Compass" value="org.apache.cordova.CompassListener"/&gt;
      &lt;plugin name="Media" value="org.apache.cordova.AudioHandler"/&gt;
      &lt;plugin name="Camera" value="org.apache.cordova.CameraLauncher"/&gt;
      &lt;plugin name="Contacts" value="org.apache.cordova.ContactManager"/&gt;--&gt;
      &lt;plugin name="File" value="org.apache.cordova.FileUtils"/&gt;
      &lt;plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/&gt;
      &lt;plugin name="Notification" value="org.apache.cordova.Notification"/&gt;
      &lt;plugin name="Storage" value="org.apache.cordova.Storage"/&gt;
      &lt;plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/&gt;
      &lt;plugin name="Capture" value="org.apache.cordova.Capture"/&gt;
      &lt;!-- commented &lt;plugin name="Battery" value="org.apache.cordova.BatteryListener"/&gt;--&gt;
      &lt;plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/&gt;
      &lt;!--&lt;plugin name="Echo" value="org.apache.cordova.Echo" /&gt;--&gt;
      &lt;plugin name="Globalization" value="org.apache.cordova.Globalization"/&gt;
      &lt;plugin name="Share" value="com.schaul.plugins.share.Share"/&gt;
    &lt;/plugins&gt;
  </code></pre>
  
  <p>(22)No hover css classes will be applied for the mobile application for any cases. hover is not used in mobile and otherwise it creates Issue.</p>
  
  <p>(23)<a href="https://stackoverflow.com/questions/5161004/using-phonegap-for-native-application-development">Using Phonegap for Native Application development</a></p>