Android Studio 创建一个不包括 jniLibs 的构建变体/类型?

2024-01-01

我有一个使用本机 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(使用前将#替换为@)

Android Studio 创建一个不包括 jniLibs 的构建变体/类型? 的相关文章

随机推荐

  • C++ 中的字符指针

    我对 C 中的字符指针有疑问 每当我们在 C 中创建字符指针时 char p How are you doing p 应该包含保存值 how are you getting 的内存位置的地址 但是 我对示例代码和输出感到困惑 为什么cout
  • 在Unity3d中使用Android陀螺仪,如何将初始相机旋转设置为初始移动设备旋转?

    我想使用Android陀螺仪在Unity3d的标准第一人称控制器上执行头部跟踪 我创建了一个简短的脚本 用于旋转第一人称控制器的父节点和相机子节点 该脚本附在相机上 这个脚本运行得很好 它根据我的移动设备的移动旋转第一人称视图 但是 只有当
  • Django + docker + 周期性命令

    使用 docker docker compose 运行 Django 时 运行定期 计划任务 如 manage py custom command 的最佳实践是什么 FE最常见的情况 manage py 清除会话 https docs dj
  • 在 Laravel Eloquent 中使用“With()”函数获取特定列

    我有两张桌子 User and Post One User可以有很多posts和一个post只属于一个user In my User型号 我有一个hasMany关系 public function post return this gt h
  • 大整数转十六进制

    快速提问 我有一个愚蠢的长BigInteger我想将其作为十六进制字符串写入文件 我知道Java提供了 toString 16 方法可以做到这一点 但我在 C 中找不到等效的方法 我在用着System Numerics BigInteger
  • 使用 XTS 进行 Rbind。如何堆叠而不按索引日期排序

    我正在使用 Quantmod 来生成带有股票信息的 XTS 对象 并且我希望编译 堆叠一堆 XTS 文档来处理代码 将 Rbind 与 XTS 结合使用 我发现它不会将 XTS 堆叠在一起 而是按日期进行合并和排序 x lt xts 1 1
  • 确定表单上是否存在字段

    我有一个从数据库动态创建的表单字段 一系列复选框 因此表单上可能不存在该字段 如果数据库中没有匹配的值 我有一些代码需要根据字段是否存在来执行 并提取所选值 如果存在 不过 我似乎无法让 javascript 承认该字段的存在 这是我尝试过
  • 当应用程序处于打瞌睡模式时,警报管理器触发的 Android 通知不会触发

    我有以下要求 用户需要能够在我的应用程序中安排定期提醒 以便在某个时间触发推送通知exact每天的时间 这是我希望我最终不会提交的问题之一 因为在撰写本文时推荐了类似的问题 然而 一些团队成员花了很多时间浏览 Android 开发人员文档和
  • 使用 Cakephp 3 用户名或电子邮件登录

    我想使用用户名或电子邮件登录 所以我想动态更改 Auth 字段 如何像 Cakehp 2 那样修改 this gt Auth 字段 在 cakephp 2 中你可以这样做 this gt Auth gt authenticate array
  • Java 7 -> Java 8:AES 导致异常:“BadPaddingException:给定的最终块未正确填充”与 BufferedReader 和 ZipStreams 结合使用

    我们使用以下语句实例化密码 Cipher cipher Cipher getInstance AES SecretKeySpec key new SecretKeySpec cipherKey AES 这适用于 java 7 1 7 45
  • 如何从子组件显示应用程序级别的警报

    我想要一些规则或建议来做到这一点 我有一个应用程序级别的警报 我想在我的组件之一发生某些情况时显示该警报 例如 保存信息已成功或失败 另外 如何发送我想要显示的不同文本 有 ViewChild 的等价物吗 感谢您的帮助 我会这样做Obser
  • 从 django list_filter 中删除重复项

    我在 django admin 中对相关对象中的字段使用列表过滤器 class A models Model pass class B models Model fk models ForeignKey A val models CharF
  • 当单元格结果按公式更改时运行宏

    我需要什么 每当单元格 C3 返回与当前不同的值 基于其公式 而不是基于手动键入不同的值 时 我们将要触发的宏称为 MacroRuns 我花了一整天的时间阅读并尝试了关于这个主题的谷歌搜索的前两页上的每个 解决方案 到目前为止 似乎没有什么
  • 使用 cassandra 而不是 memcache?

    我不断地从不同来源查阅那些大型网站正在从 memcache 切换到 cassandra 的文章 由于我有 mySQL 背景 当我试图比较彼此之间的优缺点时 我会有点头疼 你能帮我了解更多这方面的信息吗 替换 memcached 是愚蠢的作为
  • 无法使用 QOAuth2AuthorizationCodeFlow 实现 Google 登录

    问题在于重定向 URI 我不知道将其设置为什么 有谁能够弄清楚这一点吗 我收到错误Qt Creator s输出窗格如下所示 qt networkauth oauth2 Unexpected call qt networkauth reply
  • 在 JNI 代码中抛出异常的最佳方式?

    我想要一种一致且简单的方法来在 JNI 代码中抛出异常 处理链式异常的东西 隐式地来自 env gt ExceptionOccurred 方法 或显式地通过参数 无论哪种方式都很好 并且每次我想要这样做时都可以节省我查找构造函数的时间 以上
  • 如何通过 JavaScript 连接到我的 PHP 程序所在的服务器?

    我正在编写一个 Android 应用程序 并且已经有一个用 HTML 和 PHP 编写的工作程序 使用这两者 他们通过用户在 html 页面上自定义的查找来联系 API 然后将其发送到 PHP 页面 通过自定义搜索联系 API 获取结果 然
  • JavaScript 中的原型和构造函数(简单英语)?

    JavaScript 是世界上最容易被误解的语言 D Crockford 我的问题 用简单的英语描述构造函数和原型 使用原型需要什么 是什么purpose后面使用 原型和构造函数 我的意思是他们提供更多 灵活性 我问这个是因为我一直在使用这
  • Eclipse:无法连接到远程虚拟机。连接被拒绝。 [复制]

    这个问题在这里已经有答案了 当我尝试启动 Eclipse 调试 对于服务器端代码 时 我收到以下错误无法连接到远程虚拟机 连接被拒绝 可能是什么问题 我已经尝试过网络上的大多数解决方案 但都没有解决我的问题 任何人都可以帮助我解决这个问题吗
  • Android Studio 创建一个不包括 jniLibs 的构建变体/类型?

    我有一个使用本机 JNI 库的 Android 应用程序 我把它放入app src main jniLibs armeabi v7a无需任何 gradle 配置 Android studio 很乐意将其捆绑到 APK 中 我有一个要求 即所