Create README.md #32
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: true | |
| default: 'libluajava.so' | |
| 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 | |
| id: extract | |
| run: | | |
| APK_PATH=$(find app/build/outputs/apk/debug -name "*.apk" -type f) | |
| if [[ -z "$APK_PATH" ]]; then exit 1; fi | |
| 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 "formatted_list=$FORMATTED_LIST" >> $GITHUB_OUTPUT | |
| 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_OUTPUT | |
| - 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: | |
| # 从 GitHub Secrets 中获取安全凭证 | |
| 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 |