重新设置java21的环境,临时设置
bash
$env:JAVA_HOME = "D:\Android Studio\jbr"
查看当前环境变量 JAVA_HOME
的值
bash
echo $env:JAVA_HOME
构建ARR文件
bash
./gradlew :private-lib:assembleRelease
目录是这样的:
bash
MyApp/
├── app/ # 主应用模块(默认生成)
├── private-lib/ # 你的库模块(文件夹名)
│ ├── src/
│ ├── build.gradle # 模块配置文件
│ └── ...
├── settings.gradle # 项目设置文件
└── gradlew # Gradle 脚本
这里的 private-lib
就是一个模块文件夹 ,它包含独立的代码和资源,专门用于开发库文件(如 .aar
)。
构建好了之后会在private-lib\build\outputs\aar\private-lib-release.aar生成.aar
然后在app创建一个libs文件夹
把 private-lib-release.aar放入libs文件夹
private-lib文件夹里面的build.gradle.kts
配置文件
Kotlin
plugins {
// 应用 Android 库插件,用于构建 AAR 库文件
id("com.android.library")
}
android {
// 设置库的命名空间,类似于 Java 包名,用于避免命名冲突
namespace = "com.example.privatelib"
// 指定编译使用的 Android SDK 版本
compileSdk = 34
defaultConfig {
// 支持的最低 Android SDK 版本
minSdk = 24
// 目标 SDK 版本,建议与 compileSdk 保持一致
targetSdk = 34
// 指定测试运行器,用于 Android 单元测试
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
// 指定供依赖本库的应用使用的 ProGuard 规则文件
consumerProguardFiles("consumer-rules.pro")
}
buildTypes {
release {
// 启用代码混淆和优化(移除未使用代码)
isMinifyEnabled = true
// 指定 ProGuard 规则文件:
// 1. Android 官方默认优化规则
// 2. 项目自定义的混淆规则文件
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
// 设置 Java 源代码兼容性级别
sourceCompatibility = JavaVersion.VERSION_1_8
// 设置 Java 字节码兼容性级别
targetCompatibility = JavaVersion.VERSION_1_8
}
}
然后主程序引用aar
项目结构
Kotlin
project-root/
├── app/
│ ├── libs/
│ │ └── mylibrary-release.aar
│ └── build.gradle.kts
└── settings.gradle.kts
配置 app/build.gradle.kts
Kotlin
plugins {
id("com.android.application")
kotlin("android")
}
android {
namespace = "com.example.myapp"
compileSdk = 34
defaultConfig {
applicationId = "com.example.myapp"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
}
// 其他配置...
}
dependencies {
// 引用本地libs目录下的AAR文件
implementation(files("libs/mylibrary-release.aar"))
// 其他依赖...
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.8.22")
}
对于settings.gradle.kts
Kotlin
pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "aartest"
include(":app")
include(":private-lib")
不能删除 include(":private-lib")!这行代码非常重要:
include(":private-lib") 的作用:
- 告诉Gradle项目结构 - 让Gradle知道这个项目包含一个名为 private-lib 的子模块
- 注册模块 - 使 private-lib 文件夹成为一个可构建的Gradle模块
- 启用模块依赖 - 让其他模块可以通过 project(":private-lib") 引用它
如果删除会发生什么:
bash
❌ 删除 include(":private-lib")
↓
app/build.gradle.kts 中的 implementation(project(":private-lib")) 会失败
↓
错误: "Project ':private-lib' not found"
引用private-lib文件夹
bash
implementation(project(":private-lib"))
引用private-lib-release.aar
bash
implementation(files("libs/private-lib-release.aar"))
但是引用private-lib-release.aar后可以把settings.gradle.kts的include(":private-lib")删掉