134 lines
4.0 KiB
Kotlin
134 lines
4.0 KiB
Kotlin
/**
|
|
* Rapid OCR (https://github.com/RapidAI/RapidOCR) build script (Kotlin DSL).
|
|
*
|
|
* Created by SuperMonster003 on Sep 19, 2024.
|
|
* Transformed by SuperMonster003 on Sep 30, 2025.
|
|
*/
|
|
|
|
plugins {
|
|
id("org.autojs.build.utils")
|
|
id("org.autojs.build.properties")
|
|
id("org.autojs.build.jvm-convention")
|
|
id("com.android.library")
|
|
id("org.jetbrains.kotlin.android")
|
|
id("kotlin-parcelize")
|
|
}
|
|
|
|
ext {
|
|
set("projectName", "Rapid OCR")
|
|
}
|
|
|
|
val versionMap = mapOf(
|
|
"OFFICIAL_NAME" to "1.3.0", /* From original build.gradle file. */
|
|
"MIN_SDK" to props["MIN_SDK"].toInt(),
|
|
"COMPILE_SDK" to props["COMPILE_SDK"].toInt(),
|
|
"TARGET_SDK" to props["TARGET_SDK"].toInt(),
|
|
"NDK" to props["RAPID_OCR/NDK"],
|
|
"CMAKE" to props["RAPID_OCR/CMAKE"],
|
|
"OPENCV_MOBILE" to props["RAPID_OCR/OPENCV_MOBILE"],
|
|
"OPENCV_MOBILE_LABEL" to props["RAPID_OCR/OPENCV_MOBILE_LABEL"],
|
|
"ONNX" to props["RAPID_OCR/ONNX"],
|
|
"ONNX_RUNTIME" to props["RAPID_OCR/ONNX_RUNTIME"],
|
|
)
|
|
|
|
val nameMap = mapOf(
|
|
"PROJECT" to extensions.extraProperties["projectName"] as String,
|
|
"OPENCV_MOBILE" to "OpenCV Mobile",
|
|
"OPENCV_MOBILE_LABEL" to "OpenCV Mobile Label",
|
|
"ONNX" to "Onnx",
|
|
"ONNX_RUNTIME" to "Onnx Runtime",
|
|
"NDK" to "NDK",
|
|
"CMAKE" to "Cmake",
|
|
)
|
|
|
|
val libsToDeploy = listOf(
|
|
utils.newLibDeployer(
|
|
project,
|
|
nameMap["OPENCV_MOBILE"] as String,
|
|
"https://github.com/nihui/opencv-mobile/releases/download/v${versionMap["OPENCV_MOBILE_LABEL"]}/opencv-mobile-${versionMap["OPENCV_MOBILE"]}-android.zip",
|
|
).apply {
|
|
setSourceDir("/opencv-mobile-${versionMap["OPENCV_MOBILE"]}-android/sdk/native/")
|
|
setDestDir("/src/sdk/native/")
|
|
},
|
|
utils.newLibDeployer(
|
|
project,
|
|
nameMap["ONNX"] as String,
|
|
"https://github.com/RapidAI/RapidOcrOnnx/releases/download/${versionMap["ONNX"]}/Project_RapidOcrOnnx-${versionMap["ONNX"]}.7z",
|
|
).apply {
|
|
setSourceDir("/Project_RapidOcrOnnx-${versionMap["ONNX"]}/models/")
|
|
setDestDir("/src/main/assets/models/")
|
|
},
|
|
utils.newLibDeployer(
|
|
project,
|
|
nameMap["ONNX_RUNTIME"] as String,
|
|
"https://github.com/RapidAI/OnnxruntimeBuilder/releases/download/${versionMap["ONNX_RUNTIME"]}/onnxruntime-${versionMap["ONNX_RUNTIME"]}-android-shared.7z",
|
|
).apply {
|
|
setSourceDir("/onnxruntime-shared/")
|
|
setDestDir("/src/main/onnxruntime-shared/")
|
|
},
|
|
)
|
|
|
|
utils.configureLibraryLifecycleHooks(
|
|
project,
|
|
nameMap["PROJECT"] as String,
|
|
listOf("OPENCV_MOBILE", "OPENCV_MOBILE_LABEL", "ONNX", "ONNX_RUNTIME", "NDK", "CMAKE")
|
|
.map { "${nameMap[it] ?: it}: ${versionMap[it]}" },
|
|
libsToDeploy,
|
|
"isCleanupRapidOcr",
|
|
listOf(".cxx"),
|
|
)
|
|
|
|
android {
|
|
|
|
namespace = "com.benjaminwan.ocrlibrary"
|
|
version = versionMap["OFFICIAL_NAME"] as String
|
|
|
|
ndkVersion = versionMap["NDK"] as String
|
|
compileSdk = versionMap["COMPILE_SDK"] as Int
|
|
|
|
defaultConfig {
|
|
minSdk = versionMap["MIN_SDK"] as Int
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
consumerProguardFiles("consumer-rules.pro")
|
|
|
|
externalNativeBuild {
|
|
cmake {
|
|
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86_64", "x86")
|
|
}
|
|
}
|
|
}
|
|
|
|
lint {
|
|
targetSdk = versionMap["TARGET_SDK"] as Int
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isMinifyEnabled = false
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
"proguard-rules.pro"
|
|
)
|
|
}
|
|
}
|
|
|
|
externalNativeBuild {
|
|
cmake {
|
|
path = file("src/main/cpp/CMakeLists.txt")
|
|
version = versionMap["CMAKE"] as String
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs")))
|
|
|
|
testImplementation(libs.junit)
|
|
androidTestImplementation(libs.test.ext.junit)
|
|
androidTestImplementation(libs.test.espresso.core)
|
|
|
|
implementation(libs.core.ktx)
|
|
implementation(libs.appcompat)
|
|
}
|