标签: android-build-flavors

gradle:仅针对特定风味应用插件

我的Android gradle目前为使用不同的推送服务设置了风味维度.(一个用于baidu推送,一个用于GCM)我想让我的Android应用程序仅导入google-servicesGCM推送构建风格.有可能吗?

PS因为为了在Android中使用GCM,我要补充的apply plugin: 'com.google.gms.google-services'线在我的应用程序/文件的build.gradle的底部详见这里.

作为一个解决方案,为了让百度味道成功建立,我可能需要google-services.json为百度放置一个假人.

更新: 我似乎在这个长github问题线程中找到答案.

android android-gradle-plugin android-build-flavors android-flavordimension

19
推荐指数
2
解决办法
2150
查看次数

Android用于发布和调试版本的单独字符串值

每次我发布我的应用程序时,我都会将所有的url字符串和一些从测试更改为生产.我这样做的方法就是在发布之前注释掉测试字符串.有没有更好的方法来处理基于构建类型的字符串?

android gradle android-build android-build-flavors

18
推荐指数
2
解决办法
9861
查看次数

基于Gradle中多风味库的单味模块

我正在研究多种口味app.(下面的gradle文件)

它使用一个名为的库tracker,遵循相同的风格internalexternal

现在,对于棘手的部分,来一个名为的新模块feature,这个没有味道,但它需要trackeras依赖

app.gradle:

android {

    buildTypes {
        debug {
        }
        release {
        }
    }

    flavorDimensions "target"

    productFlavors {
        internal {
            dimension "target"
        }

        external {
            dimension "target"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

tracker.gradle:

android {

    publishNonDefault true

    buildTypes {
        release {
        }
        debug {
        }
    }

    flavorDimensions 'target'

     productFlavors {
        internal {
            dimension "target"
        }

        external {
            dimension "target"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

feature.gradle:

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        compileSdkVersion …
Run Code Online (Sandbox Code Playgroud)

android gradle build.gradle android-productflavors android-build-flavors

11
推荐指数
1
解决办法
2325
查看次数

根据口味在Android Studio中显示布局

我在Android Studio中有一个项目,该项目针对不同的颜色使用不同的风格(也有其他一些东西,但没关系)。

我想看看某个UI元素(全部由xml文件定义)如何具有非默认样式?

假设我必须调味,风味A是默认的,风味B不是。假设风味A主色为红色,风味B主色为绿色。

当我打开布局时,无论在构建变体中选择哪种样式,它们都将始终显示为红色。

我敢肯定有办法做到这一点,但我不知道怎么做。

Edit1:似乎我没有解释它(认为它是隐式的)。我的口味资源文件已经在不同的文件夹中。资源文件中的颜色具有相同的名称。那不是问题,问题是我看不到Android Studio内部布局中的颜色。

颜色位于单独的文件夹中,并且可以正常工作。当我构建和安装调味剂时,它们会使用它们的颜色。但是当我打开布局时,它总是在Android Studio中以默认颜色显示

android android-layout android-build-flavors

11
推荐指数
1
解决办法
543
查看次数

React-Native productFlavors(错误类型3:活动类不存在)

我想在productFlavors我的Android App中使用2 :livestaging.

app/build.grandle我定义他们是这样的:

defaultConfig {
    applicationId "com.some.id"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}
splits {...}
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
    debug {
        debuggable true
        minifyEnabled false
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }

    productFlavors {
        live {
            applicationId "com.some.id"
        }
        staging {
            applicationId "com.some.id.staging"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行react-native run-android --variant=liveDebug一切正常,但当我尝试运行时,react-native run-android --variant=stagingDebug我得到错误:

Installed on 1 device. …
Run Code Online (Sandbox Code Playgroud)

gradle react-native android-build-flavors react-native-android

10
推荐指数
4
解决办法
2193
查看次数

不同构建变体中的不同代码

我的应用程序中有两个构建变体,一个是标准应用程序版本,第二个是自定义应用程序.

productFlavors {
        customConfig {
            minSdkVersion 14
            applicationId 'es.com.custom'
            targetSdkVersion 22
            versionCode 3
            versionName '3.0.0'
        }
        standard {
            minSdkVersion 14
            applicationId 'es.com.standard'
            targetSdkVersion 22
            versionCode 3
            versionName '3.0.0'
        }
Run Code Online (Sandbox Code Playgroud)

对于自定义,我必须实现新功能,但仅用于自定义,因此标准版本将不提供这些新功能.我不确定我该做什么.

1.-两个类,一个具有标准要求,一个具有定制要求
2.-在标准类中执行以下操作:

  if (getPackageName()==customConfig )
    // do the custom things
    else
    //do the standard things
Run Code Online (Sandbox Code Playgroud)

android android-productflavors android-build-flavors

8
推荐指数
1
解决办法
3026
查看次数

尝试使用风味时 Flutter 应用程序构建失败

我正在尝试在我的应用程序中使用风味。我遵循了各种指南,但每次都因同样的问题而无法构建。(因为基本上每个博客文章和 SE 问题都引用相同的文章和资源,所以我不会再这样做了)

为了调试,我决定简化问题并启动一个新项目(正常示例项目),并添加风味,每种风味只有一个元素:应用程序。这有效。各种其他更复杂的属性,例如使用 res/values/strings.xml 作为应用程序标签也可以正常工作。

然后,我使用我的应用程序尝试了最简单的风味设置,其中的grade.build如下所示,然后很快就失败并出现相同的错误。

flavorDimensions "app"
productFlavors {
    dev {
        dimension "app"
    }
    qa {
        dimension "app"
        applicationId "com.example.app1"
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:我还使用单独的入口点来实现运行时配置。这按预期工作并且已经使用了一段时间。

johan@komp:~/AndroidStudioProjects/parent_lite$ flutter run --flavor qa -t lib/main-qa.dart
Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering".
Launching lib/main-qa.dart on Android SDK built for x86 in debug mode...
Initializing gradle...                                              0.4s
Resolving dependencies...                                           1.2s
Running Gradle task 'assembleQaDebug'...                                
Running Gradle task 'assembleQaDebug'... Done                       1.1s …
Run Code Online (Sandbox Code Playgroud)

build android-productflavors flutter android-build-flavors

8
推荐指数
1
解决办法
1万
查看次数

Android,Gradle,产品口味和清单

build.gradle,我有产品口味设置:

productFlavors
{
    AlternateFlavour
    {
        applicationId "com.myapp.alternateflavour"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在sourceSets部分中,我为这些风格使用不同的资源,资产和清单目录:

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }

    AlternateFlavour {
        manifest.srcFile 'manifest-tmp/AlternateFlavour/AndroidManifest.xml'
        java.srcDirs = ['src']
        res.srcDirs = ['res-tmp/AlternateFlavour']
        assets.srcDirs = ['assets-tmp/AlternateFlavour']
        }
   }
Run Code Online (Sandbox Code Playgroud)

好到目前为止.

在那个由部分自动生成的风味使用的清单中,我有:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myapp.myapp"
    android:versionCode="1010001"
    android:versionName="V1.1.0.1" >
Run Code Online (Sandbox Code Playgroud)

但在根项目的原始清单中如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myapp.myapp"
    android:versionCode="1010000"
    android:versionName="V1.1.0.DEBUG" >
Run Code Online (Sandbox Code Playgroud)

这会导致Gradle失败:

Error:
    Attribute manifest@versionCode value=(1010001) from AndroidManifest.xml:4:5-28
    is also present at AndroidManifest.xml:4:5-28 value=(1010000).
Attributes of <manifest> …
Run Code Online (Sandbox Code Playgroud)

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

7
推荐指数
1
解决办法
3314
查看次数

在一次 Sonarquebe 分析中涵盖所有 gradle 风格

是否可以对所有口味进行一次声纳分析?我有一个多风格的 Android 项目,其中不同风格文件夹中的某些文件有不同的实现。这些文件在风味测试文件夹中有相应的测试。所以在示例中我的 src 结构是:

/main/java/../ConfigurationService.kt
/flavor1/java/../ConfigurationService.kt
/flavor2/java/../ConfigurationService.kt
/test/java/../ConfigurationServiceTests.kt
/testFlavor1/java/../ConfigurationServiceTests.kt
/testFlavor2/java/../ConfigurationServiceTests.kt
Run Code Online (Sandbox Code Playgroud)

现在我可以使用,sonarqube.androidVariant但这会让我一次只能配置一个变体,所以如果我想检查第二种风格的分析,我需要使用不同的设置再次运行该任务,而这在 Gitlab CI 中无法显示多个变体分析。我能够在运行声纳之前配置单独的 jacoco 任务来生成所有类型的覆盖率报告。然后我尝试将源目录添加到 sonarplugin,如下所示:

sonarqube {
    properties {
            //standard plugin configuration
            android.libraryVariants.each { variant ->
                if (variant.buildType.name != "debug") return //we run sonar only on debug
                def variantName = variant.name
                def flavorName = variant.flavorName
                properties["sonar.sources"] += "./src/${flavorName}/"
                properties["sonar.tests"] += "./src/test${flavorName.capitalize()}"
                // and so on for binaries, jacoco report paths etc.
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这最终会出现错误:

ConfigurationService.kt can't be indexed twice. Please check that inclusion/exclusion patterns …
Run Code Online (Sandbox Code Playgroud)

gradle sonarqube android-productflavors android-build-flavors

7
推荐指数
0
解决办法
487
查看次数

react-native-config 在发布版本中不起作用

我使用react-native-config来支持多个版本的多种风格。我还创建了多个 .env 文件,所有调试版本都能够访问它并获取配置。调试版本中没有问题,但是当涉及发布版本时,他们无法从 env 文件中获取配置。我尝试烘烤配置,它显示空字符串。

android release proguard react-native android-build-flavors

7
推荐指数
1
解决办法
4158
查看次数