【发布时间】:2015-02-12 18:43:54
【问题描述】:
我正在使用 OpenCV(C++ 而不是 Java)开发一个新的 android 应用程序,而且我对 opencv 和 NDK 都是新手。我使用下面的 Gradle 文件成功构建(并运行)它,在 Android Studio 中我可以选择一个变体并点击构建(例如 x86)。
我有两个问题:
- 有没有一种方法可以让我构建一个支持所有架构的 APK 的变体? (我知道文件会更大)
-
我能否在不为每个变体指定所有相同库的情况下实现构建。有什么办法可以让构建系统每次都拿起库,因为它们都在项目中并按架构名称组织?
apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.0.0" defaultConfig { applicationId "uk.co.xxx.androidcppimagereader" minSdkVersion 17 targetSdkVersion 21 versionCode 1 versionName "1.0" } def libsDir = projectDir.path + "/libs/" productFlavors { x86 { versionCode Integer.parseInt("3" + defaultConfig.versionCode) ndk { abiFilter "x86" moduleName "Processing" stl "gnustl_static" cFlags "-I/opt/local/include/opencv -I/opt/local/include" ldLibs libsDir + "x86/libopencv_core.a" ldLibs libsDir + "x86/libopencv_ts.a" ldLibs libsDir + "x86/libopencv_contrib.a" ldLibs libsDir + "x86/libopencv_ml.a" ldLibs libsDir + "x86/libopencv_java.so" ldLibs "log" ldLibs "z", "jnigraphics" } } armv7 { versionCode Integer.parseInt("2" + defaultConfig.versionCode) ndk { abiFilter "armeabi-v7a" moduleName "Processing" stl "gnustl_static" cFlags "-I/opt/local/include/opencv -I/opt/local/include" ldLibs libsDir + "armeabi-v7a/libopencv_core.a" ldLibs libsDir + "armeabi-v7a/libopencv_ts.a" ldLibs libsDir + "armeabi-v7a/libopencv_contrib.a" ldLibs libsDir + "armeabi-v7a/libopencv_ml.a" ldLibs libsDir + "armeabi-v7a/libopencv_java.so" ldLibs "log" ldLibs "z", "jnigraphics" } } arm { versionCode Integer.parseInt("1" + defaultConfig.versionCode) ndk { abiFilter "armeabi" moduleName "Processing" stl "gnustl_static" cFlags "-I/opt/local/include/opencv -I/opt/local/include" ldLibs libsDir + "armeabi/libopencv_core.a" ldLibs libsDir + "armeabi/libopencv_ts.a" ldLibs libsDir + "armeabi/libopencv_contrib.a" ldLibs libsDir + "armeabi/libopencv_ml.a" ldLibs libsDir + "armeabi/libopencv_java.so" ldLibs "log" ldLibs "z", "jnigraphics" } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' }
【问题讨论】:
标签: android gradle android-ndk