2021-02-05 12:27:24 +08:00
|
|
|
import java.security.MessageDigest
|
|
|
|
|
|
|
|
apply plugin: 'com.android.application'
|
|
|
|
|
|
|
|
android {
|
|
|
|
compileSdkVersion 29
|
|
|
|
defaultConfig {
|
|
|
|
applicationId "com.baidu.paddle.lite.demo.ocr"
|
|
|
|
minSdkVersion 23
|
|
|
|
targetSdkVersion 29
|
|
|
|
versionCode 1
|
|
|
|
versionName "1.0"
|
|
|
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
|
|
|
externalNativeBuild {
|
|
|
|
cmake {
|
|
|
|
cppFlags "-std=c++11 -frtti -fexceptions -Wno-format"
|
|
|
|
arguments '-DANDROID_PLATFORM=android-23', '-DANDROID_STL=c++_shared' ,"-DANDROID_ARM_NEON=TRUE"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ndk {
|
|
|
|
// abiFilters "arm64-v8a", "armeabi-v7a"
|
|
|
|
abiFilters "arm64-v8a", "armeabi-v7a"
|
|
|
|
ldLibs "jnigraphics"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
buildTypes {
|
|
|
|
release {
|
|
|
|
minifyEnabled false
|
|
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
externalNativeBuild {
|
|
|
|
cmake {
|
|
|
|
path "src/main/cpp/CMakeLists.txt"
|
|
|
|
version "3.10.2"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
|
|
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
|
|
|
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
|
|
|
testImplementation 'junit:junit:4.12'
|
|
|
|
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
|
|
|
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
|
|
|
}
|
|
|
|
|
|
|
|
def archives = [
|
|
|
|
[
|
2021-05-10 14:09:15 +08:00
|
|
|
'src' : 'https://paddleocr.bj.bcebos.com/dygraph_v2.0/lite/paddle_lite_libs_v2_9_0.tar.gz',
|
2021-02-05 12:27:24 +08:00
|
|
|
'dest': 'PaddleLite'
|
|
|
|
],
|
|
|
|
[
|
|
|
|
'src' : 'https://paddlelite-demo.bj.bcebos.com/libs/android/opencv-4.2.0-android-sdk.tar.gz',
|
|
|
|
'dest': 'OpenCV'
|
|
|
|
],
|
|
|
|
[
|
2021-04-14 10:22:33 +08:00
|
|
|
'src' : 'https://paddleocr.bj.bcebos.com/dygraph_v2.0/lite/ocr_v2_for_cpu.tar.gz',
|
2021-02-05 12:27:24 +08:00
|
|
|
'dest' : 'src/main/assets/models'
|
2021-04-14 10:22:33 +08:00
|
|
|
],
|
|
|
|
[
|
|
|
|
'src' : 'https://paddleocr.bj.bcebos.com/dygraph_v2.0/lite/ch_dict.tar.gz',
|
|
|
|
'dest' : 'src/main/assets/labels'
|
2021-02-05 12:27:24 +08:00
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
task downloadAndExtractArchives(type: DefaultTask) {
|
|
|
|
doFirst {
|
|
|
|
println "Downloading and extracting archives including libs and models"
|
|
|
|
}
|
|
|
|
doLast {
|
|
|
|
// Prepare cache folder for archives
|
|
|
|
String cachePath = "cache"
|
|
|
|
if (!file("${cachePath}").exists()) {
|
|
|
|
mkdir "${cachePath}"
|
|
|
|
}
|
|
|
|
archives.eachWithIndex { archive, index ->
|
|
|
|
MessageDigest messageDigest = MessageDigest.getInstance('MD5')
|
|
|
|
messageDigest.update(archive.src.bytes)
|
|
|
|
String cacheName = new BigInteger(1, messageDigest.digest()).toString(32)
|
|
|
|
// Download the target archive if not exists
|
|
|
|
boolean copyFiles = !file("${archive.dest}").exists()
|
|
|
|
if (!file("${cachePath}/${cacheName}.tar.gz").exists()) {
|
|
|
|
ant.get(src: archive.src, dest: file("${cachePath}/${cacheName}.tar.gz"))
|
|
|
|
copyFiles = true; // force to copy files from the latest archive files
|
|
|
|
}
|
|
|
|
// Extract the target archive if its dest path does not exists
|
|
|
|
if (copyFiles) {
|
|
|
|
copy {
|
|
|
|
from tarTree("${cachePath}/${cacheName}.tar.gz")
|
|
|
|
into "${archive.dest}"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
preBuild.dependsOn downloadAndExtractArchives
|