0

我在同一个代码库中有两个应用程序。他们使用相同的 java 文件并保存 res 文件,但 value 和 drawable 文件夹除外,它们具有相同的文件和文件名但内容不同。

我遇到的问题是,当我的 Gradle 构建时,我遇到了问题,因为我使用 RI 的任何地方都有错误

Cannot resolve symbol R

我的 build.gradle 文件如下所示(为简洁起见,省略了一些设置):

android {
    signingConfigs {
        // left out
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    useLibrary 'org.apache.http.legacy'
    lintOptions {
        disable "ResourceType"
    }
    defaultConfig {
        applicationId = "com.au.testapp"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode = 1
        buildConfigField 'String', 'app_ver_numb', '"1.00"'
        multiDexEnabled = true
    }
    sourceSets {
        main {
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            assets.srcDirs = ['assets']
            res.srcDirs = ['res/main']
            manifest.srcFile 'AndroidManifest.xml'
        }

        flavorone{
            res.srcDirs = ['res/flavorone']
        }

        flavortwo{
            res.srcDirs = ['res/flavortwo']
        }

        instrumentTest.setRoot('tests')
    }

    productFlavors {
        flavorone {
            applicationId "com.au.testapp.flavorone"
            versionName = "''"
            buildConfigField 'String', 'app_id', '"79"'
        }
        flavortwo {
            applicationId "com.au.testapp.flavortwo"
            versionName = "''"
            buildConfigField 'String', 'app_id', '"79"'
        } 
    }

    buildTypes {
        debug {
            productFlavors.flavorone.signingConfig signingConfigs.flavorone
            productFlavors.flavortwosigningConfig signingConfigs.flavortwo 
        }
        release {
            productFlavors.flavorone.signingConfig signingConfigs.flavorone
            productFlavors.flavortwo.signingConfig signingConfigs.flavortwo 

            minifyEnabled true
            shrinkResources true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }
}

我的文件夹结构如下所示:

src
    com
        au
            testapp
                adapter
                utils
                db
                common
                ...
res
    main
        anim
        animator
        ...
        drawable
        layout
        values
        ...
    flavorone
        drawable
        values
    flavortwo
        drawable
        values

当我在 Gradle 中构建它时,我没有收到任何错误,但是当我构建项目时,我的 java 文件都有错误,因为它们找不到 R.. 我猜这与包名不存在有关由于我的构建风味设置而正确。

有任何想法吗?

4

3 回答 3

1

大多数情况下,这是由于 XML 文件错误造成的。XML 文件可以是布局文件、值文件或清单文件。

1)检查您的xml文件。

import android.R.*;2)像这样或像这样导入Rimport com.au.testapp.R;

3)清理项目并重建

于 2016-06-29T03:33:14.337 回答
1

好的,既然我的挑剔已经完成,这是我对答案的实际尝试:

我认为问题在于您在 res/. 如果你看这篇文章,你会发现风味特定的资源应该放在 src/flavorName/res 目录中,而不是你拥有的 res/flavorname 目录中。

当你这样做的时候,继续从你的源集闭包中删除风味闭包。只要目录名称与风味名称匹配并且您遵循文件夹的规范组织,您就不需要为风味定义源集。

于 2016-06-29T04:13:59.810 回答
0

我没有足够的声誉来发表评论,所以我必须回答。

您在 res 中的目录实际上是否称为“flavor1”,而您在 build.gradle 中使用的目录名称称为“flavorone”?我在您的帖子中注意到了这一点,但我不确定您的项目中是否确实如此。如果是这样,它可能会导致问题。

于 2016-06-29T03:52:51.140 回答