130 lines
4.2 KiB
Groovy
130 lines
4.2 KiB
Groovy
/**
|
|
* Rapid OCR (https://github.com/RapidAI/RapidOCR) build script (Groovy).
|
|
*
|
|
* Created by SuperMonster003 on Sep 19, 2024.
|
|
*/
|
|
|
|
plugins {
|
|
id 'org.autojs.build.utils'
|
|
id 'org.autojs.build.properties'
|
|
id 'com.android.library'
|
|
id 'org.jetbrains.kotlin.android'
|
|
id 'kotlin-parcelize'
|
|
}
|
|
|
|
ext["projectName"] = "Rapid OCR"
|
|
|
|
def versionMap = [
|
|
"OFFICIAL_NAME" : "1.3.0", /* From original build.gradle file. */
|
|
"MIN_SDK" : props["MIN_SDK"] as Integer,
|
|
"COMPILE_SDK" : props["COMPILE_SDK"] as Integer,
|
|
"TARGET_SDK" : props["TARGET_SDK"] as Integer,
|
|
"NDK" : props["RAPID_OCR/NDK"],
|
|
"CMAKE" : props["RAPID_OCR/CMAKE"],
|
|
"OPENCV_MOBILE" : props["RAPID_OCR/OPENCV_MOBILE"],
|
|
"OPENCV_MOBILE_LABEL": props["RAPID_OCR/OPENCV_MOBILE_LABEL"],
|
|
"ONNX" : props["RAPID_OCR/ONNX"],
|
|
"ONNX_RUNTIME" : props["RAPID_OCR/ONNX_RUNTIME"],
|
|
]
|
|
|
|
def nameMap = [
|
|
"PROJECT" : ext["projectName"],
|
|
"OPENCV_MOBILE" : "OpenCV Mobile",
|
|
"OPENCV_MOBILE_LABEL": "OpenCV Mobile Label",
|
|
"ONNX" : "Onnx",
|
|
"ONNX_RUNTIME" : "Onnx Runtime",
|
|
"NDK" : "NDK",
|
|
"CMAKE" : "Cmake",
|
|
]
|
|
|
|
def libsToDeploy = [
|
|
utils.newLibDeployer(project, nameMap.OPENCV_MOBILE, "https://github.com/nihui/opencv-mobile/releases/download" +
|
|
"/v${versionMap.OPENCV_MOBILE_LABEL}/opencv-mobile-${versionMap.OPENCV_MOBILE}-android.zip")
|
|
.setSourceDir("/opencv-mobile-${versionMap.OPENCV_MOBILE}-android/sdk/native/")
|
|
.setDestDir("/src/sdk/native/"),
|
|
utils.newLibDeployer(project, nameMap.ONNX, "https://github.com/RapidAI/RapidOcrOnnx/releases/download" +
|
|
"/${versionMap.ONNX}/Project_RapidOcrOnnx-${versionMap.ONNX}.7z")
|
|
.setSourceDir("/Project_RapidOcrOnnx-${versionMap.ONNX}/models/")
|
|
.setDestDir("/src/main/assets/models/"),
|
|
utils.newLibDeployer(project, nameMap.ONNX_RUNTIME, "https://github.com/RapidAI/OnnxruntimeBuilder/releases/download" +
|
|
"/${versionMap.ONNX_RUNTIME}/onnxruntime-${versionMap.ONNX_RUNTIME}-android-shared.7z")
|
|
.setSourceDir("/onnxruntime-shared/")
|
|
.setDestDir("/src/main/onnxruntime-shared/"),
|
|
]
|
|
|
|
utils.configureLibraryLifecycleHooks(project, nameMap.PROJECT, [
|
|
"OPENCV_MOBILE",
|
|
"OPENCV_MOBILE_LABEL",
|
|
"ONNX",
|
|
"ONNX_RUNTIME",
|
|
"NDK",
|
|
"CMAKE",
|
|
].collect { "${nameMap[it]}: ${versionMap[it]}" }, libsToDeploy, "isCleanupRapidOcr", [".cxx"])
|
|
|
|
android {
|
|
|
|
namespace = "com.benjaminwan.ocrlibrary"
|
|
|
|
ndkVersion versionMap.NDK
|
|
compileSdk versionMap.COMPILE_SDK
|
|
|
|
defaultConfig {
|
|
minSdk versionMap.MIN_SDK
|
|
targetSdk versionMap.TARGET_SDK
|
|
versionName versionMap.OFFICIAL_NAME
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
consumerProguardFiles "consumer-rules.pro"
|
|
|
|
externalNativeBuild {
|
|
cmake {
|
|
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64', 'x86'
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.toVersion(project.ext.javaVersion)
|
|
targetCompatibility = JavaVersion.toVersion(project.ext.javaVersion)
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = project.ext.javaVersion
|
|
}
|
|
|
|
externalNativeBuild {
|
|
cmake {
|
|
path "src/main/cpp/CMakeLists.txt"
|
|
version versionMap.CMAKE
|
|
}
|
|
}
|
|
|
|
libraryVariants.all {
|
|
variant ->
|
|
variant.outputs.all {
|
|
outputFileName = "${project.name}-${defaultConfig.versionName}-${variant.buildType.name}.aar"
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
dependencies {
|
|
|
|
implementation fileTree(dir: "libs", include: ["*.jar"])
|
|
|
|
testImplementation libs.junit
|
|
androidTestImplementation libs.test.ext.junit
|
|
androidTestImplementation libs.test.espresso.core
|
|
|
|
implementation libs.core.ktx
|
|
implementation libs.appcompat
|
|
|
|
}
|