添加 QuickJS 模块并修复编译问题 #42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |