An ATproto social media client -- with an independent Appview.

feat(ci): add android build workflow

thanks @Turtlepaw!

authored by

serenity and committed by
GitHub
db083c4e 96ddac19

+107 -2
+44
.github/workflows/catsky-build.yml
··· 1 + # copied from https://github.com/NotNite/deer-social 2 + name: Build Catsky 3 + on: workflow_dispatch 4 + 5 + jobs: 6 + deer-build-android: 7 + name: Build Catsky for Android 8 + runs-on: ubuntu-latest 9 + steps: 10 + - name: Checkout 11 + uses: actions/checkout@v4 12 + 13 + - name: Setup Node.js 14 + uses: actions/setup-node@v4 15 + with: 16 + node-version: 20 17 + cache: yarn 18 + - name: Setup Java 19 + uses: actions/setup-java@v4 20 + with: 21 + java-version: 17 22 + distribution: temurin 23 + cache: gradle 24 + - name: Setup Android SDK 25 + uses: android-actions/setup-android@v3 26 + - name: Setup just 27 + uses: extractions/setup-just@v2 28 + 29 + - name: Install dependencies 30 + run: yarn install --frozen-lockfile 31 + 32 + - name: Copy example build settings 33 + run: | 34 + cp .env.example .env 35 + cp google-services.json.example google-services.json 36 + 37 + - name: Build 38 + run: just dist-build-android-gradle 39 + 40 + - name: Upload artifact 41 + uses: actions/upload-artifact@v4 42 + with: 43 + name: android 44 + path: android/app/build/outputs/apk/release/app-release.apk
+1 -1
app.config.js
··· 149 149 backgroundColor: '#1185FE', 150 150 }, 151 151 googleServicesFile: './google-services.json', 152 - package: 'xyz.blueskyweb.app', 152 + package: 'social.catsky', 153 153 intentFilters: [ 154 154 { 155 155 action: 'VIEW',
+1 -1
google-services.json.example
··· 9 9 "client_info": { 10 10 "mobilesdk_app_id": "1:123456789000:android:f1bf012572b04063", 11 11 "android_client_info": { 12 - "package_name": "xyz.blueskyweb.app" 12 + "package_name": "social.catsky" 13 13 } 14 14 }, 15 15 "oauth_client": [
+61
justfile
··· 1 + export PATH := "./node_modules/.bin:" + env_var('PATH') 2 + 3 + # lots of just -> yarn, but this lets us chain yarn command deps 4 + 5 + [group('dist')] 6 + dist-build-web: intl build-web 7 + 8 + [group('dist')] 9 + dist-build-android-sideload: intl build-android-sideload 10 + 11 + [group('dist')] 12 + dist-build-android-gradle: intl build-android-gradle 13 + 14 + [group('build')] 15 + intl: 16 + yarn intl:build 17 + 18 + [group('build')] 19 + prebuild-android: 20 + expo prebuild -p android 21 + 22 + [group('build')] 23 + build-web: && postbuild-web 24 + yarn build-web 25 + 26 + [group('build')] 27 + build-android-sideload: prebuild-android 28 + eas build --local --platform android --profile sideload-android 29 + 30 + [group('build')] 31 + [working-directory: 'android'] 32 + build-android-gradle: prebuild-android 33 + ./gradlew app:assembleRelease 34 + 35 + [group('build')] 36 + postbuild-web: 37 + # build system outputs some srcs and hrefs like src="static/" 38 + # need to rewrite to be src="/static/" to handle non root pages 39 + sed -i 's/\(src\|href\)="static/\1="\/static/g' web-build/index.html 40 + 41 + # we need to copy the static iframe html to support youtube embeds 42 + cp -r bskyweb/static/iframe/ web-build/iframe 43 + 44 + # copy our static pages over! 45 + cp -r deer-static-about web-build/about 46 + 47 + [group('dev')] 48 + dev-android-setup: prebuild-android 49 + yarn android 50 + 51 + [group('dev')] 52 + dev-web: 53 + yarn web 54 + 55 + [group('dev')] 56 + dev-web-functions: build-web 57 + wrangler pages dev ./web-build 58 + 59 + [group('lint')] 60 + typecheck: 61 + yarn typecheck