当前位置: 首页 > 知识库问答 >
问题:

GradleAndroid插件,如何根据不同的产品口味复制加载不同的动态库?

云新知
2023-03-14

我有一个如下结构的android模块:

└─product module
└─src
    └─main
        ├─assets
        │  ├─flavor1
        │  └─flavor2
        ├─java
        └─jniLibs
            └─armeabi

我在模块的build.gradle文件中定义了两个产品风味,称为flavor1和flavor2,位于文件夹src/main/assets/flavor1/下,而src/main/assets/flavor2是完全不同的动态库,例如:libhelper.so。它们适用于不同的产品风味。

我的意图是在gradle构建过程中,根据产品风格将不同的动态库复制到jnilibs/armeabi/folder中,这是一种实现方法吗?

共有1个答案

干宏邈
2023-03-14

您可以为此创建一个gradle任务。

task copyNativeLibs {
    Gradle gradle = getGradle()
    Pattern pattern = Pattern.compile(":assemble(.*?)(Release|Debug)");
    Matcher matcher = pattern.matcher(gradle.getStartParameter().getTaskRequests().toString());
    def flavor = matcher.group(1)

    if(flavor == 'flavor1') {
    copy {
        from '/yourlibrarypath'
        into 'src/main/assets/flavor1/ '
        }
    } else if() {
    ....
    }
}
 类似资料:
  • 我正在将我的一个应用程序转换为Gradle,并希望使用新的构建风味功能,以有一个付费和免费的广告为基础的风味。 我希望只有基于广告的版本依赖于admob SDK。 我的生成文件如下所示: 是否有一种方法可以在免费产品版本中配置依赖项,使其拥有自己的libs文件夹,该文件夹与包含两种版本通用库的主libs文件夹合并? 如果这是可能的,我将如何定义这个文件夹?

  • 更新:不推荐使用GCM,请使用FCM 我正在按照Google Developers页面中的指南实现新的Google云消息 我已经成功地运行并测试了它。但我现在的问题是,我有不同的产品风格,有不同的applicationID/packageName和不同的Google Cloud Messaging Project ID。必须放在而不是flavors文件夹中。 有什么方法可以使配置针对多种口味不同吗

  • 问题内容: 我想要 与 ndk库 不同的 字符串 值 。因为我有两个风味演示和现场直播,所以我想为演示风味和实时风味值“你好,我来自演示”,我想“我来自现场” 这是我的java文件代码 } 这是我的cpp文件代码 这是我的build.gradle文件 我已经在演示文件夹以及主文件夹中粘贴了相同的cpp文件,但是可以实现我的任务。任何帮助将不胜感激,这是一些参考链接 https://develope

  • 前言:这不是一个关于如何在一个Android应用中使用构建类型和产品口味的问题。我理解其中涉及的基本概念。这个问题更多的是试图理解在构建类型中应该指定哪个配置,在产品风味中应该指定哪个配置,以及实际上是否有必要进行任何区分。 本周,我学习了更多关于Android应用程序的分级配置。我最初认为自己对构建类型和产品风格有很好的把握,但我对文档越深入,就越意识到这两者之间的区别对我来说根本不清楚。 既然

  • 一个product flavor定义了从项目中构建了一个应用的自定义版本。一个单一的项目可以同时定义多个不同的flavor来改变应用的输出。 这个新的设计概念是为了解决不同的版本之间的差异非常小的情况。虽然最项目终生成了多个定制的版本,但是它们本质上都是同一个应用,那么这种做法可能是比使用库项目更好的实现方式。 Product flavor需要在productFlavors这个DSL容器中声明:

  • 我正在使用Gradle构建系统在Android Studio上编写一个具有多种风格的应用程序。主应用程序/AndroidManifest文件有自己定义的启动程序活动,我想用Flavor/AndroidManifest文件覆盖它,我在其中定义了其他启动程序活动,这些活动只是Flavor/source代码的一部分。 编辑:以下是文件层次结构: 应用程序名称- src公司- 但当我这样做时,它给出了一个