【问题标题】:Android Studio create a build variant / type excluding jniLibs?Android Studio 创建不包括 jniLibs 的构建变体/类型?
【发布时间】:2015-06-23 07:02:38
【问题描述】:

我有一个使用原生 JNI 库的 Android 应用程序。我把它放到app/src/main/jniLibs/armeabi-v7a 中,没有任何 gradle 配置,Android Studio 很乐意将它捆绑到 APK 中。

我有一个要求,不能将所有本机库与某个发行版捆绑在一起。是否可以创建一个简单地排除所有本机库的构建变体或构建类型(甚至可能通过名称.so)。

本发行版中缺少本机库这一事实并不重要,因为它没有被使用。另一种方法是物理删除文件,运行构建,然后将它们放回去。然而,这很痛苦并且容易出错。

【问题讨论】:

  • 请发布您的build.gradle

标签: java android android-studio gradle android-gradle-plugin


【解决方案1】:

通过您的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。

prodflavor 将是一个构建变体或构建类型,它只是排除所有本机库

ndk、jniLibs、buildFlavours 主题的来源...:
- Mastering "Product Flavors" on Android
- ndk-with-android-studio
- multi flavor setup

【讨论】:

  • 这是一个完美的答案(并且有效)。不幸的是,我们需要libxwalkcore.so 而不是libeposprint.so。我可以选择性地排除文件吗?
  • 很高兴它有帮助,据我所见,我不知道该怎么做。好像不太可能,不过希望有办法!
  • @user2450263 - 是否可以根据构建风格交换 jniLibs 资源? stackoverflow.com/questions/31687547/….. 非常感谢!!
猜你喜欢
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 2019-04-28
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多