当前位置: 首页 > 知识库问答 >
问题:

Android Studio生成变量问题

章安宜
2023-03-14

我很难让Android Studio构建正确的构建变体--有时甚至让我选择一个构建变体。

基本上,我的项目有两个不同的版本,一个是免费的,一个是“完整的”版本。包ID为“com.mycompany.myproj”和“com.mycompany.myprojfree”。

一旦我指定了“MyProj”和“MyProjFree”风格以及“release”和“debug”buildtypes,Android Studio就会在列表中生成四个变体:myprojDebug、myprojfreeDebug、myprojfreeDebug、myprojfreeRelease和MyProjRelease。

问题是,选择其中之一并不能可靠地选择用于构建、调试等的变体。例如,我将选择myprojDebug,点击Debug,然后myprojfreeDebug将构建(可以在控制台中看到),免费版本将在附加的设备上打开。

而且,有时我甚至无法在“构建变体”窗格中选择一个或多个构建变体。我可以点击它,但它不会改变。但有时,如果我先把它改成别的东西,它会让我回去改不变的那个。

我看到过类似问题的帖子,并遵循了所有的建议-- 清理、重建、删除.idea、删除构建文件夹、无效缓存/重启、删除app.iml等等-- 都没有用。

值得注意的是,在昨天我从Android Studio3.1更新到3.4.1之前,所有这些都运行良好。

下面是我的应用程序构建的简化版本。Gradle:

apply plugin: 'com.android.application'

android {
    defaultConfig {
        versionCode ...
        multiDexEnabled true
        vectorDrawables {
            useSupportLibrary true
        }
        minSdkVersion 15
        targetSdkVersion 28
    }

    compileSdkVersion 28

    signingConfigs {
        myproj {
            keyAlias ...
            keyPassword ...
            storeFile file('...')
            storePassword ...
        }
        myprojfree {
            keyAlias ...
            keyPassword ...
            storeFile file('...')
            storePassword ...
        }
    }

    flavorDimensions "tier"

    productFlavors {
        myproj {
            signingConfig signingConfigs.myproj
            applicationId 'com.mycompany.myproj'
        }
        myprojfree {
            signingConfig signingConfigs.myprojfree
            applicationId 'com.mycompany.myprojfree'
        }
    }

    buildTypes {
        release {
            debuggable false
            buildConfigField "Boolean", "MY_DEBUG_MODE", "false"
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            gradle.projectsEvaluated {
                tasks.withType(JavaCompile) {
                    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
                }
            }
        }
        debug {
            debuggable true
            buildConfigField "Boolean", "MY_DEBUG_MODE", "true"
            gradle.projectsEvaluated {
                tasks.withType(JavaCompile) {
                    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
                }
            }
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
    }

    configurations {
        implementation.exclude group: "org.apache.httpcomponents", module: "httpclient"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    ...
}

共有1个答案

谢烨烨
2023-03-14

我很确定问题来自于文件和分级同步之间的不同步

在修改了构建变量之后,“file/sync Project with Gradle files”也是如此。然后清理项目,重建和运行。

 类似资料:
  • 我导入了一个项目到(使用从项目本身)。它为其他人工作,但我最终会遇到这样的问题: 这里是gradle依赖的要点 https://gist.github.com/vineelya/d882bbd0885fafba785ca58f106dfc8b线程“main”java中出现异常。lang.NoSuchMethodError:com。fasterxml。杰克逊。果心杰森工厂。requireProper

  •   - a - addr : rt_i2c_bus_device , rt_i2c_msg ai_addr : addrinfo ai_addrlen : addrinfo ai_canonname : addrinfo ai_family : addrinfo ai_flags : addrinfo ai_next : addrinfo ai_protocol : addrinfo ai_soc

  • 问题内容: 如何将两个正则表达式模式构造为一个? 例如,我有一个长模式,一个小模式,我需要在长模式前面放一个小模式。 这行不通。当我连接字符串时,所有的斜杠都消失了。 问题答案: 您必须使用: 当我连接字符串时,所有的斜杠都消失了。 如果您的模式中有反斜杠以转义特殊的正则表达式字符(如),则必须在字符串中使用两个反斜杠(因为是字符串中的转义字符):与相同。 因此,您的模式必须变为:

  •   - y - y : rt_device_rect_info

  •   - x - x : rt_device_rect_info xfer : rt_spi_ops

  •   - w - waiting_list : rt_wqueue wakeup : rt_wqueue_node width : rt_device_graphic_info , rt_device_rect_info wktime : rt_alarm , rt_alarm_setup work_current : rt_workqueue work_data : rt_work work_fu