【问题标题】:Functions are missing from the Application object, when using multidex and Dagger 2使用 multidex 和 Dagger 2 时,Application 对象中缺少函数
【发布时间】:2015-05-22 13:40:56
【问题描述】:

我们最近在使用 Multidexing 时遇到了问题,特别是在使用 gradle multidex 插件 ('com.android.support:multidex:1.0.0') 为 Dalvik VM 构建时。

似乎 gradle 难以解析应该包含在主 dex 文件中的正确类。结果,我们最终得到了一个成功完成的构建过程,但是有时会生成一个主 dex 文件,其中不包含正确实例化主应用程序所需的一个或多个类(它本身扩展MultiDexApplication)。

我们当前的蛮力构建一致的解决方案是监控由 multidex 生成的中间文件。当我们有一个 good 构建(即正确实例化主应用程序和 MultiDexApplication 的构建)时,然后将包含在主 dex 文件中的类列表复制到一个文件中,然后我们强制执行 multidex使用(使用 --main-dex-list 参数)。这暂时使我们能够将所需的类“强制”到主 dex 文件中,但显然不是很容易维护,并且在添加新的类/依赖项时无法轻松更新。

我们正在使用 Dagger 2 进行依赖注入,我们怀疑这会以某种方式阻止 multidex 插件正确识别主应用程序的依赖项——这可能是原因吗?我们还遇到了各种关于使用最小的“App Wrapper”(其自身扩展 MultiDexApplication)作为多索引处理的“入口点”的参考资料,但找不到足够的文档来说明该过程。

如果您能就此提供一些见解,那就太好了 - 这是您以前遇到过的问题吗?有已知的解决方法吗?非常感谢您提供有关我们如何实现“App Wrapper”模式的任何细节

【问题讨论】:

    标签: android android-gradle-plugin dagger-2 android-multidex


    【解决方案1】:

    新的 support v4 库包含了 multidex,你试过用吗?

    将以下内容添加到您的 gradle 依赖项中:

        compile "com.android.support:support-v4:$21.0.+"
    

    并将这个标志添加到你的 android > defaultConfig in gradle

    android{
        defaultConfig{
            ....
            multiDexEnabled true
        }
    }
    

    【讨论】:

    • 我不知道支持库有多重索引库。我正在使用多重索引库本身。 compile 'com.android.support:multidex:1.0.0' 难道他们不一样?
    • 另一方面,我也在使用 compile 'com.android.support:support-v4:22.0.0' support lib 本身
    • 是的,所以您可能有冲突的 multidex 库。尝试使用其中一种。
    • 更准确地说,support-v4 库不包含 multidex 类。它们被打包在一个名为 android-support-multidex 的单独库中。它的工作方式是,一旦你指定了 multiDexEnabled=true,插件会自动添加 multidex lib 作为依赖项。
    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2016-10-21
    • 2023-03-22
    • 2013-05-12
    • 2019-11-11
    • 2019-04-11
    相关资源
    最近更新 更多