diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56fc67aa..af7c94db 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,7 +63,7 @@ jobs: python .\.github\workflows\updateVersion.py -T Windows -N ${{ env.Version }} cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action delete -mask ICONGROUP,,' cmd /c '.\ResourceHacker.exe -open .\Techmino.rc -save .\Techmino.res -action compile' - cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action addoverwrite -res ".\build\Windows\icon.ico" -mask ICONGROUP,1,' + cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action addoverwrite -res ".\build\Windows\icon_snapshot.ico" -mask ICONGROUP,1,' cmd /c '.\ResourceHacker.exe -open .\love-11.3-win64\Techmino.exe -save .\love-11.3-win64\Techmino.exe -action addoverwrite -res ".\Techmino.res" -mask VERSIONINFO,1,' - name: Upload uses: actions/upload-artifact@v2 @@ -131,11 +131,14 @@ jobs: name: Techmino_${{ env.Version }}_${{ GITHUB.RUN_NUMBER }}_${{ env.CommitID }}_Linux path: Techmino.AppImage - #Android待更新 build-android: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '8' - name: Install lua run: | sudo apt-get update -y @@ -155,33 +158,53 @@ jobs: - name: Update Version run: | python3 ./.github/workflows/updateVersion.py -T Version -H ${{ env.CommitID }} - - name: Download Apktool - run: curl -OL https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.5.0.jar - - name: Unpack and Repack + - name: Clone love-android run: | - curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.apk - java -jar ./apktool_2.5.0.jar d -s -o apk ./Techmino.apk - 7z x ./apk/assets/game.love libAndroid -o. - rm -rf ./apk/assets/game.love ./Techmino.apk - 7z a -tzip ./apk/assets/game.love ./document ./libAndroid ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua - python3 ./.github/workflows/updateVersion.py -T Android -C $(lua ./.github/workflows/getVersion.lua -code) -N ${{ env.Version }} - java -jar ./apktool_2.5.0.jar b -o apk ./Techmino.apk - - uses: 26F-Studio/sign-android-release@master - name: Sign APK - id: sign_app - with: - releaseDirectory: ./Techmino.apk - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} - env: - BUILD_TOOLS_VERSION: "30.0.2" + git clone --recurse-submodules https://github.com/26F-Studio/love-android + cd ./love-android + git checkout --recurse-submodules CI + - name: Download androidSDK + run: | + wget -O commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip + - name: Unpack androidSDK + run: | + unzip ./commandlinetools.zip + - name: Install SDK NDK + run: | + yes | ./cmdline-tools/bin/sdkmanager --sdk_root=. --install "platforms;android-30" + yes | ./cmdline-tools/bin/sdkmanager --sdk_root=. --install "ndk;21.3.6528147" + export ANDROID_HOME=$(pwd) + - name: Download ColdClear + run: | + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/android_aarch64.zip + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/android_armv7.zip + - name: Unpack ColdClear + run: | + 7z x ./android_aarch64.zip -oColdClear/android_aarch64 + 7z x ./android_armv7.zip -oColdClear/android_armv7 + - name: Pack Techmino + run: | + mkdir -p ./love-android/app/src/main/assets + mkdir -p ./love-android/app/libs/arm64-v8a + mkdir -p ./love-android/app/libs/armeabi-v7a + mv ./ColdClear/android_aarch64/love-11.3-android/lib/arm64-v8a/libcold_clear.so ./love-android/app/libs/arm64-v8a + mv ./ColdClear/android_armv7/love-11.3-android/lib/armeabi-v7a/libcold_clear.so ./love-android/app/libs/armeabi-v7a + mkdir -p ./libAndroid/arm64-v8a + mkdir -p ./libAndroid/armeabi-v7a + mv ./ColdClear/android_aarch64/libs/arm64-v8a/libCCloader.so ./libAndroid/arm64-v8a + mv ./ColdClear/android_armv7/libs/armeabi-v7a/libCCloader.so ./libAndroid/armeabi-v7a + 7z a -tzip ./love-android/app/src/main/assets/game.love ./document ./media ./parts ./Zframework ./libAndroid ./conf.lua ./font.ttf ./main.lua ./version.lua + echo "${{ secrets.SIGNING_KEY }}" | base64 -d > ./love-android/app/android.keystore + python3 ./.github/workflows/updateVersion.py -T AndroidSnapshot -C $(lua ./.github/workflows/getVersion.lua -code) -N ${{ env.Version }} -S ${{ secrets.KEY_STORE_PASSWORD }} -A ${{ secrets.ALIAS }} -K ${{ secrets.KEY_PASSWORD }} + chmod 777 ./love-android/gradlew + cd ./love-android/ + ./gradlew assembleRelease + mv ./app/build/outputs/apk/release/app-release.apk ./app/build/outputs/apk/release/Techmino_Snapshot.apk - name: Upload uses: actions/upload-artifact@v2 with: name: Techmino_${{ env.Version }}_${{ GITHUB.RUN_NUMBER }}_${{ env.CommitID }}_Android - path: ${{steps.sign_app.outputs.signedReleaseFile}} + path: ./love-android/app/build/outputs/apk/release/Techmino_Snapshot.apk build-macOS: runs-on: macos-10.15 @@ -221,6 +244,8 @@ jobs: run: | python3 ./.github/workflows/updateVersion.py -T macOS -N ${{ env.Version }} mv ./Techmino.love ./Techmino.app/Contents/Resources + rm -rf ./Techmino.app/Contents/Resources/iconfile.icns + mv ./build/macOS/icon_snapshot.icns ./Techmino.app/Contents/Resources/iconfile.icns - name: Codesign executable # In secrets: # - MACOS_CERTIFICATE: the *.p12 Developer ID Certificate, encoded in base64 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f5f50bcf..1dba1aef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -191,11 +191,14 @@ jobs: name: ${{ env.Title }} files: Techmino.a${{ env.Version }}.AppImage - #Android待更新 build-android: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '8' - name: Install lua run: | sudo apt-get update -y @@ -212,39 +215,62 @@ jobs: run: | Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) echo "Title=${Title}" >> $GITHUB_ENV - - name: Download Apktool - run: curl -OL https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.5.0.jar - - name: Unpack and Repack + - name: Clone love-android run: | - curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.apk - java -jar ./apktool_2.5.0.jar d -s -o apk ./Techmino.apk - 7z x ./apk/assets/game.love libAndroid -o. - rm -rf ./apk/assets/game.love ./Techmino.apk - 7z a -tzip ./apk/assets/game.love ./document ./libAndroid ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua - python3 ./.github/workflows/updateVersion.py -T Android -C $(lua ./.github/workflows/getVersion.lua -code) -N $(lua ./.github/workflows/getVersion.lua -name) - java -jar ./apktool_2.5.0.jar b -o apk ./Techmino.a${{ env.Version }}.apk - - uses: 26F-Studio/sign-android-release@master - name: Sign APK - id: sign_app - with: - releaseDirectory: ./Techmino.a${{ env.Version }}.apk - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} - env: - BUILD_TOOLS_VERSION: "30.0.2" + git clone --recurse-submodules https://github.com/26F-Studio/love-android + cd ./love-android + git checkout --recurse-submodules CI + - name: Download androidSDK + run: | + wget -O commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip + - name: Unpack androidSDK + run: | + unzip ./commandlinetools.zip + - name: Install SDK NDK + run: | + yes | ./cmdline-tools/bin/sdkmanager --sdk_root=. --install "platforms;android-30" + yes | ./cmdline-tools/bin/sdkmanager --sdk_root=. --install "ndk;21.3.6528147" + export ANDROID_HOME=$(pwd) + - name: Download ColdClear + run: | + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/android_aarch64.zip + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/android_armv7.zip + - name: Unpack ColdClear + run: | + 7z x ./android_aarch64.zip -oColdClear/android_aarch64 + 7z x ./android_armv7.zip -oColdClear/android_armv7 + - name: Pack Techmino + run: | + mkdir -p ./love-android/app/src/main/assets + mkdir -p ./love-android/app/libs/arm64-v8a + mkdir -p ./love-android/app/libs/armeabi-v7a + mv ./ColdClear/android_aarch64/love-11.3-android/lib/arm64-v8a/libcold_clear.so ./love-android/app/libs/arm64-v8a + mv ./ColdClear/android_armv7/love-11.3-android/lib/armeabi-v7a/libcold_clear.so ./love-android/app/libs/armeabi-v7a + mkdir -p ./libAndroid/arm64-v8a + mkdir -p ./libAndroid/armeabi-v7a + mv ./ColdClear/android_aarch64/libs/arm64-v8a/libCCloader.so ./libAndroid/arm64-v8a + mv ./ColdClear/android_armv7/libs/armeabi-v7a/libCCloader.so ./libAndroid/armeabi-v7a + 7z a -tzip ./love-android/app/src/main/assets/game.love ./document ./media ./parts ./Zframework ./libAndroid ./conf.lua ./font.ttf ./main.lua ./version.lua + echo "${{ secrets.SIGNING_KEY }}" | base64 -d > ./love-android/app/android.keystore + python3 ./.github/workflows/updateVersion.py -T AndroidRelease -C $(lua ./.github/workflows/getVersion.lua -code) -N $(lua ./.github/workflows/getVersion.lua -name) -S ${{ secrets.KEY_STORE_PASSWORD }} -A ${{ secrets.ALIAS }} -K ${{ secrets.KEY_PASSWORD }} + chmod 777 ./love-android/gradlew + cd ./love-android/ + ./gradlew assembleRelease + mv ./app/build/outputs/apk/release/app-release.apk ./app/build/outputs/apk/release/Techmino.a${{ env.Version }}.apk - name: Release uses: softprops/action-gh-release@v1 with: name: ${{ env.Title }} - files: ${{steps.sign_app.outputs.signedReleaseFile}} + files: ./love-android/app/build/outputs/apk/release/Techmino.a${{ env.Version }}.apk - #Android-mini待更新 build-android-mini: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '8' - name: Install lua run: | sudo apt-get update -y @@ -261,34 +287,54 @@ jobs: run: | Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) echo "Title=${Title}" >> $GITHUB_ENV - - name: Download Apktool - run: curl -OL https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.5.0.jar - - name: Unpack and Repack + - name: Clone love-android run: | - curl -OL https://github.com/26F-Studio/Techmino/releases/download/v0.15.1/Techmino.apk - java -jar ./apktool_2.5.0.jar d -s -o apk ./Techmino.apk - 7z x ./apk/assets/game.love libAndroid -o. - rm -rf ./apk/assets/game.love ./Techmino.apk + git clone --recurse-submodules https://github.com/26F-Studio/love-android + cd ./love-android + git checkout --recurse-submodules CI + - name: Download androidSDK + run: | + wget -O commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip + - name: Unpack androidSDK + run: | + unzip ./commandlinetools.zip + - name: Install SDK NDK + run: | + yes | ./cmdline-tools/bin/sdkmanager --sdk_root=. --install "platforms;android-30" + yes | ./cmdline-tools/bin/sdkmanager --sdk_root=. --install "ndk;21.3.6528147" + export ANDROID_HOME=$(pwd) + - name: Download ColdClear + run: | + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/android_aarch64.zip + curl -OL https://github.com/26F-Studio/cold_clear_ai_love2d_wrapper/releases/download/latest/android_armv7.zip + - name: Unpack ColdClear + run: | + 7z x ./android_aarch64.zip -oColdClear/android_aarch64 + 7z x ./android_armv7.zip -oColdClear/android_armv7 + - name: Pack Techmino + run: | + mkdir -p ./love-android/app/src/main/assets + mkdir -p ./love-android/app/libs/arm64-v8a + mkdir -p ./love-android/app/libs/armeabi-v7a + mv ./ColdClear/android_aarch64/love-11.3-android/lib/arm64-v8a/libcold_clear.so ./love-android/app/libs/arm64-v8a + mv ./ColdClear/android_armv7/love-11.3-android/lib/armeabi-v7a/libcold_clear.so ./love-android/app/libs/armeabi-v7a + mkdir -p ./libAndroid/arm64-v8a + mkdir -p ./libAndroid/armeabi-v7a + mv ./ColdClear/android_aarch64/libs/arm64-v8a/libCCloader.so ./libAndroid/arm64-v8a + mv ./ColdClear/android_armv7/libs/armeabi-v7a/libCCloader.so ./libAndroid/armeabi-v7a rm -rf ./media/BGM ./media/SFX ./media/VOICE - 7z a -tzip ./apk/assets/game.love ./document ./libAndroid ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua - python3 ./.github/workflows/updateVersion.py -T Android -C $(lua ./.github/workflows/getVersion.lua -code) -N $(lua ./.github/workflows/getVersion.lua -name) - java -jar ./apktool_2.5.0.jar b -o apk ./Techmino.a${{ env.Version }}.mini.apk - - uses: 26F-Studio/sign-android-release@master - name: Sign APK - id: sign_app - with: - releaseDirectory: ./Techmino.a${{ env.Version }}.mini.apk - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} - env: - BUILD_TOOLS_VERSION: "30.0.2" + 7z a -tzip ./love-android/app/src/main/assets/game.love ./document ./media ./parts ./Zframework ./libAndroid ./conf.lua ./font.ttf ./main.lua ./version.lua + echo "${{ secrets.SIGNING_KEY }}" | base64 -d > ./love-android/app/android.keystore + python3 ./.github/workflows/updateVersion.py -T AndroidRelease -C $(lua ./.github/workflows/getVersion.lua -code) -N $(lua ./.github/workflows/getVersion.lua -name) -S ${{ secrets.KEY_STORE_PASSWORD }} -A ${{ secrets.ALIAS }} -K ${{ secrets.KEY_PASSWORD }} + chmod 777 ./love-android/gradlew + cd ./love-android/ + ./gradlew assembleRelease + mv ./app/build/outputs/apk/release/app-release.apk ./app/build/outputs/apk/release/Techmino.a${{ env.Version }}.mini.apk - name: Release uses: softprops/action-gh-release@v1 with: name: ${{ env.Title }} - files: ${{steps.sign_app.outputs.signedReleaseFile}} + files: ./love-android/app/build/outputs/apk/release/Techmino.a${{ env.Version }}.mini.apk build-macOS: runs-on: macos-10.15 @@ -368,6 +414,7 @@ jobs: - name: Get ReleaseTitle run: | Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) + echo "Title=${Title}" >> $GITHUB_ENV - name: Pack Techmino run: | 7z a -tzip ./Techmino.a${{ env.Version }}.love ./document ./media ./parts ./Zframework ./conf.lua ./font.ttf ./main.lua ./version.lua @@ -388,14 +435,13 @@ jobs: sudo apt-get install lua5.3 -y - name: Get ReleaseTitle run: | - Title=lua ./.github/workflows/getVersion.lua -updateTitle + Title=$(lua ./.github/workflows/getVersion.lua -updateTitle) echo "Title=${Title}" >> $GITHUB_ENV - name: Get ReleaseNote run: | - Note=lua ./.github/workflows/getVersion.lua -updateNote - echo "Note=${Note}" >> $GITHUB_ENV + lua ./.github/workflows/getVersion.lua -updateNote > updateNote.txt - name: Release uses: softprops/action-gh-release@v1 with: name: ${{ env.Title }} - body: ${{ env.Note }} \ No newline at end of file + body_path: ./updateNote.txt \ No newline at end of file diff --git a/.github/workflows/updateVersion.py b/.github/workflows/updateVersion.py index bc47dba1..397981dc 100644 --- a/.github/workflows/updateVersion.py +++ b/.github/workflows/updateVersion.py @@ -14,7 +14,6 @@ def updateVersion(args): #更新版本号 data = file.read() if args.Hash != False: data = data.replace('@DEV', f'@{args.Hash[0:4]}') - updateConf() else: data = data.replace('@DEV', '') file.seek(0) @@ -24,25 +23,52 @@ def updateVersion(args): #更新版本号 def updateMacOS(args): #更新macOS打包信息 import datetime - with open('./build/macOS/info.plist.template', 'r', encoding='utf-8') as template: - template = ((template.read()).replace('@versionName', args.Name)).replace('@ThisYear', str(datetime.datetime.today().year)) - with open('./Techmino.app/Contents/info.plist', 'w+', encoding='utf-8') as file: - file.write(template) + thisYear = str(datetime.datetime.today().year) + with open('./build/macOS/info.plist.template', 'r', encoding='utf-8') as file: + data = file.read() + data = data\ + .replace('@versionName', args.Name)\ + .replace('@thisYear', thisYear) + with open('./Techmino.app/Contents/info.plist', 'w+', encoding='utf-8') as file: + file.write(data) def updateWindows(args): #更新Windows打包信息 Version = (args.Name).replace('V', '') FileVersion = (f"{Version.replace('.', ',')},0") - with open('./build/Windows/Techmino.rc.template', 'r', encoding='utf8') as templace: - template = ((templace.read()).replace('@FileVersion', FileVersion)).replace('@Version', Version) - with open('Techmino.rc', 'w+', encoding='utf8') as file: - file.write(template) - -def updateAndroid(args): #更新Android打包信息 - import re - with open('./apk/apktool.yml', 'r+', encoding='utf-8') as file: + with open('./build/Windows/Techmino.rc.template', 'r', encoding='utf8') as file: data = file.read() - data = re.sub("versionCode:.+", f"versionCode: '{args.Code}'", data) - data = re.sub("versionName:.+", f"versionName: '{args.Name}'", data) + data = data\ + .replace('@FileVersion', FileVersion)\ + .replace('@Version', Version) + with open('Techmino.rc', 'w+', encoding='utf8') as file: + file.write(data) + +def updateAndroid(args, edition): #更新Android打包信息 + if edition == 'Release': + appName = 'Techmino' + packageName = 'org.love2d.MrZ.Techmino' + edition = 'release' + elif edition == 'Snapshot': + appName = 'Techmino_Snapshot' + packageName = 'org.love2d.MrZ.Techmino.Snapshot' + edition = 'snapshot' + with open('./love-android/app/src/main/AndroidManifest.xml', "r+", encoding='utf-8') as file: + data = file.read() + data = data\ + .replace('@appName', appName)\ + .replace('@edition', edition) + file.seek(0) + file.truncate() + file.write(data) + with open("./love-android/app/build.gradle", "r+", encoding='utf-8') as file: + data = file.read() + data = data\ + .replace('@packageName', packageName)\ + .replace('@versionCode', args.Code)\ + .replace('@versionName', args.Name)\ + .replace('@storePassword', args.Store)\ + .replace('@keyAlias', args.Alias)\ + .replace('@keyPassword', args.Key) file.seek(0) file.truncate() file.write(data) @@ -53,6 +79,9 @@ if __name__ == '__main__': parser.add_argument('-H', '--Hash', type=str, default = False, help = 'Github提交Hash') parser.add_argument('-C', '--Code', type=str, default = False, help = 'versionCode') parser.add_argument('-N', '--Name', type=str, default = False, help = 'versionName') + parser.add_argument('-S', '--Store', type=str, default = False, help = 'storePassword') + parser.add_argument('-A', '--Alias', type=str, default = False, help = 'keyAlias') + parser.add_argument('-K', '--Key', type=str, default = False, help = 'keyPassword') args = parser.parse_args() if args.Type == 'Conf': updateConf() @@ -62,5 +91,7 @@ if __name__ == '__main__': updateWindows(args) elif args.Type == 'macOS': updateMacOS(args) - elif args.Type == 'Android': - updateAndroid(args) \ No newline at end of file + elif args.Type == 'AndroidRelease': + updateAndroid(args, 'Release') + elif args.Type == 'AndroidSnapshot': + updateAndroid(args, 'Snapshot') \ No newline at end of file diff --git a/build/macOS/icon_snapshot.icns b/build/macOS/icon_snapshot.icns new file mode 100644 index 00000000..d6c38d38 Binary files /dev/null and b/build/macOS/icon_snapshot.icns differ diff --git a/build/macOS/info.plist.template b/build/macOS/info.plist.template index 44b90389..3a8ee729 100644 --- a/build/macOS/info.plist.template +++ b/build/macOS/info.plist.template @@ -47,7 +47,7 @@ NSHighResolutionCapable NSHumanReadableCopyright - ©2020-@ThisYear 26F Studio, GNU LGPLv3.0 + ©2020-@thisYear 26F Studio, GNU LGPLv3.0 NSPrincipalClass NSApplication NSSupportsAutomaticGraphicsSwitching