Build universal apk (#8941)
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
This commit is contained in:
		
							parent
							
								
									f899b2a962
								
							
						
					
					
						commit
						ba43424781
					
				
							
								
								
									
										150
									
								
								.github/workflows/flutter-build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										150
									
								
								.github/workflows/flutter-build.yml
									
									
									
									
										vendored
									
									
								
							@ -999,6 +999,12 @@ jobs:
 | 
			
		||||
            ;;
 | 
			
		||||
          esac
 | 
			
		||||
 | 
			
		||||
      - name: Upload Rustdesk library to Artifacts
 | 
			
		||||
        uses: actions/upload-artifact@master
 | 
			
		||||
        with:
 | 
			
		||||
          name: librustdesk.so.${{ matrix.job.target }}
 | 
			
		||||
          path: ./target/${{ matrix.job.target }}/release/liblibrustdesk.so
 | 
			
		||||
 | 
			
		||||
      - name: Build rustdesk
 | 
			
		||||
        shell: bash
 | 
			
		||||
        env:
 | 
			
		||||
@ -1088,6 +1094,150 @@ jobs:
 | 
			
		||||
          files: |
 | 
			
		||||
            signed-apk/rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.apk
 | 
			
		||||
 | 
			
		||||
  build-rustdesk-android-universal:
 | 
			
		||||
    needs: [build-rustdesk-android]
 | 
			
		||||
    name: build rustdesk android universal apk
 | 
			
		||||
    runs-on: ubuntu-20.04
 | 
			
		||||
    env:
 | 
			
		||||
      reltype: release
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Export GitHub Actions cache environment variables
 | 
			
		||||
        uses: actions/github-script@v6
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
 | 
			
		||||
            core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
 | 
			
		||||
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        run: |
 | 
			
		||||
          sudo apt-get update
 | 
			
		||||
          sudo apt-get install -y \
 | 
			
		||||
               clang \
 | 
			
		||||
               cmake \
 | 
			
		||||
               curl \
 | 
			
		||||
               gcc-multilib \
 | 
			
		||||
               git \
 | 
			
		||||
               g++ \
 | 
			
		||||
               g++-multilib \
 | 
			
		||||
               libappindicator3-dev \
 | 
			
		||||
               libasound2-dev \
 | 
			
		||||
               libc6-dev \
 | 
			
		||||
               libclang-10-dev \
 | 
			
		||||
               libgstreamer1.0-dev \
 | 
			
		||||
               libgstreamer-plugins-base1.0-dev \
 | 
			
		||||
               libgtk-3-dev \
 | 
			
		||||
               libpam0g-dev \
 | 
			
		||||
               libpulse-dev \
 | 
			
		||||
               libva-dev \
 | 
			
		||||
               libvdpau-dev \
 | 
			
		||||
               libxcb-randr0-dev \
 | 
			
		||||
               libxcb-shape0-dev \
 | 
			
		||||
               libxcb-xfixes0-dev \
 | 
			
		||||
               libxdo-dev \
 | 
			
		||||
               libxfixes-dev \
 | 
			
		||||
               llvm-10-dev \
 | 
			
		||||
               nasm \
 | 
			
		||||
               ninja-build \
 | 
			
		||||
               openjdk-11-jdk-headless \
 | 
			
		||||
               pkg-config \
 | 
			
		||||
               tree \
 | 
			
		||||
               wget
 | 
			
		||||
 | 
			
		||||
      - name: Checkout source code
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
      - name: Install flutter
 | 
			
		||||
        uses: subosito/flutter-action@v2
 | 
			
		||||
        with:
 | 
			
		||||
          channel: "stable"
 | 
			
		||||
          flutter-version: ${{ env.ANDROID_FLUTTER_VERSION }}
 | 
			
		||||
 | 
			
		||||
      - name: Restore bridge files
 | 
			
		||||
        uses: actions/download-artifact@master
 | 
			
		||||
        with:
 | 
			
		||||
          name: bridge-artifact
 | 
			
		||||
          path: ./
 | 
			
		||||
 | 
			
		||||
      - name: Download Rustdesk library from Artifacts
 | 
			
		||||
        uses: actions/download-artifact@master
 | 
			
		||||
        with:
 | 
			
		||||
          name: librustdesk.so.aarch64-linux-android
 | 
			
		||||
          path: ./flutter/android/app/src/main/jniLibs/arm64-v8a/librustdesk.so
 | 
			
		||||
 | 
			
		||||
      - name: Download Rustdesk library from Artifacts
 | 
			
		||||
        uses: actions/download-artifact@master
 | 
			
		||||
        with:
 | 
			
		||||
          name: librustdesk.so.armv7-linux-androideabi
 | 
			
		||||
          path: ./flutter/android/app/src/main/jniLibs/armeabi-v7a/librustdesk.so
 | 
			
		||||
 | 
			
		||||
      - name: Download Rustdesk library from Artifacts
 | 
			
		||||
        uses: actions/download-artifact@master
 | 
			
		||||
        with:
 | 
			
		||||
          name: librustdesk.so.x86_64-linux-android
 | 
			
		||||
          path: ./flutter/android/app/src/main/jniLibs/x86_64/librustdesk.so
 | 
			
		||||
 | 
			
		||||
      - name: fix android for flutter 3.13
 | 
			
		||||
        if: $${{ env.ANDROID_FLUTTER_VERSION == '3.13.9' }}
 | 
			
		||||
        run: |
 | 
			
		||||
          sed -i 's/uni_links_desktop/#uni_links_desktop/g' flutter/pubspec.yaml
 | 
			
		||||
          cd flutter/lib
 | 
			
		||||
          find . | grep dart | xargs sed -i 's/textScaler: TextScaler.linear(\(.*\)),/textScaleFactor: \1,/g'
 | 
			
		||||
 | 
			
		||||
      - name: Build rustdesk
 | 
			
		||||
        shell: bash
 | 
			
		||||
        env:
 | 
			
		||||
          JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64
 | 
			
		||||
        run: |
 | 
			
		||||
          export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH
 | 
			
		||||
          # temporary use debug sign config
 | 
			
		||||
          sed -i "s/signingConfigs.release/signingConfigs.debug/g" ./flutter/android/app/build.gradle
 | 
			
		||||
          cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so ./flutter/android/app/src/main/jniLibs/arm64-v8a/
 | 
			
		||||
          cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so ./flutter/android/app/src/main/jniLibs/armeabi-v7a/
 | 
			
		||||
          cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so ./flutter/android/app/src/main/jniLibs/x86_64/
 | 
			
		||||
          # build flutter
 | 
			
		||||
          pushd flutter
 | 
			
		||||
          flutter build apk "--${{ env.reltype }}" --target-platform android-arm64,android-arm,android-x64
 | 
			
		||||
          mkdir -p signed-apk
 | 
			
		||||
          mv build/app/outputs/flutter-apk/app-${{ matrix.job.reltype }}.apk ../signed-apk/rustdesk-${{ env.VERSION }}-universal.apk
 | 
			
		||||
 | 
			
		||||
      - uses: r0adkll/sign-android-release@v1
 | 
			
		||||
        name: Sign app APK
 | 
			
		||||
        if: env.ANDROID_SIGNING_KEY != null
 | 
			
		||||
        id: sign-rustdesk
 | 
			
		||||
        with:
 | 
			
		||||
          releaseDirectory: ./signed-apk
 | 
			
		||||
          signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }}
 | 
			
		||||
          alias: ${{ secrets.ANDROID_ALIAS }}
 | 
			
		||||
          keyStorePassword: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }}
 | 
			
		||||
          keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
 | 
			
		||||
        env:
 | 
			
		||||
          # override default build-tools version (29.0.3) -- optional
 | 
			
		||||
          BUILD_TOOLS_VERSION: "30.0.2"
 | 
			
		||||
 | 
			
		||||
      - name: Upload Artifacts
 | 
			
		||||
        if: env.ANDROID_SIGNING_KEY != null && env.UPLOAD_ARTIFACT == 'true'
 | 
			
		||||
        uses: actions/upload-artifact@master
 | 
			
		||||
        with:
 | 
			
		||||
          name: rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.apk
 | 
			
		||||
          path: ${{steps.sign-rustdesk.outputs.signedReleaseFile}}
 | 
			
		||||
 | 
			
		||||
      - name: Publish signed apk package
 | 
			
		||||
        if: env.ANDROID_SIGNING_KEY != null && env.UPLOAD_ARTIFACT == 'true'
 | 
			
		||||
        uses: softprops/action-gh-release@v1
 | 
			
		||||
        with:
 | 
			
		||||
          prerelease: true
 | 
			
		||||
          tag_name: ${{ env.TAG_NAME }}
 | 
			
		||||
          files: |
 | 
			
		||||
            ${{steps.sign-rustdesk.outputs.signedReleaseFile}}
 | 
			
		||||
 | 
			
		||||
      - name: Publish unsigned apk package
 | 
			
		||||
        if: env.ANDROID_SIGNING_KEY == null && env.UPLOAD_ARTIFACT == 'true'
 | 
			
		||||
        uses: softprops/action-gh-release@v1
 | 
			
		||||
        with:
 | 
			
		||||
          prerelease: true
 | 
			
		||||
          tag_name: ${{ env.TAG_NAME }}
 | 
			
		||||
          files: |
 | 
			
		||||
            signed-apk/rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}.apk
 | 
			
		||||
 | 
			
		||||
  build-rustdesk-linux:
 | 
			
		||||
    needs: [generate-bridge-linux]
 | 
			
		||||
    name: build rustdesk linux ${{ matrix.job.target }}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user