Created
June 5, 2018 21:57
-
-
Save a9y/1e56ee17165f3ec8144ea4e8838be303 to your computer and use it in GitHub Desktop.
Install a clean environment to test a cordova build.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
error() { | |
echo "error: $@" 1>&2 | |
exit 1 | |
} | |
for x in realpath dirname tar unzip wget npm; do | |
[[ -z "$(which "$x" 2>/dev/null)" ]] && error "missing required application: $x" | |
done | |
download() { | |
local sdk_tools_url='https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip' | |
local jdk_url='http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz' | |
echo ':: Downloading...' | |
echo | |
mkdir tmp | |
wget -O tmp/sdk.zip "$sdk_tools_url" || error 'failed to download android sdk' | |
wget -O tmp/jdk.tar.gz --header='Cookie: oraclelicense=a' "$jdk_url" || error 'failed to download java jdk' | |
echo ':: Extracting...' | |
echo | |
mkdir env | |
unzip -d env/sdk tmp/sdk.zip | |
tar -xf tmp/jdk.tar.gz -C env || error 'could not extract jdk' | |
mv 'env/jdk1.8.0_172' env/jdk | |
rm -rf tmp | |
} | |
download_android() { | |
echo ':: Downloading Android SDK...' | |
echo | |
# Remember to accept licenses by pressing 'y' | |
sdkmanager 'build-tools;27.0.3' 'platforms;android-27' || error 'sdkmanager failed to download packages' | |
} | |
setup_npm() { | |
mkdir -p "$NPM_PREFIX/bin" 2>/dev/null | |
mkdir -p "$(dirname "$NPM_CONFIG_USERCONFIG")" 2>/dev/null | |
echo "prefix=$NPM_PREFIX" > "$NPM_CONFIG_USERCONFIG" | |
} | |
download_cordova() { | |
echo ':: Downloading cordova...' | |
echo | |
npm install -g cordova || error 'failed to install cordova' | |
} | |
workspace_root="$(realpath ~/cordova-demo)" | |
[[ -z "$workspace_root" ]] && error 'invalid workspace directory' | |
echo ":: Workspace=$workspace_root" | |
echo | |
[[ -d "$workspace_root" ]] || mkdir -p "$workspace_root" | |
cd "$workspace_root" || error 'could not change to workspace directory' | |
[[ -d env ]] || download | |
export ANDROID_SDK="$workspace_root/env/sdk" | |
export ANDROID_HOME="$ANDROID_SDK" | |
export JDK_HOME="$workspace_root/env/jdk" | |
export JAVA_HOME="$JDK_HOME" | |
export GRADLE_USER_HOME="$workspace_root/conf/gradle" | |
export NPM_CONFIG_USERCONFIG="$workspace_root/conf/npmrc" | |
export NPM_PREFIX="$workspace_root/env/npm" | |
export PATH="$JDK_HOME/bin:$ANDROID_HOME/tools/bin:$NPM_PREFIX/bin:$PATH" | |
[[ -d "$GRADLE_USERHOME" ]] || mkdir -p "$GRADLE_USER_HOME" | |
[[ -d env/sdk/platforms ]] || download_android | |
[[ -f "$NPM_CONFIG_USERCONFIG" ]] || setup_npm | |
[[ -x "$NPM_PREFIX/bin/cordova" ]] || download_cordova | |
if [[ ! -d "$workspace_root/project" ]]; then | |
echo ':: Creating project...' | |
echo | |
cordova create "$workspace_root/project" com.example.demo DemoApp || error 'failed to create cordova project' | |
cd "$workspace_root/project" || error 'could not change to project directory' | |
cordova platform add android || error 'failed to add android platform to project' | |
cordova plugin add phonegap-plugin-barcodescanner || error 'failed to add barcodescanner plugin to project' | |
fi | |
cd "$workspace_root/project" || error 'could not change to project directory' | |
echo ':: Building project...' | |
echo | |
cordova "${1:-build}" android || error 'failed to build cordova project' | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Pass along
run
as an argument to launch the android demo, otherwise it just builds.It requires user interaction during the Android license stage. Just press
y
and then enter.