【问题标题】:Activity communication between custom flavor packages自定义风味包之间的活动通信
【发布时间】:2016-06-16 12:05:56
【问题描述】:

我想为特定的 gradle 风格使用自定义的 Activity1 类,但是当我尝试从 /main 下的 MyActivity 启动该活动时,它不会将 Activity1 识别为一个类。如何建立这种通信,我应该在清单文件中的哪个位置,/flavor1/main 下包含Activity1?我的项目结构:

|--src/
   |--flavor1/
    |--java/
      |  |--Activity1.java
   |  |--res/
   |     |--layout/
   |     |  |--activity1.xml   
   |--main/
      |--java/
      |  |--MyActivity.java
      |--res/
      |  |--layout/
      |  |  |--activity_main.xml
      |  |--...
      |--AndroidManifest.xml

我在 gradle 中添加:

sourceSets {
    flavor1.java.srcDirs 'src/flavor1/java'
}

MyActivity 来自/main 我得到:

无法解析符号 Activity1

附:作为替代方法可能是使用广播接收器 byun 我不确定这是否是一个好方法

【问题讨论】:

    标签: android android-gradle-plugin build.gradle android-productflavors


    【解决方案1】:

    确保在Build Variants 窗口中选择了flavor1 特定的构建变体。 (Android Studio 中的左下角)。选择名称中包含单词flavor1 的任何构建变体,您将在flavor1 源集中看到这些类。如果选择了另一个风味变体,则只有该风味源集中的类是可解析的。

    【讨论】:

    • 我正在这样做,但我的班级仍然无法解决
    • 您的错误信息是什么样的?当你指向未解析的类名时
    • 如果您已经拥有与风味名称相同的目录和正确的文件夹结构,则无需指定 srcDirs。去掉 srcDirs 的显式赋值,然后试试。
    • @AndroidMechanic 删除了,clean&rebuild,问题还是一样
    • 这很奇怪。顺便说一句 - 在您的问题树中,该类没有 .java 扩展名。我希望文件的实际情况并非如此。
    【解决方案2】:

    两个活动的 xml 文件名相同:activity_main.xml

    您必须保留不同的名称,因为在资源合并期间,xml 将被替换。资源合并合并了产品风格和主要资源集。

    【讨论】:

    • 源集不需要在 build.gradle 中定义。尝试清理项目。你有几种口味?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多