标签: android-productflavors

对于多维口味,如何禁用某些组合?

我的 Android 项目有两个风味维度,但某些变体(某些维度组合)没有意义,因此我想禁用/忽略它们。

此外,对于某些变体,我不希望同时使用调试和发布构建类型(一种就足够了,因为这些变体仅供内部使用)。

如何实现这两者呢?

android android-gradle-plugin android-productflavors

4
推荐指数
1
解决办法
1222
查看次数

如何根据口味自动更改绘图?

我正在开发一个非常混乱的应用程序,并且是第一次使用口味。应用程序有 4,5 种口味,全部具有相同的背景颜色、绘图等。只有徽标不同。

现在我必须制作一种布局完全不同的新口味。背景颜色应该是黄色而不是灰色,可绘制图像应该是黑色而不是白色。问题是,我有大约 100 张不同的白色图像。有什么办法可以自动将它们更改为黑色吗?(设计者可以将它们重新绘制为黑色,我可以将它们放入该风格的可绘制文件夹中)或者我必须以编程方式检查是否使用了新风格,然后在每个使用白色可绘制的小部件上调用 setDrawable(newBlackImage) ?这似乎是一种非常复杂的方法,因为所有可绘制对象都是通过 XML 布局设置的。

他们使用flavor的方式是创建资源bool文件,然后检查代码是否某个键的值为true/false,然后隐藏/显示一些东西......所以我认为我应该做类似的事情,或者不?

这就是我的一种风格的项目结构:

在此输入图像描述

如您所见,每种口味只有不同的启动器和登录屏幕图标。此外,每个都有自己的数组、布尔值和字符串资源文件。但它们都共享相同的布局资源和带有白色图标的绘图。

android android-productflavors android-build-flavors android-flavors

4
推荐指数
1
解决办法
3999
查看次数

无法更改构建变体

当我在 2019 年使用 android studio 3.5 更改项目中的变体时,我无法从 Active Build Variants 进行更改。我通过删除项目的 .idea 和 Build 文件夹并以新方式更改 Active Build Variants 中的 Varieties 解决了这个问题。

**2019 年:

项目构建 Gradle:3.5.3

安卓工作室:3.5**

通过保持相同的 Build Gradle 和相同的产品 Flavors 配置,我无法在项目中以任何方式更改 Active Build Variants 中的 Variants。这是之前配置和当前配置的唯一区别

**2020 年:

项目构建 Gradle:3.5.3

安卓工作室:4.0.1**

有没有人使用过最近的构建变体?这种问题的大概原因是什么?

构建变体

产品风味

android android-studio build.gradle android-productflavors build-variant

4
推荐指数
1
解决办法
1678
查看次数

在Google Play上管理Android应用程序风格

我刚刚为我的应用程序创建了2种口味:分段和制作.

一切似乎都适用于两种口味,所以现在我想上传我的暂存版本apk(签名),以便测试人员可以测试它.

因为我的登台应用程序有不同的applicationId:

    stage {
        applicationId defaultConfig.applicationId + ".stage"
        versionName defaultConfig.versionName + "-stage"
        resValue "string", "app_name", "MyApp Staging"
    }
Run Code Online (Sandbox Code Playgroud)

我是否需要在控制台播放控制台中创建一个新的应用程序并将此apk部署到新版本,或者有没有办法使用相同的应用程序?

现在,当我尝试上传暂存版本应用时,我收到以下错误:

Upload failed
Your APK needs to have the package name com.my.app.
Run Code Online (Sandbox Code Playgroud)

android google-play android-productflavors

3
推荐指数
1
解决办法
1239
查看次数

是否有机会在 android 中更改构建变体运行时间

我使用产品风格来构建不同的应用程序。如果我在运行应用程序之前在构建变体中选择免费风格,则免费风格将运行,如果我选择付费风格,则将运行付费风格。

我想更改运行时间意味着在运行应用程序后,如果我们单击按钮,它必须更改付费应用程序。是否有机会通过编程更改构建变体选择运行时间。

class productFlavors {
    free{

    }

    paid{

    }
}
Run Code Online (Sandbox Code Playgroud)

我用这些作为调味品。

如果有人知道解决方案,请帮助我解决我的问题。

提前致谢。

android android-productflavors android-build-flavors build-variant

3
推荐指数
1
解决办法
621
查看次数

Android,如何排除特定风格的特定权限?

所以我的 android 项目中有 10 个版本:fl1、fl2、...、fl10,具有以下权限。现在我希望我的 fl5 没有android.permission.REQUEST_INSTALL_PACKAGES. 这个怎么做?

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
Run Code Online (Sandbox Code Playgroud)

我知道我可以在fl5/AndroidManifest.xml. 它可以包含此特定构建的任何多余元素。但这可能是错误的根源,因为每次向主清单添加元素时我都应该小心同步。

我搜索并找到了不同的解决方案。但我无法在我的项目中实现它们,因为它们不准确。任何帮助表示赞赏。

这是我的 fl5/AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.mycompany.myapp">

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove"></uses-permission >
Run Code Online (Sandbox Code Playgroud)

这是我的口味文件build.gradle

  productFlavors {
    fl1 {flavorDimensions "in_1"}
    fl2 {flavorDimensions "in_2"}
    fl3 {flavorDimensions "in_3"}
    fl4 {flavorDimensions "in_4"}
    fl5 {flavorDimensions "in_5"}  
    fl6 {flavorDimensions "in_6"}
    fl7 {flavorDimensions "in_7"}
    fl8 {flavorDimensions "in_8"}
    fl9 {flavorDimensions "in_9"}
    fl10 {flavorDimensions "in_10"}       
}
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-productflavors

3
推荐指数
1
解决办法
3134
查看次数

如何在 android 和 ios 的 flutter 中创建多种风格的启动屏幕?

我有什么办法可以为颤振中的多种口味创建不同的启动屏幕吗?

dart android-productflavors flutter

3
推荐指数
1
解决办法
1345
查看次数

味道与图书馆?

我刚看完Xavier Ducrohet关于gradle的演讲,我即将开始使用各种口味.我想了解它们与图书馆相比有哪些优势?

我知道android库可以拥有它自己的清单/资源,当然也有源代码,口味也是如此.但还有什么呢?我为什么要用它们?

android gradle android-productflavors

2
推荐指数
1
解决办法
477
查看次数

Android Flavors - 每个应用程序的独立可绘制目录?

是否可以为每个应用程序提供相同的代码库,但是可以使用不同的可绘制目录?

基本上我想多次使用相同的应用程序,只是重新命名,所以除了可绘制文件夹中的图像外,一切都可以相同.

有任何想法吗?

我希望我的目录结构如下所示:

manifest
java
assets
res
   anim
   animator
   drawables
     main
        drawable
           logo.png
           background.png
           xxx.png
           yyy.png
     flavor1
        drawable
           logo.png
           background.png
     flavor2
        drawable
           logo.png
           background.png
   layout
   menu
   values
   xml
Run Code Online (Sandbox Code Playgroud)

android android-productflavors android-build-flavors

2
推荐指数
1
解决办法
1590
查看次数

在gradle中设置applicationId以获得组合的产品风味

我有两个应用程序productFlavors

flavorDimensions "type", "country"

productFlavors {
    free {
        dimension "type"
    }
    premium {
        dimension "type"
    }
    us {
        dimension "country"
    }
    de {
        dimension "country"
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致四个buildVariants(忽略构建类型)。

现在,我面临的挑战是applicationId为这四个变体设置不同的,但是我不知道该怎么做。我发现真正更改的唯一方法applicationId是在productFlavors定义内,如下所示:

productFlavors {
    free {
        applicationId "some.application.id"
        dimension "type"
    }
Run Code Online (Sandbox Code Playgroud)

但问题是,flavor实际上是freeDe,并且我想applicationId为合并后的那个设置。

我试过了:

productFlavors {
    freeDe {
        applicationId "some.random.id"
    }
Run Code Online (Sandbox Code Playgroud)

productFlavors {
    free {
        de {
            applicationId "some.random.id"
        }
    }
Run Code Online (Sandbox Code Playgroud)

和许多其他组合,但似乎都不起作用。

重要提示:我不能为此使用前置/后缀,因为应用程序ID彼此完全不同:(

非常感谢您的帮助!

谢谢,祝一切顺利!

android build gradle android-productflavors

2
推荐指数
1
解决办法
524
查看次数