我的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
每次我发布我的应用程序时,我都会将所有的url字符串和一些键从测试更改为生产.我这样做的方法就是在发布之前注释掉测试字符串.有没有更好的方法来处理基于构建类型的字符串?
我正在研究多种口味app.(下面的gradle文件)
它使用一个名为的库tracker,遵循相同的风格internal和external
现在,对于棘手的部分,来一个名为的新模块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
我在Android Studio中有一个项目,该项目针对不同的颜色使用不同的风格(也有其他一些东西,但没关系)。
我想看看某个UI元素(全部由xml文件定义)如何具有非默认样式?
假设我必须调味,风味A是默认的,风味B不是。假设风味A主色为红色,风味B主色为绿色。
当我打开布局时,无论在构建变体中选择哪种样式,它们都将始终显示为红色。
我敢肯定有办法做到这一点,但我不知道怎么做。
Edit1:似乎我没有解释它(认为它是隐式的)。我的口味资源文件已经在不同的文件夹中。资源文件中的颜色具有相同的名称。那不是问题,问题是我看不到Android Studio内部布局中的颜色。
颜色位于单独的文件夹中,并且可以正常工作。当我构建和安装调味剂时,它们会使用它们的颜色。但是当我打开布局时,它总是在Android Studio中以默认颜色显示
我想在productFlavors我的Android App中使用2 :live和staging.
在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
我的应用程序中有两个构建变体,一个是标准应用程序版本,第二个是自定义应用程序.
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) 我正在尝试在我的应用程序中使用风味。我遵循了各种指南,但每次都因同样的问题而无法构建。(因为基本上每个博客文章和 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.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
是否可以对所有口味进行一次声纳分析?我有一个多风格的 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
我使用react-native-config来支持多个版本的多种风格。我还创建了多个 .env 文件,所有调试版本都能够访问它并获取配置。调试版本中没有问题,但是当涉及发布版本时,他们无法从 env 文件中获取配置。我尝试烘烤配置,它显示空字符串。
android ×7
gradle ×5
react-native ×2
build ×1
build.gradle ×1
flutter ×1
proguard ×1
release ×1
sonarqube ×1