问题标签 [android-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 投票
1 回答
1035 浏览

java - 如何在 Android 中使用 Flavors 更改应用程序颜色

在我的应用程序中,我有2 种口味,我想res/color为每种口味更改应用程序的颜色 () !

请在下面的build.gradle文件中查看我的代码:

我不知道如何color.xml为每种口味设置!

这怎么可能?

0 投票
0 回答
1093 浏览

android - Flutter 风格不适合 iOS

好日子,

在构建到 android 时,我对使用风味没有任何问题。

这不是 iOS 的情况,我收到以下错误:

完成错误:异常:源目录“/Users/[HOME]/[PROJECT]/build/ios/Release-iphonesimulator/Runner.app”不存在,没有可复制的

请看颤振医生-v:

[✓] Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.15.4 19E266, locale en-ZA) • Flutter 版本 1.12.13+hotfix.9 在 /Users/[HOME]/flutter •框架修订 f139b11009(4 天前),2020-03-30 13:57:30 -0700 • 引擎修订 af51afceb8 • Dart 版本 2.7.2

[✓] Android 工具链 - 为 Android 设备开发(Android SDK 版本 29.0.3) • Android SDK 位于 /Users/[HOME]/Library/Android/sdk • Android NDK 位置未配置(可选;对原生分析支持有用) •平台 android-29,构建工具 29.0.3 • ANDROID_HOME = /Users/[HOME]/Library/Android/sdk • ANDROID_SDK_ROOT = /Users/[HOME]/Library/Android/sdk • Java 二进制文件位于:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版本 OpenJDK 运行时环境(内部版本 1.8.0_212-release-1586-b4-5784211) • 接受所有 Android 许可证。

[✓] Xcode - 为 iOS 和 macOS 开发 (Xcode 11.4) • Xcode 在 /Applications/Xcode.app/Contents/Developer • Xcode 11.4,构建版本 11E146 • CocoaPods 版本 1.9.1

[✓] Android Studio(版本 3.6) • Android Studio 位于 /Applications/Android Studio.app/Contents • Flutter 插件版本 44.0.2 • Dart 插件版本 192.7761 • Java 版本 OpenJDK 运行时环境(内部版本 1.8.0_212-release-1586- b4-5784211)

[✓] 连接设备(2 个可用) • 为 x86 构建的 Android SDK • emulator-5554 • android-x86 • Android 5.1.1 (API 22)(模拟器) • iPhone 11 Pro Max • 96D35F20-F138-40BA-BC95-0DF38DFCA21E • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-4(模拟器)

• 未发现任何问题!

0 投票
0 回答
390 浏览

android - 为什么两个以上的 android 风格维度不能正常工作?

这是一个问题,例如,我的应用需要接下来的三个维度:“品牌”、“环境”、“市场”。配置将如下所示:

结果,我可以构建接下来的 8 个应用程序(在此示例中我忽略了构建类型):

据我了解有关风味维度的文档(https://developer.android.com/studio/build/build-variants#flavor-dimensions),应用程序 nikeTestGoogle 使用下一个文件夹中的文件:main、nike、test、google、nikeTest、耐克测试谷歌。但它不起作用,Android Studio 只能看到 main、nike、test、google 和 nikeTestGoogle 中的文件。nikeTest 中的文件被忽略,甚至没有标记为当前活动。

有谁知道为什么会这样?

0 投票
1 回答
52 浏览

android - 有没有办法组合来自不同维度的数据?

我制作了 4 种不同风格的同一个应用程序,并将它们全部作为免费应用程序发布在 Play Store 上。

现在我正在为它们中的每一个制作付费版本,为了实现这一目标,我创建了 2 种新风格:免费和付费,这些风格与 4 个应用程序之一具有不同的维度。4 个应用程序具有“版本”维度,免费/付费口味具有“模式”维度。

我试图弄清楚如何为每个版本/模式对设置不同的版本代码和名称,例如: flavorAFree -> versionCode 1 / flavorAPaid -> versionCode 2

这是我的代码:

我试图实现的一个例子(不完全是这些值):

当我尝试同步我的 Gradle 脚本时,我收到以下错误:

配置项目 ':app' 时出现问题。风味“flavourA”没有风味维度。

有没有办法做我想做的事?

0 投票
1 回答
75 浏览

java - Android中的产品风味内部风味

我无法让产品风味发挥作用。我想在风味中实现风味,例如,我有 2 个应用程序,我已经这样声明了它,

现在我想通过使用风味来“定义”开发和产品,那么我该如何实现呢?可能吗 ?我想实现这个,

0 投票
1 回答
3387 浏览

android - 无法在 Flutter 中构建具有多种风格的发布 apk?

我正在使用 Flutter(1.17.4 版)开发 Android 并配置multi Flavors运行多环境。

我的源代码有 3 个环境:(dev开发)、uat(QC)、prod(生产)。

Source: https://github.com/huubao2309/demo_multi_flavors

我的multiFlavors.gradle文件(/android/app/multiFlavors.gradle):

每次,我都会构建应用程序以使用终端发布:

文件 .apk 已创建,但终端抛出异常:

Gradle build failed to produce an .apk file. It's likely that this file was generated under D:\demo_multi_flavors\build, but the tool couldn't find it.

错误

我在模式下运行时也遇到了这个问题debug,但是在Android Studio(4.0版)上,我添加了 config build flavor,问题得到解决:

添加风味

如何解决发布模式的问题?

0 投票
0 回答
75 浏览

android - 使用风格时出现错误无法实例化活动,并且启动器活动在两种风格中都有不同的代码

出现错误 使用风味时无法实例化活动,并且启动器活动在两种风味中具有不同的代码。

MainActivity 是启动器活动。它包含两种风格的不同代码。

项目结构

--风味1

--> AndroidManifest.xml(包含仅在此风格中使用的活动)

--> 爪哇

----> MainActivity.java(此风味的具体代码)

--风味2

--> AndroidManifest.xml(包含仅在此风格中使用的活动)

--> 爪哇

----> MainActivity.java(此风味的具体代码)

- 主要的

--> AndroidManifest.xml(仅使用清单标签,即只使用空清单文件)

当我对这两种口味都有共同的 MainActivity 时,代码运行良好。但是现在当我在模拟器/任何设备上运行代码时,它会在 logcat 中显示此错误

java.lang.RuntimeException:无法实例化活动 ComponentInfo{some.package.flavor1/some.package.MainActivity}:java.lang.ClassNotFoundException:在路径上找不到类“some.package.MainActivity”:DexPathList [[。 ..]]

在进行干净的项目或重建后,有时应用程序工作得很好,但大多数时候应用程序崩溃并给出上述错误。

感谢您阅读问题。我希望它是可以理解的...

0 投票
1 回答
32 浏览

android - Android:是否有任何方法可以在不同的 falvors 和 sourceset 之间共享资源?

我有一个具有以下源集和风味的应用程序:flavorDimensions “brand”

我的应用程序是这样的,99% 的布局和类是相同的。例如,只有布局文件main_activity.xml在不同风格之间有所不同,但其他 20~30 个布局文件完全相同。我不想将这 20~30 个复制到三个不同的风味源集中。有没有办法在三种风格之间共享它们,如果源集中存在文件,它会覆盖共享文件?(比如想要 android 为drawableand做的drawble-hdpi,...)?所以我不想拥有

0 投票
1 回答
552 浏览

android - 如何为风味变体创建两个不同版本的代码

我想Fragment为不同的构建变体创建 2 个版本,比如整个代码在风味 1 和风味 2 中会有所不同。我想在不根据BuildConfig.FLAVOR代码中的参数执行 if-else 的情况下解决这个问题。这意味着如果我有,我希望在构建不同风格时使用不同代码MapFragment命名的完全相同的类。MapFragment我想要这样做的原因是我不想MapFragment从其他版本中对此进行任何引用(在我的应用程序上的任何日志或细节中都有任何参考。这应该像string.xml本地化一样工作,或者dimens.xml。有什么办法可以实现这一目标?

原因是我使用的是华为地图和ag-connect服务以及 Google Play 地图。问题是华为正在使用一些后台定位服务,然后拒绝我在 Google Play 上的应用。这种华为风格永远不应该在 Google Play 上提供,它就像华为商店应用程序的独立副本。

这意味着如果我.apk从 Google Play(风格 1)构建,我不会包含任何来自华为风格的 ag-connect 服务或类或引用/导入,反之亦然。

更新:

当我检查下面的评论时,我尝试创建 sourceSets 并将我的风格重新实现到这些新集合中。但它仍然无法编译。

我还需要知道如何将这些口味与类型和来源结合起来。因为我有两个主要来源:谷歌和华为。然后,我需要 4 种风格用于这些来源,如 googleProd、googleProdTest、googleDev、googleDevTest 和华为相同,并且所有这些都应该具有构建类型调试/发布,以防我想将它们发布到 Google Play 商店进行测试。问题是我需要产品子风味之类的东西。每个华为风味(prod、test、dev、dev-test)将使用华为sourceSet(main+huawei),每个google风味(prod、test、dev、dev-test)将使用google sourceSet(main+google)。这意味着主要来源将是两者通用的代码,并且谷歌/华为来源具有相同片段的不同版本。

所以这些应该是最终的 buildVariants:

  1. googleProd (main+google src)
  2. googleTest (main+google src)
  3. googleDev (main+google src)
  4. googleDevTest (main+google src)
  5. huaweiProd (main+huawei src)
  6. huaweiTest (main+huawei src)
  7. huaweiDev (main+huawei src)
  8. huaweiDevTest (main+huawei src)

以及所有 8 个版本的发布/调试构建类型。总共有 16 个变体。

这意味着我需要知道如何将 src 与 , 和 flavor 合并google,并将 src 与,和 flavor合并,prod所以我不需要4 个相同的 huawei Fragment和4 个对所有口味都相同的 google Fragment。它应该像抽象类/父类一样工作。testdevdev-testhuaweihuaweiProdhuaweiTesthuaweiDevhuaweiDev-test

代码梯度:

0 投票
1 回答
54 浏览

java - 如何在android多风味项目中使用相同的类但不同的实现

我有3种口味。

风味1

风味2

风味3

和 MainActivity 适用于所有口味。我希望风味 1 和风味 2 的实现相同,风味 3 的实现不同。如果我在 flavor3/java/com/sample/MainActivity 中添加单独的 MainActivity,它会显示“在文件中找到重复的类”并且文件夹结构如下。

主/java/com/sample/MainActivity

风味1

风味2

flavor3/java/com/sample/MainActivity

我需要添加所有口味的 MainActivity 吗?

喜欢 :

主要的/

flavor1/java/com/sample/MainActivity

flavor2/java/com/sample/MainActivity

flavor3/java/com/sample/MainActivity

但是每次我必须在风味1发生变化时更新并在风味2中进行更改时都这样做。有什么解决办法吗?