我有一个使用本机 JNI 库的 Android 应用程序。我把它放入app/src/main/jniLibs/armeabi-v7a
无需任何 gradle 配置,Android studio 很乐意将其捆绑到 APK 中。
我有一个要求,即所有本机库都不能与某个发行版捆绑在一起。是否可以创建一个构建变体或构建类型来简单地排除所有本机库(甚至可以通过名称.so
).
该发行版中缺少本机库这一事实并不重要,因为它没有被使用。另一种方法是物理删除文件,运行构建,然后将它们放回去。然而,这是痛苦的并且容易出错。
从你的build.gradle
,我们也许能够准确地知道要做什么。
我用过productFlavours
,结合flavorDimensions
实现可能包含也可能不包含 jni 库的构建。
据我了解,其要点是:productFlavors
使您能够拥有 x, y... 类型的 n 个变体,添加flavorDimensions
将使您能够拥有 xy 类型的 n 个变体。
例如。里面build.gradle
,
flavorDimensions "abi", "version" //this is what can help you build with/w/o jni libraries
productFlavors {
devel {
flavorDimension "abi" //keep a dimension common with arm, armv7
applicationId "com.packagename.dev"
}
prod {
flavorDimension "version"
// this would be your build w/o the ndk support then
applicationId "com.packageName"
}
armv7 {
ndk {
flavorDimension "abi"
abiFilter "armeabi-v7a"
}
}
arm {
ndk {
flavorDimension "abi"
abiFilter "armeabi"
}
}
}
正如您所看到的,您将有多个构建变体,产品风格取决于flavorDimension
.
prod
风味将是一个构建变体或构建类型,仅排除所有本机库
ndk、jniLibs、buildFlavours...主题来源:
- 在 Android 上掌握“产品风味” http://blog.brainattica.com/how-to-work-with-flavours-on-android/
- ndk-with-android-studio http://www.shaneenishry.com/blog/2014/08/17/ndk-with-android-studio/
- 多口味设置 https://stackoverflow.com/questions/27508708/android-gradle-1-0-computing-version-code-in-multi-flavor-setup
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)