【问题标题】:All flavors must now belong to a named flavor dimension Android Studio NDK所有风味现在都必须属于一个命名的风味维度 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

【问题讨论】:

    标签: android android-studio android-ndk


    【解决方案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 是因为某些依赖项也升级了。希望stackoverflow.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 下拉菜单来选择要构建的那个。
    猜你喜欢
    • 2018-05-04
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    相关资源
    最近更新 更多