Skip to content

Update build_and_send.yml #26

Update build_and_send.yml

Update build_and_send.yml #26

# Workflow 名称
name: Build AndroLua Pro SO and Send to Telegram
on:
# 允许手动触发 Workflow
workflow_dispatch:
inputs:
so_files_list:
description: '输入要提取的SO文件名 (用 | 隔开)'
required: true
default: 'libluajava.so'
# 当有代码推送到 master 分支时自动触发
push:
branches:
- master
env:
ZIP_NAME: "compiled-so-files.zip"
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 1. Checkout Your Project
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: 2. Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17.0.14+7'
- name: 3. Setup Android SDK
uses: android-actions/setup-android@v3
with:
packages: "ndk;28.0.12433566"
- name: 4. Grant execute permission to gradlew
run: chmod +x ./gradlew
- name: 5. Build Project with Gradle
run: ./gradlew assembleDebug
- name: 6. Extract SO Files and Record Results
run: |
APK_PATH=$(find app/build/outputs/apk/debug -name "*.apk" -type f)
if [[ -z "$APK_PATH" ]]; then
echo "::error::编译后找不到 APK 文件!"
exit 1
fi
echo "Found APK at: $APK_PATH"
mkdir -p extracted_so/lib/arm64-v8a extracted_so/lib/armeabi-v7a
SO_FILES_INPUT="${{ github.event.inputs.so_files_list || 'libluajava.so' }}"
FORMATTED_LIST=$(echo "$SO_FILES_INPUT" | tr '|' ' ')
echo "REQUESTED_FILES_FORMATTED=$FORMATTED_LIST" >> $GITHUB_ENV
FAILED_FILES_LIST=""
for so_file in $FORMATTED_LIST; do
if unzip -l "$APK_PATH" | grep -qE "lib/(arm64-v8a|armeabi-v7a)/$so_file"; then
unzip -j "$APK_PATH" "lib/arm64-v8a/$so_file" -d extracted_so/lib/arm64-v8a 2>/dev/null || true
unzip -j "$APK_PATH" "lib/armeabi-v7a/$so_file" -d extracted_so/lib/armeabi-v7a 2>/dev/null || true
else
FAILED_FILES_LIST="$FAILED_FILES_LIST $so_file"
fi
done
FAILED_FILES_TRIMMED=$(echo "$FAILED_FILES_LIST" | sed 's/^ *//g' | sed 's/ *$//g')
echo "FAILED_FILES=$FAILED_FILES_TRIMMED" >> $GITHUB_ENV
- name: 7. Compress Extracted SO Files
run: |
cd extracted_so
zip -r ../${{ env.ZIP_NAME }} .
cd ..
- name: 8. Send File with Caption to Telegram
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_CHAT_ID }}
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
# 【最终修正】: 指定格式为 html 并使用 html 标签
format: html
caption: |
<b>AndroLua Pro SO 编译完成!</b>
<b>项目:</b> <code>${{ github.repository }}</code>
<b>提取文件:</b> <code>${{ env.REQUESTED_FILES_FORMATTED }}</code>
${{ env.FAILED_FILES != '' && format('<b>提取失败:</b> <code>{0}</code>', env.FAILED_FILES) || '' }}
document: ${{ env.ZIP_NAME }}