96 lines
3.2 KiB
Bash
96 lines
3.2 KiB
Bash
|
#!/bin/bash
|
||
|
set -e
|
||
|
|
||
|
exe() { ( echo "## $*"; $*; ) }
|
||
|
|
||
|
ANDROID_SDK_LICENSE=/home/lbry-android/.buildozer/android/platform/android-sdk-23/licenses/android-sdk-license
|
||
|
## VERSION and REPO variables are optional:
|
||
|
## Use 'none' as a way to detect that none was provided by the user:
|
||
|
VERSION=${VERSION:-none}
|
||
|
REPO=${REPO:-none}
|
||
|
|
||
|
if [ ! -f $ANDROID_SDK_LICENSE ]; then
|
||
|
echo "No Android SDK License provided."
|
||
|
echo "1) Download android-studio."
|
||
|
echo "2) Go to Settings -> Android SDKs -> Select Android 6.0 (Marshmellow)"
|
||
|
echo " and click the little download button and then agree to the license."
|
||
|
echo "3) Retry the build again."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
## Two options for where the lbry-android source code comes from:
|
||
|
## 1) Clone directly from git via provided VERSION and REPO environment variables.
|
||
|
## 2) User may mount their own lbry-android source tree at /src
|
||
|
## Only one of these two options can be used at a time.
|
||
|
## VERSION is any valid git reference: commit, branch, or tag.
|
||
|
## REPO is the git repository URL to clone.
|
||
|
|
||
|
## User must create their own buildozer.spec and google-services.json
|
||
|
## This may be done in their own fork of lbry-android,
|
||
|
## or done in their own clone mounted to /src
|
||
|
|
||
|
if [ $VERSION != "none" ] || [ $REPO != "none" ]; then
|
||
|
# Build from a fresh git clone
|
||
|
|
||
|
# No /src should be mounted if VERSION or REPO specified:
|
||
|
if mount | grep " /src"; then
|
||
|
echo "Cannot mount /src when VERSION and/or REPO variables are used."
|
||
|
echo "Aborting."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# A /dist directory should exist to copy final apk to:
|
||
|
if ! mount | grep " /dist"; then
|
||
|
echo "When using VERSION or REPO you must mount a /dist directory to put the final apk"
|
||
|
echo "Aborting."
|
||
|
exit 1
|
||
|
fi
|
||
|
if [ $VERSION == "none" ]; then
|
||
|
VERSION=master
|
||
|
fi
|
||
|
if [ $REPO == "none" ]; then
|
||
|
REPO="https://github.com/lbryio/lbry-android.git"
|
||
|
fi
|
||
|
|
||
|
## Clone from $REPO and checkout $VERSION:
|
||
|
exe git clone $REPO /src
|
||
|
cd /src
|
||
|
exe git checkout $VERSION
|
||
|
|
||
|
## Create config from samples if none exists:
|
||
|
if [ ! -f /src/buildozer.spec ]; then
|
||
|
exe cp /src/buildozer.spec.sample /src/buildozer.spec
|
||
|
fi
|
||
|
if [ ! -f /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json ]; then
|
||
|
exe cp /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.sample.json /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
if [ ! -f /src/buildozer.spec ]; then
|
||
|
echo "You must create a buildozer.spec file (See buildozer.spec.sample)"
|
||
|
echo "Aborting."
|
||
|
exit 1
|
||
|
elif [ ! -f /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json ]; then
|
||
|
echo "You must create p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json "
|
||
|
echo " (See p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.sample.json)"
|
||
|
echo "Aborting."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
## Setup npm for non-root user:
|
||
|
NPM_PACKAGES="${HOME}/.npm-packages"
|
||
|
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
|
||
|
PATH="$NPM_PACKAGES/bin:$PATH"
|
||
|
|
||
|
## Build:
|
||
|
cd /src/app
|
||
|
exe npm install
|
||
|
exe /src/app/bundle.sh
|
||
|
|
||
|
cd /src
|
||
|
exe buildozer android debug
|
||
|
|
||
|
if mount | grep " /dist"; then
|
||
|
exe cp /src/bin/* /dist
|
||
|
fi
|