如何配置变量以同时运行prod和;在同一个Android上调试应用程序?

如何配置变量以同时运行prod和;在同一个Android上调试应用程序?,android,gradle,Android,Gradle,我在build.gradle中添加了以下内容: def applicationId() { "com.rithmio.coach" } def applicationName() { "Coach Rithmio" } defaultConfig { applicationId applicationId() minSdkVersion 19 targetSdkVersion 22 versionCode gitVersion() versionName

我在build.gradle中添加了以下内容:

def applicationId() { "com.rithmio.coach" }
def applicationName() { "Coach Rithmio" }

defaultConfig {
    applicationId applicationId()
    minSdkVersion 19
    targetSdkVersion 22
    versionCode gitVersion()
    versionName "${versionMajor()}.${versionMinor()}.${versionPatch()}"
}

buildTypes {

    debug {
        applicationIdSuffix ".debug"
        resValue "string", "app_name", "Coach (Debug)"

        final CONTENT_AUTHORITY = "${applicationId()}${applicationIdSuffix}.content"
        resValue "string", "content_authority", CONTENT_AUTHORITY

        final ACCOUNT_TYPE = "${applicationId()}${applicationIdSuffix}.account"
        resValue "string", "account_type", ACCOUNT_TYPE

    }

    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        resValue "string", "app_name", "${applicationName()}"

        final CONTENT_AUTHORITY = "${applicationId()}.content"
        resValue "string", "content_authority", CONTENT_AUTHORITY

        // If you're plugging into the account auth system
        final ACCOUNT_TYPE = "${applicationId()}.account"
        resValue "string", "account_type", ACCOUNT_TYPE
    }
}
但这使我的应用程序在调试模式下中断,根类突然不在它们应该在的地方

它正在寻找com.rithmio.coach.debug.mobile类。*但它应该寻找com.rithmio.coach.mobile类*

如何保存和修改此文件以在正确的包中查看

Caused by: java.lang.ClassNotFoundException: 
find class "com.rithmio.coach.debug.mobile.ScrollAwareFabBehavior" 
on path: DexPathList[[zip file "/data/app/com.rithmio.coach.debug-1/base.apk"],
nativeLibraryDirectories=[/data/app/com.rithmio.coach.debug-1/lib/arm,
/vendor/lib, /system/lib]]

我基本上希望在不更改包名的情况下更改applicationid。

如何在构建文件中定义产品风格:-

要定义两种产品风格,请编辑应用程序模块的构建文件以添加以下配置:-

...
android {
    ...
    defaultConfig { ... }
    signingConfigs { ... }
    buildTypes { ... }
    productFlavors {
        demo {
            applicationId "com.buildsystemexample.app.demo"
            versionName "1.0-demo"
        }
        full {
            applicationId "com.buildsystemexample.app.full"
            versionName "1.0-full"
        }
    }
}
...
产品风格定义支持与defaultConfig元素相同的属性。所有口味的基本配置都在defaultConfig中指定,每个口味都会覆盖任何默认值。上面的构建文件使用applicationId属性为每个版本分配不同的包名:因为每个版本定义创建不同的应用程序,所以它们都需要不同的包名

更详细的答案如下:-


您在AndroidManifest中定义了吗?所有类都应该从该包中查看,而不是build.gradleYes中的applicationId,我确实指定了这个。谢谢。我想使用debug和release选项,因为我还必须配置内容提供者和验证器。我很好奇为什么applicationsuffixid不能正确创建包?我认为applicationsuffixid与androi中的包名不同,请阅读这里,并告诉我是否符合您的疑问。这篇文章有意义,包和applicationId是两个独立的东西。所以我不明白为什么我的applicationId会影响类路径名…非常奇怪