Skip to content

Commit d13a1a6

Browse files
committed
optimize build.gradle
1 parent e184dfe commit d13a1a6

File tree

1 file changed

+31
-21
lines changed

1 file changed

+31
-21
lines changed

android/build.gradle

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -68,18 +68,20 @@ android {
6868
}
6969

7070
def SOURCE_DIR = project.buildscript.sourceFile.parentFile
71-
def CACHE_DIR = SOURCE_DIR.parentFile
72-
def CVD_VERSION = new File("${project.buildscript.sourceFile.parentFile.parentFile}/binary.version").text
71+
def ROOT_DIR = SOURCE_DIR.parentFile
72+
def CACHE_DIR = new File("${ROOT_DIR}/.dart_tool/.cache")
73+
def CVD_VERSION = new File("${ROOT_DIR}/binary.version").text
7374
def CVD_LIB_URL_BASE = "https://github.com/rainyl/opencv_dart/releases/download"
74-
def ARCHS = ['x86_64', 'arm64-v8a', 'armeabi-v7a']
75+
def ABI_ALL = ['x86_64', 'arm64-v8a', 'armeabi-v7a']
76+
def ABI_ACCEPTED = ['x86_64', 'arm64-v8a', 'armeabi-v7a']
7577

7678
def OPENCV_DART_ANDROID_ENABLED_ABI = System.env.OPENCV_DART_ANDROID_ENABLED_ABI ?: null
7779
if(OPENCV_DART_ANDROID_ENABLED_ABI != null){
7880
println "[opencv_dart] detected OPENCV_DART_ANDROID_ENABLED_ABI: $OPENCV_DART_ANDROID_ENABLED_ABI"
7981
def enabledABI = OPENCV_DART_ANDROID_ENABLED_ABI.split(",")
8082
def acceptedABI = []
8183
enabledABI.each { abi ->
82-
if(ARCHS.contains(abi)){
84+
if(ABI_ALL.contains(abi)){
8385
println "[opencv_dart] add abi: ${abi}"
8486
acceptedABI.add(abi)
8587
} else {
@@ -88,40 +90,48 @@ if(OPENCV_DART_ANDROID_ENABLED_ABI != null){
8890
}
8991
println "[opencv_dart] accepted abi: $acceptedABI"
9092
if (acceptedABI){
91-
ARCHS = acceptedABI
93+
ABI_ACCEPTED = acceptedABI
9294
} else {
9395
println "[opencv_dart] invalid OPENCV_DART_ANDROID_ENABLED_ABI: $OPENCV_DART_ANDROID_ENABLED_ABI"
94-
println "[opencv_dart] will enable all supported ABI: $ARCHS"
96+
println "[opencv_dart] will enable all supported ABI: $ABI_ACCEPTED"
9597
}
9698
}
9799

98-
task downloadLibs(type: Download) {
99-
println "[opencv_dart] Downloading libraries..."
100-
def SRC_URLS = ARCHS.collect { ARCH ->
101-
"${CVD_LIB_URL_BASE}/v${CVD_VERSION}/libopencv_dart-android-${ARCH}.tar.gz"
102-
}
103-
src(SRC_URLS)
104-
dest CACHE_DIR
105-
overwrite false
106-
}
107-
108-
ARCHS.each { arch ->
100+
ABI_ALL.each { arch ->
109101
def extractTaskName = "opencv_dart_extract_libs_${arch}"
102+
def targetDir = new File("${SOURCE_DIR}/src/main/jniLibs/${arch}")
103+
if (targetDir.exists() && !ABI_ACCEPTED.contains(arch)) {
104+
println "[opencv_dart] Deleting libraries for ${arch}..."
105+
delete targetDir
106+
}
110107
task(extractTaskName, type: Copy) {
111-
def targetDir = new File("${SOURCE_DIR}/src/main/jniLibs/${arch}")
112108
onlyIf {
113-
!file("${targetDir}/libopencv_dart.so").exists()
109+
ABI_ACCEPTED.contains(arch) && !file("${targetDir}/libopencv_dart.so").exists()
110+
}
111+
doFirst {
112+
println "[opencv_dart] Extracting libraries for ${arch}..."
114113
}
115114
from tarTree(resources.gzip("${CACHE_DIR}/libopencv_dart-android-${arch}.tar.gz"))
116115
into targetDir
117116
}
118117
}
119118

119+
task downloadLibs(type: Download) {
120+
println "[opencv_dart] Downloading libraries..."
121+
def SRC_URLS = ABI_ACCEPTED.collect { ARCH ->
122+
"${CVD_LIB_URL_BASE}/v${CVD_VERSION}/libopencv_dart-android-${ARCH}.tar.gz"
123+
}
124+
src(SRC_URLS)
125+
dest CACHE_DIR
126+
overwrite false
127+
}
128+
120129
task extractLibs(dependsOn: downloadLibs) {
121130
println "[opencv_dart] Extracting libraries..."
122-
ARCHS.each { arch ->
123-
finalizedBy "opencv_dart_extract_libs_${arch}"
131+
ABI_ALL.each { arch ->
132+
dependsOn "opencv_dart_extract_libs_${arch}"
124133
}
134+
125135
doLast {
126136
println "[opencv_dart] Extract finished."
127137
}

0 commit comments

Comments
 (0)