优化工作流,添加app-icon
This commit is contained in:
33
.github/workflows/app-expo-deploy.yml
vendored
33
.github/workflows/app-expo-deploy.yml
vendored
@@ -1,6 +1,12 @@
|
||||
# App Expo:CI 内生成 Android 签名 APK(expo prebuild + Gradle assembleRelease)
|
||||
# 使用 app-expo/plugins/withAndroidReleaseSigning:在 android/app 放置 keystore.properties + jks 后打 release 包。
|
||||
#
|
||||
# 产物说明:
|
||||
# - 以下为「真机向」release APK;Google Play 上架更推荐 AAB(按设备 ABI 下发)。
|
||||
# - 构建步骤会将 reactNativeArchitectures 设为仅 arm64-v8a(更小;不含 x86/x86_64,多数模拟器无法安装)。
|
||||
# - 若需兼容旧 32 位 ARM 设备,可将该属性改为 armeabi-v7a,arm64-v8a(体积会增大)。
|
||||
# - 若需用 x86 模拟器验证此 APK,需改回含 x86 的 ABI 或另建 job。
|
||||
#
|
||||
# 环境映射(按触发源自动推断):
|
||||
# main → dev (开发 + 内部测试)
|
||||
# v*.*.* → prod (正式发布 + GitHub Release 附带 APK)
|
||||
@@ -41,6 +47,8 @@ concurrency:
|
||||
|
||||
env:
|
||||
APP_NAME: app-expo
|
||||
EXPO_NO_TELEMETRY: 1
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -51,7 +59,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: ${{ startsWith(github.ref, 'refs/tags/') && '0' || '1' }}
|
||||
|
||||
@@ -67,9 +75,9 @@ jobs:
|
||||
fi >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v5
|
||||
with:
|
||||
node-version: 20
|
||||
node-version: 22.22.1
|
||||
cache: npm
|
||||
cache-dependency-path: app-expo/package-lock.json
|
||||
|
||||
@@ -116,18 +124,29 @@ jobs:
|
||||
echo "版本名: ${VERSION}, versionCode: ${VERSION_CODE}, tag: ${TAG_NAME}"
|
||||
|
||||
- name: Set up JDK
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Expo prebuild (Android)
|
||||
working-directory: app-expo
|
||||
run: npx expo prebuild --platform android --clean
|
||||
|
||||
- name: Release APK — arm64 only (real devices; smaller)
|
||||
working-directory: app-expo/android
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if grep -q '^reactNativeArchitectures=' gradle.properties; then
|
||||
sed -i 's/^reactNativeArchitectures=.*/reactNativeArchitectures=arm64-v8a/' gradle.properties
|
||||
else
|
||||
echo 'reactNativeArchitectures=arm64-v8a' >> gradle.properties
|
||||
fi
|
||||
grep -E '^reactNativeArchitectures=' gradle.properties
|
||||
|
||||
- name: Decode keystore
|
||||
working-directory: app-expo/android/app
|
||||
run: |
|
||||
@@ -166,7 +185,7 @@ jobs:
|
||||
du -h "$FINAL_PATH"
|
||||
|
||||
- name: Upload APK artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: ${{ steps.version.outputs.apk_name }}
|
||||
path: app-expo/android/${{ steps.apk.outputs.apk_path }}
|
||||
@@ -198,7 +217,7 @@ jobs:
|
||||
|
||||
- name: Create GitHub Release (prod)
|
||||
if: steps.env.outputs.env == 'prod'
|
||||
uses: softprops/action-gh-release@v2
|
||||
uses: softprops/action-gh-release@v2.5.0
|
||||
with:
|
||||
tag_name: ${{ steps.version.outputs.tag_name }}
|
||||
name: "${{ env.APP_NAME }} ${{ steps.version.outputs.tag_name }}"
|
||||
|
||||
Reference in New Issue
Block a user