问题标签 [android-build-flavors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
191 浏览

android - 具有不同功能的多个 APK 版本

我正在开发和应用程序(在开发和测试过程中,但不是在最终版本中)在不同的 .apk 发布文件中需要稍微不同的功能。

在这种特殊情况下几乎没有问题:

  • 不同的“测试”APK 版本不应包含来自其他 APK 版本的任何代码和资源(因此没有共享的字符串和图像)(出于安全/逆向工程原因,不同的人将可以访问不同的 APK 版本)
  • 在开发过程结束时,应用程序将包含来自“测试”版本的所有/大部分功能。
  • 该应用程序使用多个模块(由不同团队开发)
  • 这些版本中可能有几个(3 到 10 个),它们都是由多个开发人员在同一个存储库的同一个项目中同时开发的。

目标是使其尽可能易于维护(包括 UI/集成测试和 CI)。有什么办法可以做到这一点?我们用不同的构建变体和风格+无操作模块/方法做了一些实验,但看起来有点复杂。欢迎任何替代建议。

0 投票
0 回答
612 浏览

android - 直接在运行配置中更改构建变体

考虑到这个屏幕:

浏览器

今天,当我想更改我的应用程序的构建变体时,我单击菜单 #1 并切换到我想要的那个。

我想做的事情是为每个有用的变体创建多个运行配置(单击#2)。Studio 会自动在变体菜单中创建我不需要的构建/风味组合。

我认为这与屏幕底部的“Before lanch”菜单有关,但无法准确确定我应该添加哪个 Gradle 规则来选择好的变体。

谢谢

0 投票
1 回答
63 浏览

android - 使用签名版本设置 versionCode 的问题

我正在开发的应用程序不在 Play 商店中,它直接安装在用于特定项目的设备上。我们确实使用内部密钥库对应用程序进行签名。使用我们自己的网络服务将更新发送到设备,这些服务会下载更新的 APK 并提示用户安装更新,如下所示。

当我们开始使用 gradle 构建变体以允许轻松交换资产时,它的设置不正确,如下所示:

请注意版本代码和名称的错误分配以及版本代码是字符串的事实。

这实际上是按原样工作的,直到我们得到大于 9(两位数)的版本代码。这导致了下面的(预期的)错误。

无法将具有类“java.lang.String”的对象“10”转换为类“java.lang.Integer”

这导致解决以下项目的问题。

这按预期工作,并让我们超越版本代码 10。

问题是此更改不允许在使用旧的错误方法构建的应用程序的先前版本上安装更新。这样做时,安装几乎立即失败,并简单地显示“未安装应用程序”。

我已经测试确保没有其他任何改变,使用相同的密钥库和资产仍然失败。我们一直在使用的修复方法是将版本代码保留为“9”并增加版本名称,但这并不理想。

任何建议,将不胜感激。这些项目的生命周期往往有限,更新不多,所以这不是一个主要问题,但为现有项目修复它会很好,这样我们就可以继续增加两者。

编辑 这是尝试使用更正的构建变体安装签名 APK 时 Logcat 中的错误。

根据对该错误的研究,我尝试安装的先前版本是几天前使用 Android Studio 构建的,中间没有重大更改或更新,并且仅使用 V1 签名,就像之前的构建一样。改回不正确的方式,将代码设置为 9 并仅增加版本名称允许正确安装更新。

0 投票
2 回答
870 浏览

android - Gradle Flavor 明智地更改 packageName 和 applicationId

我有一个核心产品(例如School core)现在我需要为 2 所学校(例如School ASchool B)启动它。唯一不同的是应用程序图标启动画面。我尝试通过风味来解决这个问题。我们知道要上传到谷歌游戏商店,我们需要不同的包名,所以我被困在那里。

我的味道是这样的——

当我运行风味学校A时,它说找不到包。我正在寻找最好的方法,以便将来可以通过最小的更改添加任何新学校。

0 投票
0 回答
44 浏览

android - 安装两个相同的 apk 但使用不同的 WebService Url

我的客户正在他们的手机上寻找两个不同的 android 应用程序,一个用于测试目的,一个用于生产。客户端将使用测试应用程序向不同的第三级客户端展示演示。我正在使用“com.xyz”作为我的 android 应用程序的应用程序 id 我想构建两个不同的 apk 但具有相同的应用程序 id 这是因为我在谷歌控制台上创建了一个项目,说“com.xyz”用于推送通知。如果我更改另一个应用程序的应用程序 ID,则推送通知将无法工作。我已经看到了针对不同口味使用构建变体的过程,但还没有尝试过。在许多不同风格的示例中,我看到不同风格的应用程序 ID 是不同的。如果应用程序 ID 不同,那么我的应用程序将能够获得推送通知。

0 投票
1 回答
197 浏览

android - Android 每个构建风格的 git 存储库

我有一个多风格的 android 项目,我的风格之一是我想在 github 上共享的项目版本,但不是其他版本,因为它们包含一些与客户相关的数据,所以我只是想知道我是否可以以某种方式仅将假设公共风味的代码推送到另一个 git 存储库,即 github 存储库,在此先感谢。

0 投票
1 回答
520 浏览

android - 错误:配置“实现”到配置“内部发布”未在项目的描述符中声明

我有一个core模块,它是我的应用程序的基础。该模块有 2 种风格。当我尝试在app没有味道的模块中导入它时,我收到以下错误:

这是我的核心 build.gradle 配置:

这是我在我的应用程序模块 build.gradle 中导入此模块的方式:

0 投票
0 回答
127 浏览

android - 在 aosp build 的 apk 中打包 .arr

在我的项目中,我有一个 .aar 文件(在 armebabi-v7a 上构建的 .so 文件包),它将成功构建在 Android AOSP 源代码树中。(源码树基于 arm64-v8a)。

但是我在设备中运行应用程序,它会崩溃并显示以下错误。

请帮我解决以下问题,将 .aar lib 打包到应用程序 apk 本身中。

0 投票
1 回答
41 浏览

android - 安卓 | 无法构建多风味维度

我有多维风味:

但我希望应用程序 ID 同时具有应用程序和环境名称。喜欢:com.company.application.app1.staging

然后是目录结构中的混乱,将google-services.json每个包名称分开放置。

我试过像app/src/app1Staging/google-services.json

但它在构建中失败。

0 投票
1 回答
3338 浏览

react-native - 如何在 React 本机 android 中访问 BuildConfig 产品风味变量

嗨,我按照以下链接创建产品口味 在此处输入链接描述

我在风味中设置了一个变量,但无法在代码中访问它。

构建.gradle。

我试图在我的 Login.js 文件中访问它

运行应用程序

我正在尝试访问buildConfigField MOCK_VERSION.

您能否建议如何使其正常工作。

谢谢R