Android 在单个应用程序中为不同的清单创建渐变风格时遇到问题

Android 在单个应用程序中为不同的清单创建渐变风格时遇到问题,android,android-studio,gradle,android-productflavors,Android,Android Studio,Gradle,Android Productflavors,我一直在关注如何创造口味,安卓工作室一直抱怨它找不到 /路径/to/my/project/app/src/main 根据方向,我有一个名为“纵向”的文件夹和一个名为“横向”的文件夹,而不是“主” 换句话说 /path/to/my/project/app/src/trait/[res,java,assets,AndroidManifest.xml] 及 /path/to/my/project/app/src/landscape/[res,java,assets,AndroidManifest.xm

我一直在关注如何创造口味,安卓工作室一直抱怨它找不到 /路径/to/my/project/app/src/main

根据方向,我有一个名为“纵向”的文件夹和一个名为“横向”的文件夹,而不是“主” 换句话说

/path/to/my/project/app/src/trait/[res,java,assets,AndroidManifest.xml]

/path/to/my/project/app/src/landscape/[res,java,assets,AndroidManifest.xml]

我的gradle文件包含:

productFlavors {
    portrait {
        applicationId "com.my.project"
        versionName "1.0-portrait"
    }
    landscape {
        applicationId "com.my.project"
        versionName "1.0-landscape"
    }
}
然而,当我尝试做这个项目时,我得到了

错误:原因:java.io.FileNotFoundException: /Users/me/git/MY/PROJECT/app/src/main/AndroidManifest.xml(没有这样的 文件或目录)


我试过摆弄目录结构,但无法解决这个问题。我完全不清楚它为什么要找“main”。。。它从哪里得到指令的

mainsourceSet不是可选的,所有java代码和资源都应该放在那里。只有特定于味道的代码和资源才能用于您的味道。然后Gradle将根据


所以,如果您没有
main
,Gradle会抱怨。

我明白了。。。好的,那么,我把不同口味的舱单放在哪里呢?我试着转移它们,但我尝试的每件事都抱怨说,它找不到清单文件,除非它就在主目录下。。。那么,如何获得其中的两个呢?您必须在“main”下有一个AndroidManifest.xml,即“src/main/AndroidManifest.xml”。这里定义了大多数组件。如果您想定义一些特定于您的口味的组件,您可以放置另一个AndroidManifest.xml,例如“src/ratio/AndroidManifest.xml”。这里您只定义特定于味道的活动,因为清单将被合并。因此,合并清单将包含来自选定flavor+来自Main的组件的两个组件。不过,我不确定您是否应该在您的案例中使用flavor,因为我觉得flavor名称有点混乱。。当您选择构建类型+产品风格的构建变体时,您可以指定要用于构建apk的变体。这意味着您必须为portait和横向构建不同的apk文件,因为您的风格是这样命名的。。你确定这就是你想要的吗?是的,这正是我想要的-这是一个“积木”应用程序,我用它作为各种应用程序的起点。我正试图减少在将其迁移到新生命中时所需的配置量。然而,在它们自己的风格目录下的单独清单文件看起来也不开心。但这是一个全新的错误,因此,我将处理它。另外,请看这里的合并清单示例: