【问题标题】:Having trouble creating Gradle flavors for different manifests in a single app在单个应用程序中为不同清单创建 Gradle 风格时遇到问题
【发布时间】:2015-07-09 00:11:17
【问题描述】:

我正在关注 these instructions 创建风味,Android Studio 一直抱怨找不到 /path/to/my/project/app/src/main

根据指示,我有一个名为 portrait 的文件夹和一个名为 landscape 的文件夹,而不是 ma​​in 换句话说

/path/to/my/project/app/src/portrait/[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(没有这个 文件或目录)

我尝试过使用目录结构,但无法清除此投诉。我完全不清楚它为什么要寻找“主要”……它从哪里得到该指令?

【问题讨论】:

    标签: android android-studio gradle android-productflavors


    【解决方案1】:

    main sourceSet 不是可选的,您所有的 java 代码和资源都应该放在那里。只有风味特定的代码和资源应该适合您的风味。然后Gradle会根据http://tools.android.com/tech-docs/new-build-system/resource-merging合并它们

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

    【讨论】:

    • 我明白了……好吧,那么,我应该把不同风味的清单放在哪里?我试过改变它们,但我尝试的所有东西都抱怨说它找不到清单文件,除非它就在 main 下......那么,我如何获得其中的 2 个?
    • 你必须在“main”下有一个AndroidManifest.xml,即“src/main/AndroidManifest.xml”。在这里,您定义了大部分组件。如果你想定义一些特定于你的风格的组件,你可以放另一个 AndroidManifest.xml,例如“src/portrait/AndroidManifest.xml”。在这里您只定义风味特定的活动,因为清单将被合并。因此,合并后的清单将包含来自所选风味的两个组件 + 来自 main 的组件
    • 我不确定您是否应该在您的案例中使用风味,因为风味名称对我来说看起来有点混乱。当您选择构建类型 + 产品风味的构建变体时,您指定什么您想用来构建您的 apk 的变体。这意味着您将不得不为肖像和风景构建不同的 apk 文件,因为您的风格是以这种方式命名的。您确定这是您想要的吗?
    • 是的,这实际上正是我想要的 - 这是一个“构建块”应用程序,我将其用作各种应用程序的起点。当我将它迁移到新的生活时,我正在尝试减少我需要做的配置量。但是,它们自己的风味目录下的单独清单文件似乎也不快乐。但这是一个全新的错误,所以,我会处理它。
    • 另外,在这里查看合并清单的示例:stackoverflow.com/questions/31061546/…
    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多