Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle:如何将Java项目风格依赖资源包含到Android APK中?_Java_Android_Resources_Dependencies_Gradle - Fatal编程技术网

Gradle:如何将Java项目风格依赖资源包含到Android APK中?

Gradle:如何将Java项目风格依赖资源包含到Android APK中?,java,android,resources,dependencies,gradle,Java,Android,Resources,Dependencies,Gradle,我有一些仅限Resources的Java项目具有build.gradle: 和目录结构: flavor1/ src/ main/ resources/ assets/ file1.png flavor2/ src/ main/ resources/ assets/ file1.png android_project/ assets/ assets-flavor1/

我有一些仅限Resources的Java项目具有build.gradle:

和目录结构:

flavor1/
  src/
    main/
      resources/
        assets/
          file1.png
flavor2/
  src/
    main/
      resources/
        assets/
          file1.png
android_project/
  assets/
  assets-flavor1/
  assets-flavor2/
  res/
  res-flavor1/
  res-flavor2/
  src/
    main/
      java/
        com/
          ...
还有另一个项目(这次是Android)和build.gradle:

android {
  compileSdkVersion 19
  buildToolsVersion "19"

  defaultConfig {
    minSdkVersion 9
    targetSdkVersion 19
  }

  productFlavors {
    flavor1 {
      packageName "com.mydomain.flavor1"
    }

    flavor2 {
      packageName "com.mydomain.flavor2"
    }
  }

  sourceSets {
    main {
      manifest.srcFile 'AndroidManifest.xml'
      res.srcDirs = ['res']
      assets.srcDirs = ['assets']
      java.srcDirs = ['src/main/java']
    }
    flavor1 {
      res.srcDirs = ['res-flavor1']
      assets.srcDirs = ['assets-flavor1']
    }
    flavor2 {
      res.srcDirs = ['res-flavor1']
      assets.srcDirs = ['assets-flavor2']
    }
  }
}

dependencies {
  flavor1Compile project(':flavor1')
  flavor2Compile project(':flavor2')
}
具有目录结构:

flavor1/
  src/
    main/
      resources/
        assets/
          file1.png
flavor2/
  src/
    main/
      resources/
        assets/
          file1.png
android_project/
  assets/
  assets-flavor1/
  assets-flavor2/
  res/
  res-flavor1/
  res-flavor2/
  src/
    main/
      java/
        com/
          ...
问题是来自普通Java项目:flavor1和:flavor2的资源没有包含在生成的APK中。如果我将它们作为全局依赖项包括:

dependencies {
  compile project(:flavor1)
}
它们包含在APK罚款中

这些普通Java项目的原因是,它们既是Android项目风格的资源,也是其他项目(iOS、HTML、Java,问题中没有描述)的资源,所以我不能将它们直接包含在Android项目资产中


您能帮助我吗?

您能显式地将路径添加到Java项目资源文件夹吗

flavor1 {
  res.srcDirs = ['res-flavor1']
  assets.srcDirs = ['assets-flavor1', '$java-project-root/flavor1/src/main/resources/assets']
}

这并不理想,但应该可以使用。

每种风格都会创建一个关联的依赖项配置对象,因此您可以执行以下操作:

dependencies {
    flavor1Compile project(':flavor1')
    flavor2Compile project(':flavor2')
}

这将在正确的变体中打包正确的资产。

是的,请仔细查看我的问题。这确实适用于Java项目,但不适用于Android项目。也就是说,使用了项目依赖关系(源等),但资源文件不包括在生成的APK中。从另一个答案中,我推断您希望将它们作为资产而不是资源(您的问题不清楚)。是吗?是的,我认为在Android的情况下,它们是同义词。基于风格的依赖关系也适用于库项目吗?这确实有效!虽然必须使用相对或绝对路径,所以我编辑了你的文章。谢谢。嗯,不幸的是,这中断了对Android Studio和IntelliJ的导入,错误是:无法注册“SOURCE”类型的给定路径,因为它超出了内容根目录。有什么线索可以修复吗?安卓Studio 0.5已经修复了!万岁!