diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000..b587999 --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,65 @@ +name: Release APK + +on: push + +permissions: + id-token: write + attestations: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5.0.1 + with: + go-version: '1.22' + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Set up Android SDK + uses: android-actions/setup-android@v3 + + - name: Set up NDK + uses: nttld/setup-ndk@v1 + with: + ndk-version: r26d + link-to-sdk: true + + - name: Compile Go libs + run: | + pushd 'app/src' + ./make.sh + popd + + - name: Build with Gradle + run: ./gradlew --no-daemon assembleRelease + + - name: Sign APK + id: sign_app + uses: r0adkll/sign-android-release@v1 + with: + releaseDirectory: app/build/outputs/apk/release + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + alias: ${{ secrets.ALIAS }} + env: + BUILD_TOOLS_VERSION: "34.0.0" + + - name: Attest APK + uses: actions/attest-build-provenance@v1 + with: + subject-path: ${{steps.sign_app.outputs.signedReleaseFile}} + + - name: Upload release files + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: ${{steps.sign_app.outputs.signedReleaseFile}} + diff --git a/README.md b/README.md index 6f0cba7..a62e4a8 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ Shadowsocks plugin Cloak for Android ## Requirements -- Go 1.15 -- Android NDK 21.3.6528147 -- Android SDK 29 -- Gradle 6.1.1 +- Go 1.22 +- Android NDK 26.3.11579264 +- Android SDK 34 +- Gradle 7.4 ## Build Instructions diff --git a/app/build.gradle b/app/build.gradle index d537835..248183f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,13 @@ apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 29 + compileSdk 34 + buildToolsVersion "34.0.0" ndkVersion "21.3.6528147" defaultConfig { applicationId "com.github.shadowsocks.plugin.ck_client" minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 34 versionCode 22 versionName '2.9.0' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -22,6 +23,7 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + namespace 'com.github.shadowsocks.plugin.ck_client' applicationVariants.all { variant -> variant.outputs.all { outputFileName = "ck-client-${defaultConfig.versionName}.apk" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5bdbf3b..3d68a88 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> - + diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index 1dd4aa6..0000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,71 +0,0 @@ -# Android -# Build your Android project with Gradle. -# Add steps that test, sign, and distribute the APK, save build artifacts, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/android - -trigger: - tags: - include: - - refs/tags/v* - branches: - exclude: - - master - -pool: - vmImage: 'ubuntu-latest' - -variables: - NDKVERSION: 'r25c' - ANDROID_NDK_HOME: '$(Agent.BuildDirectory)/android-ndk-$(NDKVERSION)' # NDK path - -steps: -- task: GoTool@0 - inputs: - version: '1.20' - displayName: 'Set up Go tools' - -- script: | - wget "https://dl.google.com/android/repository/android-ndk-$(NDKVERSION)-linux.zip" --output-document "$(Agent.BuildDirectory)/ndk-$(NDKVERSION).zip" - unzip "$(Agent.BuildDirectory)/ndk-$(NDKVERSION).zip" -d '$(Agent.BuildDirectory)' - displayName: 'Download NDK' - -- script: | - pushd '$(Build.SourcesDirectory)/app/src' - ./make.sh - popd - displayName: 'Cross compiling ck-client binaries' - continueOnError: false - -- task: Gradle@2 - inputs: - workingDirectory: '' - gradleWrapperFile: 'gradlew' - gradleOptions: '-Xmx3072m' - publishJUnitResults: false - testResultsFiles: '**/TEST-*.xml' - tasks: 'assembleRelease' - -- task: AndroidSigning@2 - inputs: - apkFiles: '**/*.apk' - jarsign: true - jarsignerKeystoreFile: 'mainAPK.jks' - jarsignerKeystorePassword: '$(jarsignerKeystorePassword)' - jarsignerKeystoreAlias: 'main' - jarsignerKeyPassword: '$(jarsignerKeyPassword)' - zipalign: true - -- task: CopyFiles@2 - inputs: - contents: '**/*.apk' - targetFolder: '$(build.artifactStagingDirectory)' - -- task: GitHubRelease@0 - inputs: - gitHubConnection: github.com_cbeuw - repositoryName: '$(Build.Repository.Name)' - assets: '$(build.artifactStagingDirectory)/app/build/outputs/apk/release/*.apk' - action: 'create' # Options: create, edit, delete - target: '$(Build.SourceVersion)' # Required when action == Create || Action == Edit - tagSource: 'auto' # Required when action == Create# Options: auto, manual - addChangeLog: false # Optional diff --git a/build.gradle b/build.gradle index 73408b6..a0ff85d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.72' + ext.kotlin_version = '1.6.21' repositories { google() jcenter() maven { url "https://jitpack.io" } } dependencies { - classpath 'com.android.tools.build:gradle:4.1.1' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 91f284b..83693b1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Apr 17 15:34:59 BST 2021 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip +#Sat Jun 29 18:03:17 BST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists