├── join.PNG ├── .github └── workflows │ ├── TVBoxOSC.jks │ └── main.yml └── README.md /join.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bestpvp/tvbox_builder/HEAD/join.PNG -------------------------------------------------------------------------------- /.github/workflows/TVBoxOSC.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bestpvp/tvbox_builder/HEAD/.github/workflows/TVBoxOSC.jks -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tvbox_builder 2 | [![Download](https://img.shields.io/github/v/release/bestpvp/tvbox_builder?color=orange&logoColor=orange&label=Download&logo=DocuSign)](https://github.com/bestpvp/tvbox_builder/releases/latest) 3 | [![Total](https://shields.io/github/downloads/bestpvp/tvbox_builder/total?logo=Bookmeter&label=Counts&logoColor=yellow&color=yellow)](https://github.com/bestpvp/tvbox_builder/releases) 4 | 5 | ## 关注公众号 6 | 7 | 8 | ## Credits 9 | This repo relies on the following third-party projects: 10 | - [卧龙](https://github.com/bestpvp/box_wolong) (Updated: 6aa9e8fd5129321f7042e365d32924f70274cd2b) 11 | - [庞统](https://github.com/bestpvp/box_pangtong) (Updated: 4f5075606ca9b7c60fe308807bb601450c4fb1d0) 12 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | include: 13 | - userName: bestpvp 14 | repoName: box_pangtong 15 | branchName: main 16 | - userName: bestpvp 17 | repoName: box_wolong 18 | branchName: main 19 | steps: 20 | - name: Checkout 21 | uses: actions/checkout@v3 22 | with: 23 | fetch-depth: 0 24 | - name: Check New Commit 25 | run: | 26 | upStream=https://github.com/${{ matrix.userName }}/${{ matrix.repoName }} 27 | echo "upStream=$upStream" >> $GITHUB_ENV 28 | commit=$(curl -sL $upStream/commits/${{ matrix.branchName }} |grep -o "/${{ matrix.userName }}/${{ matrix.repoName }}/commit/[a-z0-9]\+" |head -1 | cut -d\/ -f5) 29 | if ! grep -q "$commit" README.md; then 30 | echo "commit=$commit" >> $GITHUB_ENV 31 | echo "commitS=${commit:0:7}" >> $GITHUB_ENV 32 | fi 33 | - name: Check Commit status 34 | if: ${{ env.commit }} 35 | run: | 36 | # 通过使用 matrix 变量引用对应的值 37 | echo "userName: ${{ matrix.userName }}" 38 | echo "repoName: ${{ matrix.repoName }}" 39 | echo "branchName: ${{ matrix.branchName }}" 40 | - name: Checkout Source Code 41 | if: ${{ env.commit }} 42 | run: | 43 | git clone ${{ env.upStream }} TVBoxOSC 44 | cd TVBoxOSC 45 | git checkout ${{ env.commit }} 46 | echo "tag=$(git log --date=format:'%Y%m%d-%H%M' --pretty=format:%cd ${{ env.commitS }} -1)" >> $GITHUB_ENV 47 | - name: Extra Modify 48 | if: ${{ env.commit }} 49 | working-directory: TVBoxOSC 50 | run: | 51 | echo '修改VersionName' 52 | sed -i "/versionName/s#[0-9a-zA-Z_\.\'\"-]\+\$#\'${{ env.tag }}\'#" app/build.gradle 53 | sed -i "/android:text=/s#=\"#=\"${{ env.tag }}\\\\n\\\\n#" app/src/main/res/layout/dialog_about.xml 54 | - name: Compress Source Code 55 | if: ${{ env.commit }} 56 | working-directory: TVBoxOSC 57 | run: | 58 | tar -cJf source-${{ env.commitS }}.tar.xz --exclude=.git --exclude=.github * 59 | - name: Release Apk Sign 60 | if: ${{ env.commit }} 61 | working-directory: TVBoxOSC 62 | run: | 63 | signingConfigs='ICAgIHNpZ25pbmdDb25maWdzIHtcCiAgICAgICAgaWYgKHByb2plY3QuaGFzUHJvcGVydHkoIlJFTEVBU0VfU1RPUkVfRklMRSIpKSB7XAogICAgICAgICAgICBteUNvbmZpZyB7XAogICAgICAgICAgICAgICAgc3RvcmVGaWxlIGZpbGUoUkVMRUFTRV9TVE9SRV9GSUxFKVwKICAgICAgICAgICAgICAgIHN0b3JlUGFzc3dvcmQgUkVMRUFTRV9TVE9SRV9QQVNTV09SRFwKICAgICAgICAgICAgICAgIGtleUFsaWFzIFJFTEVBU0VfS0VZX0FMSUFTXAogICAgICAgICAgICAgICAga2V5UGFzc3dvcmQgUkVMRUFTRV9LRVlfUEFTU1dPUkRcCiAgICAgICAgICAgICAgICB2MVNpZ25pbmdFbmFibGVkIHRydWVcCiAgICAgICAgICAgICAgICB2MlNpZ25pbmdFbmFibGVkIHRydWVcCiAgICAgICAgICAgICAgICBlbmFibGVWM1NpZ25pbmcgPSB0cnVlXAogICAgICAgICAgICAgICAgZW5hYmxlVjRTaWduaW5nID0gdHJ1ZVwKICAgICAgICAgICAgfVwKICAgICAgICB9XAogICAgfVwKXA==' 64 | signingConfig='ICAgICAgICAgICAgaWYgKHByb2plY3QuaGFzUHJvcGVydHkoIlJFTEVBU0VfU1RPUkVfRklMRSIpKSB7XAogICAgICAgICAgICAgICAgc2lnbmluZ0NvbmZpZyBzaWduaW5nQ29uZmlncy5teUNvbmZpZ1wKICAgICAgICAgICAgfVwK' 65 | signingConfigs="$(echo "$signingConfigs" |base64 -d )" 66 | signingConfig="$(echo "$signingConfig" |base64 -d )" 67 | sed -i -e "/defaultConfig {/i\\$signingConfigs " -e "/debug {/a\\$signingConfig " -e "/release {/a\\$signingConfig " app/build.gradle 68 | cp -f ${{ github.workspace }}/.github/workflows/TVBoxOSC.jks app/TVBoxOSC.jks 69 | sed -i '$a\RELEASE_STORE_FILE=./TVBoxOSC.jks' ./gradle.properties 70 | sed -i '$a\RELEASE_KEY_ALIAS=TVBoxOSC' ./gradle.properties 71 | sed -i '$a\RELEASE_STORE_PASSWORD=TVBoxOSC' ./gradle.properties 72 | sed -i '$a\RELEASE_KEY_PASSWORD=TVBoxOSC' ./gradle.properties 73 | - name: Setup Gradle 74 | if: ${{ env.commit }} 75 | uses: gradle/gradle-build-action@v2 76 | - name: Build With Gradle 77 | if: ${{ env.commit }} 78 | working-directory: TVBoxOSC 79 | run: | 80 | chmod +x gradlew 81 | ./gradlew assemblerelease --build-cache --parallel --daemon --warning-mode all 82 | - name: Run ProGuard 83 | if: ${{ env.commit }} 84 | working-directory: TVBoxOSC 85 | run: | 86 | ./gradlew minifyRelease 87 | - name: Prepare App 88 | if: ${{ env.commit }} 89 | working-directory: TVBoxOSC 90 | run: | 91 | rm -rf apk/ 92 | mkdir -p apk/ 93 | for file in `find ~ -name "*release*.apk" -print`; do 94 | mv "$file" apk/tm_${{ matrix.repoName }}_${{ env.tag }}.apk 95 | done 96 | - name: Release Note 97 | if: ${{ env.commit }} 98 | working-directory: TVBoxOSC 99 | run: | 100 | sed -i "/${{ matrix.userName }}\/${{ matrix.repoName }}/s#Updated: [a-zA-Z0-9]*#Updated: ${{ env.commit }}#" README.md 101 | lastCommit=$(grep "${{ matrix.userName }}\/${{ matrix.repoName }}" ${{ github.workspace }}/README.md |grep -o '[a-z0-9]\{40\}') 102 | export LESSCHARSET=utf-8 103 | echo -e "Credit: [${{ matrix.userName }}](${{ env.upStream }})\nCommit: ${{ env.commit }}\nChangelog:" > apk/${{ matrix.userName }}-Release.log 104 | if [ "${{ env.commit }}" == "${lastCommit}" ]; then 105 | git log --pretty=format:%B ${{ env.commitS }} -1 |sed -e "s# \{2,\}#\n#g" -e "/^Merge \(pull\|branch\|remote\)/d" -e '/^$/d' |cat -n |sort -k2,2 -k1,1n |uniq -f1 |sort -k1,1n |cut -f2- >> apk/${{ matrix.userName }}-Release.log 106 | else 107 | git log --pretty=format:%B ${{ env.commitS }}...${lastCommit:0:7} |sed -e "s# \{2,\}#\n#g" -e "/^Merge \(pull\|branch\|remote\)/d" -e '/^$/d' |cat -n |sort -k2,2 -k1,1n |uniq -f1 |sort -k1,1n |cut -f2- >> apk/${{ matrix.userName }}-Release.log 108 | fi 109 | - name: Upload App To Artifact 110 | uses: actions/upload-artifact@v3 111 | if: ${{ env.commit }} 112 | with: 113 | name: ${{ matrix.userName }}-${{ matrix.repoName }}-${{ env.tag }} 114 | path: | 115 | TVBoxOSC/apk/* 116 | - name: Release and Upload Assets 117 | uses: ncipollo/release-action@v1 118 | if: ${{ env.commit }} 119 | with: 120 | name: ${{ env.tag }} 121 | tag: ${{ env.tag }} 122 | bodyFile: TVBoxOSC/apk/${{ matrix.userName }}-Release.log 123 | allowUpdates: true 124 | removeArtifacts: true 125 | artifacts: | 126 | TVBoxOSC/apk/*.apk 127 | TVBoxOSC/source-${{ env.commitS }}.* 128 | - name: Commit 129 | if: ${{ env.commit }} 130 | run: | 131 | rm -rf TVBoxOSC 132 | sed -i '/url =/d' ./.git/config 133 | git config --local user.name "github-actions[bot]" 134 | git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" 135 | git remote set-url --add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}" 136 | git pull --rebase 137 | sed -i "/${{ matrix.userName }}\/${{ matrix.repoName }}/s#Updated: [a-zA-Z0-9]*#Updated: ${{ env.commit }}#" README.md 138 | git add --all 139 | git commit -m "${{ env.commit }}" 140 | - name: Push to master 141 | uses: ad-m/github-push-action@master 142 | if: ${{ env.commit }} 143 | with: 144 | github_token: ${{ secrets.GITHUB_TOKEN }} 145 | --------------------------------------------------------------------------------