Cordova – All about

Announcements

https://cordova.apache.org/blog/

How to build an existing Cordova app?

Install Cordova Tool

Install Homebrew and Node

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
https://brew.sh/
https://brew.sh/
https://brew.sh/
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
brew install node
brew install watchman
brew install node brew install watchman
brew install node
brew install watchman
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install -g cordova
npm install -g cordova
npm install -g cordova

Install third party libraries

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install
cordova prepare
npm install cordova prepare
npm install
cordova prepare

Add platforms

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cordova platform add browser
cordova run browser
cordova platform add android
cordova run android
cordova platform add ios
cordova run ios
cordova platform add browser cordova run browser cordova platform add android cordova run android cordova platform add ios cordova run ios
cordova platform add browser
cordova run browser

cordova platform add android
cordova run android

cordova platform add ios
cordova run ios

Errors

If there is error which you don’t know what it is, rebuild the project

  • Remove 3 folders: node_modules, platforms and plugins
  • $ cordova prepare

Could not find an installed version of Gradle either in Android Studio, or on your system to install the gradle wrapper. Please include gradle in your path, or install Android Studio
This is because Gradle is not installed

  • Install Java, version 8 or higher
  • Download Gradle from https://gradle.org/releases/
    $ curl -O -L https://downloads.gradle-dn.com/distributions/gradle-6.0.1-bin.zip
    $ mkdir -p ~/bin/gradle
    $ unzip -d ~/bin/gradle gradle-6.0.1-bin.zip
  • ~/.bash_profile
    export GRADLE_HOME=$HOME/bin/gradle/gradle-6.0.1
    export PATH=$GRADLE_HOME/bin:$PATH
  • ~/.zshrc to refresh bash_profile everytime Mac is started
    $ source ~/.bash_profile

Could not find gradle wrapper within Android SDK. Might need to update your Android SDK.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -r /Applications/Android\ Studio.app/Contents/plugins/android/lib/templates ~/Library/Android/sdk/tools
chmod a+x ~/Library/Android/sdk/tools/templates/gradle/wrapper/gradlew
cp -r /Applications/Android\ Studio.app/Contents/plugins/android/lib/templates ~/Library/Android/sdk/tools chmod a+x ~/Library/Android/sdk/tools/templates/gradle/wrapper/gradlew
cp -r /Applications/Android\ Studio.app/Contents/plugins/android/lib/templates ~/Library/Android/sdk/tools

chmod a+x ~/Library/Android/sdk/tools/templates/gradle/wrapper/gradlew

Unzipping /Users/hung-nb/.gradle/wrapper/dists/gradle-2.13-all/ebj3j8vp1bokwifuewc84xk56/gradle-2.13-all.zip to /Users/hung-nb/.gradle/wrapper/dists/gradle-2.13-all/ebj3j8vp1bokwifuewc84xk56
Exception in thread “main” java.util.zip.ZipException: zip file is empty

Copy zip file from “https://services.gradle.org/distributions/gradle-2.13-all.zip” into “/Users/hung-nb/.gradle/wrapper/dists/gradle-2.13-all/ebj3j8vp1bokwifuewc84xk56” folder

How to check Cordova version?

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm info cordova
cordova platform version android
cordova platform version ios
npm info cordova cordova platform version android cordova platform version ios
npm info cordova
cordova platform version android
cordova platform version ios

How to update Cordova iOS new version?

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cordova platform remove ios
cordova platform add ios@6.0.0
cordova platform remove ios cordova platform add ios@6.0.0
cordova platform remove ios
cordova platform add ios@6.0.0

How to export release files?

Update version

Update version “version=””” in “config.xml

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<widget defaultlocale="en-US" id="this.is.app.name" android-versionCode="" version="1.0.1" windows-packageVersion="1.8.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps" xmlns:android="http://schemas.android.com/apk/res/android">
<widget defaultlocale="en-US" id="this.is.app.name" android-versionCode="" version="1.0.1" windows-packageVersion="1.8.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps" xmlns:android="http://schemas.android.com/apk/res/android">
<widget defaultlocale="en-US" id="this.is.app.name" android-versionCode="" version="1.0.1" windows-packageVersion="1.8.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps" xmlns:android="http://schemas.android.com/apk/res/android">

Build dependencies

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
yarn
cordova prepare
yarn cordova prepare
yarn
cordova prepare

Export apk, ipa

Android

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cordova build android --prod --release
cordova build android --prod --release
cordova build android --prod --release

iOS

Open project by XCode and build

How to debug Cordova project?

Android

  • Run app on Android emulator
  • Open Chrome browser
  • Type “chrome://inspect”
  • Select emulator Inspect

iOS

  • Download Safari Technology Preview
    https://developer.apple.com/safari/technology-preview/
  • Run app on iOS simulator or your iPhone
  • Open Safari Technology Preview
  • Select “Develop” > “hung-nb’s Mac Book Pro”
  • Select Simulator or your iPhone
    If you can’t see your iPhone, open “Settings” > “Safari” > “Advanced” > Turn on “Web Inspector”

How to change “AndroidManifest.xml” and “*-Info.plist”

Change “AndroidManifest.xml” by editing “config.xml”

Add more child tags

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<config-file target="AndroidManifest.xml" parent="/manifest/application/activity/intent-filter">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:host="mainactivity" android:scheme="my.app.scheme" />
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest/application/activity/intent-filter"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:host="mainactivity" android:scheme="my.app.scheme" /> </config-file>
<config-file target="AndroidManifest.xml" parent="/manifest/application/activity/intent-filter">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:host="mainactivity" android:scheme="my.app.scheme" />
</config-file>

Add more properties into <Application> tag

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:largeHeap="true" />
</edit-config>
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application"> <application android:largeHeap="true" /> </edit-config>
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
    <application android:largeHeap="true" />
</edit-config>

Change plist file by editing “config.xml”

Add url scheme for the app

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<config-file target="*-Info.plist" parent="CFBundleURLTypes">
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>this.is.identifier</string>
<key>CFBundleURLSchemes</key>
<array>
<string>this.is.app.scheme</string>
</array>
</dict>
</array>
</config-file>
<config-file target="*-Info.plist" parent="CFBundleURLTypes"> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>this.is.identifier</string> <key>CFBundleURLSchemes</key> <array> <string>this.is.app.scheme</string> </array> </dict> </array> </config-file>
<config-file target="*-Info.plist" parent="CFBundleURLTypes">
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>this.is.identifier</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>this.is.app.scheme</string>
            </array>
        </dict>
    </array>
</config-file>

Local storage

How to save/ get value in-app local storage?

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
window.localStorage.setItem("keyABC", "valueXYZ")
window.localStorage.getItem('keyABC')
window.localStorage.setItem("keyABC", "valueXYZ") window.localStorage.getItem('keyABC')
window.localStorage.setItem("keyABC", "valueXYZ")
window.localStorage.getItem('keyABC')
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
window.localStorage.setItem("keyABC", JSON.stringify(jsonObject))
const jsonObject = JSON.parse(localStorage.getItem(key))
window.localStorage.setItem("keyABC", JSON.stringify(jsonObject)) const jsonObject = JSON.parse(localStorage.getItem(key))
window.localStorage.setItem("keyABC", JSON.stringify(jsonObject))
const jsonObject = JSON.parse(localStorage.getItem(key))

How to hide keyboard after pressing “Enter”?

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Close the on-screen keyboards when the "go" button is used
document.getElementById('filterBasic-input').addEventListener('keyup', function (e) {
const keyCode = (e.keyCode ? e.keyCode : e.which);
if (keyCode === 13 || keyCode === 10) {
e.target.blur();
}
}, false);
// Close the on-screen keyboards when the "go" button is used document.getElementById('filterBasic-input').addEventListener('keyup', function (e) { const keyCode = (e.keyCode ? e.keyCode : e.which); if (keyCode === 13 || keyCode === 10) { e.target.blur(); } }, false);
// Close the on-screen keyboards when the "go" button is used
document.getElementById('filterBasic-input').addEventListener('keyup', function (e) {
    const keyCode = (e.keyCode ? e.keyCode : e.which);
    if (keyCode === 13 || keyCode === 10) {
        e.target.blur();
    }
}, false);

How to catch button click in Cordova inAppBrowser?

Be the first to comment

Leave a Reply

Your email address will not be published.


*