我是一个 gradle 白痴,但即使在阅读了 90 分钟的 gradle 文档和堆栈之后,我仍然无法让它工作。
我有一个构建调试或发布 AAR 文件的 gradle 文件,我只需要将最终构建复制到目标目录。
这是我的 build.gradle
gradle.startParameter.showStacktrace = org.gradle.api.logging.configuration.ShowStacktrace.ALWAYS
buildscript {
repositories {
maven { url "https://maven.google.com" }
maven { url "https://jitpack.io" }
jcenter()
google()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.0"
classpath 'com.google.gms:google-services:4.3.4'
}
}
allprojects {
repositories {
maven { url "https://jitpack.io" }
google()
jcenter()
}
tasks.withType(JavaCompile) {
//options.compilerArgs << "-Xlint:deprecation"
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
ndk {
moduleName "foo"
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
setProperty("archivesBaseName", "foo");
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk {
//abiFilters 'armeabi-v7a', 'arm64-v8a'
abiFilters 'arm64-v8a'
}
}
debug {
jniDebuggable true
ndk {
//abiFilters 'armeabi-v7a', 'arm64-v8a'
abiFilters 'arm64-v8a'
}
}
}
externalNativeBuild {
ndkBuild {
path 'jni/Android.mk'
}
}
}
dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
}
// make the pre[Release|Debug]Build tasks depend on zipGui task
tasks.whenTaskAdded { Task theTask ->
//
// Do something for each task as its added. For example:
// print theTask.name
//
}
afterEvaluate
{
//
// Do something after all the tasks have been added
//
// Get the start parameter. We use this to decide if its a debug/release build
String taskReqStr = gradle.getStartParameter().getTaskRequests().toString();
if(taskReqStr.contains("assembleDebug"))
{
// do debug things here
println ""
println ""
println "BUILDING FOR **DEBUG**"
println ""
tasks.preDebugBuild.dependsOn doPackCert
tasks.doLast copyAAR
}
else
{
// do release things here
println ""
println ""
println "> Build :BUILDING FOR **RELEASE**"
println ""
tasks.preReleaseBuild.dependsOn doPackCert
}
}
task doPackCert(type: Copy) {
from("$projectDir/../../../../install")
into("$projectDir/res/raw/")
include 'ca.pem'
doFirst {
println "==================== copying CA cert into assets"
}
}
task copyAAR {
copy {
from 'build/outputs/aar'
into '../../../lib/'
include '*.aar'
//rename { String fileName ->
// fileName.replace("foo-debug.aar", "foo.aar")
//}
//rename { String fileName ->
// fileName.replace("foo-release.aar", "foo.aar")
//}
}
}
build.finalizedBy(copyAAR)
Run Code Online (Sandbox Code Playgroud)
构建.gradle
apply plugin: 'com.android.library'
android {
defaultConfig { ... }
buildTypes { release { ... } debug { ... } }
externalNativeBuild { ... }
}
dependencies { ... }
task copyAARDebug(type: Copy) {
// build/outputs/aar
from ( [buildDir.absolutePath, 'outputs', 'aar'].join(File.separator) )
// mylibrary-debug.aar
include ( "${project.name}-debug.aar" )
// <root_project_dir>/destination_dir/debug
into ( [rootDir.absolutePath, 'destination_dir', 'debug'].join(File.separator) )
// <root_project_dir>/destination_dir/debug/renamed.aar
rename ("${project.name}-debug.aar", 'renamed.aar')
}
task copyAARRelease(type: Copy) {
// build/outputs/aar
from ( [buildDir.absolutePath, 'outputs', 'aar'].join(File.separator) )
// mylibrary-release.aar
include ( "${project.name}-release.aar" )
// <root_project_dir>/destination_dir/release
into ( [rootDir.absolutePath, 'destination_dir', 'release'].join(File.separator) )
// <root_project_dir>/destination_dir/renamed/renamed.aar
rename ("${project.name}-release.aar", 'renamed.aar')
}
afterEvaluate {
assembleDebug.finalizedBy('copyAARDebug')
assembleRelease.finalizedBy('copyAARRelease')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1193 次 |
| 最近记录: |