gradle

  1. android studio初始化相关文件。

  2. 手动添加国内镜像。

  3. 再用cursor辅助开发。

gradle.properties

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=8080

gradle-wrapper.properties

仅当前 project,在gradle/wrapper/gradle-wrapper.properties 文件中修改

distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.13-bin.zip

全局project,新建文件 ~/.gradle/init.d/gradle-mirror.gradle ,内容例如

allprojects {
    gradle.beforeSettings { settings ->
        def wrapper = settings.gradle.startParameter.gradleUserHomeDir.toPath()
        def wrapperProps = settings.settingsDir.toPath().resolve("gradle/wrapper/gradle-wrapper.properties").toFile()
        if (wrapperProps.exists()) {
            def text = wrapperProps.text
            def aliyunUrl = "https://mirrors.cloud.tencent.com/gradle/"
            if (text.contains("https://services.gradle.org/distributions/")) {
                text = text.replace("https://services.gradle.org/distributions/", aliyunUrl)
                wrapperProps.text = text
                println "[init.d] use Aliyun mirror for: ${settings.rootProject.name}"
            }
        }
    }
}

settings.gradle

pluginManagement {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/repository/public' }
        google()
        mavenCentral()
    }
}
rootProject.name = "myappname"
include(":app")

build.gradle

plugins {
    alias(libs.plugins.android.application) apply false
}

app/build.gradle

plugins {
    alias(libs.plugins.android.application)
}

android {
    namespace = 'com.example.myappcert'
    compileSdk 36

    defaultConfig {
        applicationId "com.example.myappcert"
        minSdk 28
        targetSdk 36
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
}

dependencies {
    implementation libs.appcompat
    implementation libs.material
    implementation libs.okhttp
    implementation libs.jjwt.api
    runtimeOnly libs.jjwt.impl
    runtimeOnly libs.jjwt.jackson
    testImplementation libs.junit
    androidTestImplementation libs.ext.junit
    androidTestImplementation libs.espresso.core
}

libs.versions.toml

[versions]
agp = "8.13.0"
junit = "4.13.2"
junitVersion = "1.1.5"
espressoCore = "3.5.1"
appcompat = "1.6.1"
material = "1.10.0"
okhttp = "4.12.0"
jjwt = "0.12.3"

[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" }
jjwt-api = { group = "io.jsonwebtoken", name = "jjwt-api", version.ref = "jjwt" }
jjwt-impl = { group = "io.jsonwebtoken", name = "jjwt-impl", version.ref = "jjwt" }
jjwt-jackson = { group = "io.jsonwebtoken", name = "jjwt-jackson", version.ref = "jjwt" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }