Skip to content

Instantly share code, notes, and snippets.

@leoc
Created September 13, 2023 15:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leoc/069a14df5eb95671384c9fdeb6631395 to your computer and use it in GitHub Desktop.
Save leoc/069a14df5eb95671384c9fdeb6631395 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -e
export ANDROID_HOME=~/Library/Android/sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/cmdline-tools/8.0/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$PATH
meteor_server=${METEOR_SERVER:-https://my.app}
KEYSTORE_FILE=.keystore
METEOR_BUILD_DIR=tmp/android_build/bundle
APP_BUILD_DIR=$METEOR_BUILD_DIR/android/project/app/build/outputs/bundle/release
APP_NAME=$(grep name app/mobile-config.js | awk '{print $2}' | sed s/[\'\",]//g)
APP_VERSION=$(grep version app/mobile-config.js | awk '{print $2}' | sed s/[\'\",]//g)
APP_UNSIGNED_FILE=$APP_BUILD_DIR/app-release.aab
APP_SIGNED_FILE=../build/${APP_NAME}-${APP_VERSION}.aab
echo "Switching to app directory"
cd app
echo "Re-adding Android platform for a clean build environment ..."
meteor list-platforms | grep android > /dev/null && meteor remove-platform android
meteor list-platforms | grep ios > /dev/null && meteor remove-platform ios
meteor add-platform android
echo "Deleting everything in $METEOR_BUILD_DIR"
rm -rf $METEOR_BUILD_DIR
echo "Building to $METEOR_BUILD_DIR for server $meteor_server ..."
echo "meteor build $METEOR_BUILD_DIR --platforms android --server $meteor_server"
meteor build $METEOR_BUILD_DIR --platforms android --server "$meteor_server"
echo "Sign android app bundle ..."
jarsigner \
-verbose \
-sigalg SHA1withRSA \
-digestalg SHA1 \
-keystore $KEYSTORE_FILE \
-storepass "<pass>" \
-signedjar "$APP_SIGNED_FILE" \
"$APP_UNSIGNED_FILE" \
prod-test
echo "Built & signed ${APP_SIGNED_FILE}"
meteor list-platforms | grep android > /dev/null && meteor remove-platform android
echo "Removed Android platform"

Setup for development on your device

  • Install dependencies
    • OpenJDK 11
    • Python 2.6
  • Download Android SDK
    • Meteor 1.4.3.1 onward: Android SDK Tools v.25.2.x (mac, linux, windows) or v.26.0.0 or later
  • Install SDK directory to
    • Mac in Library/Android/sdk
      • Extract downloaded tools to Library/Android/sdk/tools
  • Add to you ~/.bashrc
    • export ANDROID_HOME=~/Library/Android/sdk

    • export ANDROID_SDK_ROOT=$ANDROID_HOME

    • export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/cmdline-tools/8.0/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$PATH

    • Ensure the variables are correctly set up via:

      echo $ANDROID_HOME
      echo $ANDROID_SDK_ROOT
      echo $PATH
      
  • Install dependencies through sdkmanager:\nsdkmanager "cmdline-tools;8.0" "platform-tools" "platforms;android-33" "build-tools;30.0.3" "emulator"
  • Run adb start-server
  • Connect your android device and trust the adb connection on your device
  • Start meteor server meteor run android-device --mobile-server=http://<your-ip>:3000
App.setPreference("android-minSdkVersion", "28");
App.setPreference("android-compileSdkVersion", "33");
App.setPreference("android-targetSdkVersion", "33");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment