@@ -68,18 +68,20 @@ android {
68
68
}
69
69
70
70
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
73
74
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' ]
75
77
76
78
def OPENCV_DART_ANDROID_ENABLED_ABI = System . env. OPENCV_DART_ANDROID_ENABLED_ABI ?: null
77
79
if (OPENCV_DART_ANDROID_ENABLED_ABI != null ){
78
80
println " [opencv_dart] detected OPENCV_DART_ANDROID_ENABLED_ABI: $OPENCV_DART_ANDROID_ENABLED_ABI "
79
81
def enabledABI = OPENCV_DART_ANDROID_ENABLED_ABI . split(" ," )
80
82
def acceptedABI = []
81
83
enabledABI. each { abi ->
82
- if (ARCHS . contains(abi)){
84
+ if (ABI_ALL . contains(abi)){
83
85
println " [opencv_dart] add abi: ${ abi} "
84
86
acceptedABI. add(abi)
85
87
} else {
@@ -88,40 +90,48 @@ if(OPENCV_DART_ANDROID_ENABLED_ABI != null){
88
90
}
89
91
println " [opencv_dart] accepted abi: $acceptedABI "
90
92
if (acceptedABI){
91
- ARCHS = acceptedABI
93
+ ABI_ACCEPTED = acceptedABI
92
94
} else {
93
95
println " [opencv_dart] invalid OPENCV_DART_ANDROID_ENABLED_ABI: $OPENCV_DART_ANDROID_ENABLED_ABI "
94
- println " [opencv_dart] will enable all supported ABI: $A RCHS "
96
+ println " [opencv_dart] will enable all supported ABI: $A BI_ACCEPTED "
95
97
}
96
98
}
97
99
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 ->
109
101
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
+ }
110
107
task(extractTaskName, type : Copy ) {
111
- def targetDir = new File (" ${ SOURCE_DIR} /src/main/jniLibs/${ arch} " )
112
108
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} ..."
114
113
}
115
114
from tarTree(resources. gzip(" ${ CACHE_DIR} /libopencv_dart-android-${ arch} .tar.gz" ))
116
115
into targetDir
117
116
}
118
117
}
119
118
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
+
120
129
task extractLibs (dependsOn : downloadLibs) {
121
130
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} "
124
133
}
134
+
125
135
doLast {
126
136
println " [opencv_dart] Extract finished."
127
137
}
0 commit comments