所有风味现在都必须属于一个命名的风味维度 Android Studio NDK

Posted

技术标签:

【中文标题】所有风味现在都必须属于一个命名的风味维度 Android Studio NDK【英文标题】:All flavors must now belong to a named flavor dimension Android Studio NDK 【发布时间】:2018-11-25 20:58:57 【问题描述】:

今天我有一个源项目,当我想同步时出现这个错误

所有风味现在必须属于一个命名风味维度

我对模块级的产品风味

产品风味 armv7 ndk abiFilter "armeabi-v7a" 版本代码 = 1

我试着把这些代码放在上面

flavorDimensions “默认”

flavorDimensions "versionCode"

我的 build.gradle 代码:

应用插件:'com.android.application' 存储库 mavenCentral() 中心() maven url "https://jitpack.io" 配置 implementation.exclude 模块:'support-v4' 依赖 实施 'com.google.android.gms:play-services-gcm:10.2.0' 实施 'com.google.android.gms:play-services-maps:10.2.0' 实施 'com.google.android.gms:play-services-vision:10.2.0' 实施 'com.android.support:support-core-ui:25.3.1' 实施 'com.android.support:support-compat:25.3.1' 实施 'com.android.support:support-core-utils:25.3.1' 实施 'com.android.support:support-v13:25.3.1' 实现 'com.android.support:palette-v7:25.3.1' 实施 'net.hockeyapp.android:HockeySDK:4.1.2' 实现 'com.googlecode.mp4parser:isoparser:1.0.6' 实现 'com.stripe:stripe-android:2.0.2' // 电报 实现 'com.android.support:multidex:1.0.1' 实施 'com.android.support:design:25.3.1' 实施 'com.android.support:cardview-v7:25.3.1' 实现文件('libs/android-viewbadger.jar') 实现文件('libs/ksoap2-android-assembly-3.1.1-jar-with-dependencies.jar') // 实现 'co.ronash.android:push-base:1.2.0' 实施 'com.onesignal:OneSignal:3.+@aar' 实现 'com.github.QuadFlask:colorpicker:0.0.12' // 下载、捕获等...图像 实施 'com.squareup.picasso:picasso:2.5.2' 安卓 compileSdkVersion 27 buildToolsVersion '27.0.3' useLibrary 'org.apache.http.legacy' defaultConfig.applicationId = "ir.imodares.telegraf" defaultConfig.manifestPlaceholders = [onesignal_app_id:“639e4454-4b40-4b07-a35d-eb24786b14bf”, // 从仪表板中提取的项目编号,本地值被忽略。 onesignal_google_project_number:“1039318212221”] sourceSets.main.jniLibs.srcDirs = ['./jni/'] 外部原生构建 ndkBuild 路径“jni/Android.mk” dex 选项 巨型模式 = 真 lintOptions checkReleaseBuilds 错误 // 或者,如果您愿意,您可以继续检查发布版本中的错误, // 但即使发现错误也要继续构建: 中止错误错误 编译选项 sourceCompatibility JavaVersion.VERSION_1_7 目标兼容性 JavaVersion.VERSION_1_7 签名配置 调试 storeFile 文件(“config/release.keystore”) 商店密码“PASS” 密钥别名“KEY” 密码“通过” v2SigningEnabled 假 发布 storeFile 文件(“config/release.keystore”) 商店密码“PASS” 密钥别名“KEY” 密码“通过” v2SigningEnabled 假 构建类型 调试 可调试真 jniDebuggable true 签名配置签名配置.debug 发布 可调试错误 jniDebuggable false 签名配置 签名配置.release 缩小启用真 收缩资源假 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 福斯 可调试错误 jniDebuggable false 签名配置 签名配置.release defaultConfig.versionCode = 2000 sourceSets.debug manifest.srcFile 'config/debug/AndroidManifest.xml' sourceSets.release manifest.srcFile 'config/release/AndroidManifest.xml' sourceSets.foss manifest.srcFile 'config/foss/AndroidManifest.xml' 产品风味 armv7 ndk abiFilter "armeabi-v7a" 版本代码 = 1 applicationVariants.all 变体 -> def abiVersion = variant.productFlavors.get(0).versionCode variant.mergedFlavor.versionCode = defaultConfig.versionCode * 10 + abiVersion 默认配置 minSdkVersion 16 targetSdkVersion 27 版本名称“3.18.0” multiDexEnabled 真 外部原生构建 ndkBuild 参数“NDK_APPLICATION_MK:=jni/Application.mk”、“APP_PLATFORM:=android-16” abiFilters "armeabi-v7a", "x86" 应用插件:'com.google.gms.google-services'

My Project structure

My Project structure

My Project structure

My Project structure

【问题讨论】:

【参考方案1】:

见https://developer.android.com/studio/build/build-variants#product-flavors。

如果您声明多个风味,则必须为 armv7 维度明确命名风味。但在这里你不需要超过一个:

flavorDimensions "single-dimension-name-does-not-matter"
productFlavors 
  armv7 
    ndk 
      abiFilter "armeabi-v7a"
    
    versionCode = 1 + defaultConfig.versionCode * 10
  
  all 
    versionCode = defaultConfig.versionCode * 10
  

现在您将获得 6 个 APK:

telegraf-armv7-debug, telegraf-armv7-release, telegraf-armv7-foss, telegraf-all-debug, telegraf-all-release, telegraf-all-foss

带有适当的versionCode。您无需手动使用 applicationVariants

从表面上看,您实际上根本不需要调味剂来完成您的任务。您可以使用splits。在这种情况下,您需要 applicationVariants 正确设置 versionCode ;)

【讨论】:

谢谢。我替换了代码,但现在出现了一些其他错误,我的库无法加载...无法解决:com.android.support:multidex:1.0.2 等... 很可能,这是一个不同的问题。您发布的 build.gradle 指的是 multidex:1.0.1。您可能升级到 1.0.2 是因为某些依赖项也升级了。希望***.com/a/50794342/192373能帮到你。 不只是多 dex,我所有的依赖都有错误,我认为是 20 个库 你觉得跟口味有关吗?如果没有,请打开一个单独的问题,并提供更多信息,例如哪些组件需要 com.android.support:multidex:1.0.2(提醒您,您的项目导入 com.android.support:multidex:1.0.1 值得注意的是,并非所有版本都与 Android Studio v3.5 同时构建。您需要通过转到Build > Select Build Variant 并在弹出窗口中选择Active Build Variant 下拉菜单来选择要构建的那个。

以上是关于所有风味现在都必须属于一个命名的风味维度 Android Studio NDK的主要内容,如果未能解决你的问题,请参考以下文章

在android studio中build.gradle中使用flavor维度

如何为风味维度组合配置 Firebase App Distribution?

Android Studio gradle 风味维度构建变体无法正常工作

将风味图放在布局的ImageView中

Flutter:将风味配置添加到 Visual Studio

风味“nativescript-ui-listview”具有未知维度“nativescript-ui-listview”