gradle
android studio初始化相关文件。
手动添加国内镜像。
再用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" }