Skip to content

添加 QuickJS 模块并修复编译问题 #42

添加 QuickJS 模块并修复编译问题

添加 QuickJS 模块并修复编译问题 #42

name: Build AndroLua Pro SO and Send to Telegram (Pyrogram)
on:
workflow_dispatch:
inputs:
so_files_list:
description: '输入要提取的SO文件名(用|隔开),留空则提取全部'
required: false
default: ''
push:
branches:
- master
env:
ZIP_NAME: "Extract_SO.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
id: extract
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/arm64-v8a extracted_so/armeabi-v7a
SO_FILES_INPUT="${{ github.event.inputs.so_files_list || '' }}"
if [[ -z "$SO_FILES_INPUT" ]]; then
echo "输入为空,提取所有 SO 文件..."
unzip -j -o "$APK_PATH" "lib/arm64-v8a/*.so" -d extracted_so/arm64-v8a
unzip -j -o "$APK_PATH" "lib/armeabi-v7a/*.so" -d extracted_so/armeabi-v7a
EXTRACTED_FILES=$(find extracted_so -name "*.so" -exec basename {} \; | sort -u | tr '\n' ' ')
FORMATTED_LIST=$(echo "$EXTRACTED_FILES" | sed 's/ *$//g')
echo "formatted_list=全部 (${FORMATTED_LIST})" >> $GITHUB_OUTPUT
echo "failed_files=" >> $GITHUB_OUTPUT
else
echo "按需提取指定文件..."
FORMATTED_LIST=$(echo "$SO_FILES_INPUT" | tr '|' ' ')
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/arm64-v8a 2>/dev/null || true
unzip -j "$APK_PATH" "lib/armeabi-v7a/$so_file" -d extracted_so/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 "formatted_list=$FORMATTED_LIST" >> $GITHUB_OUTPUT
echo "failed_files=$FAILED_FILES_TRIMMED" >> $GITHUB_OUTPUT
fi
- name: 7. Compress Extracted SO Files
id: compress
run: |
cd extracted_so
if [ -z "$(ls -A .)" ]; then
echo "没有提取到任何文件,跳过发送。"
echo "should_send=false" >> $GITHUB_OUTPUT
else
zip -r ../${{ env.ZIP_NAME }} .
cd ..
echo "should_send=true" >> $GITHUB_OUTPUT
fi
- name: 8. Set up Python environment
if: steps.compress.outputs.should_send == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: 9. Install Pyrogram
if: steps.compress.outputs.should_send == 'true'
run: pip install pyrogram tgcrypto
- name: 10. Send File via Pyrogram
if: steps.compress.outputs.should_send == 'true'
env:
PYROGRAM_API_ID: ${{ secrets.PYROGRAM_API_ID }}
PYROGRAM_API_HASH: ${{ secrets.PYROGRAM_API_HASH }}
PYROGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
FILE_PATH: ${{ env.ZIP_NAME }}
REPO_NAME: ${{ github.repository }}
REQUESTED_FILES: ${{ steps.extract.outputs.formatted_list }}
FAILED_FILES: ${{ steps.extract.outputs.failed_files }}
run: python send_telegram_message.py