【问题标题】:How to deal with different jar in different flavors of an Android project?如何处理不同风格的Android项目中的不同jar?
【发布时间】:2015-08-10 18:30:21
【问题描述】:

This post解释如何在项目的不同productFlavors中包含不同的依赖。

我这样做了,但现在我如何处理我自己的代码调用来自我项目的一种风格中不包含的 jar 的代码?

示例

admob.jar 有一个 Aaa.class 并且只包含在 free 风格中。当我编译 pro 风格时,它会失败,因为Aaa.class 不在类路径中。

我不想不使用反射(它效率低且耗时)。

有什么建议吗?

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    正如linked post 中提到的,您可以使用风味来包含不同的依赖项,但您也可以在风味中包含特定的 src 文件:

    创建目录 src/pro/java/src/free/java/

    src/pro/java 中的所有源文件将仅使用为“pro”风格定义的依赖项以“pro”风格编译。

    src/free/java 中的所有源文件将仅使用为“free”风格定义的依赖项以“free”风格编译。

    现在假设您有一个java 源文件SomeClass.java 调用admob.jar 中的一些代码。您可以执行以下操作:

    1. SomeClass.java 放入src/free/java/SomeClass.java
    2. src/pro/java/SomeClass.java 中重复SomeClass.java
    3. src/pro/java/SomeClass.java中删除所有对admob.jar的调用
    4. 如果你做得正确:你的项目的两种风格都应该编译

    提示:尝试以这样一种方式组织您的代码,将重复的类减少到严格的最低限度。

    【讨论】:

    • 谢谢你的回答,这是一个解决方案,但它使代码结构看起来很混乱,我正在阅读grandle使用指南,查找是否有任何机器类似注释,通过编译的类。
    • sourceSets { main { java { exclude 'some/unwanted/package/**' } } } 我们可以排除我们不需要的包和文件,然后编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2022-01-11
    • 1970-01-01
    • 2013-01-07
    相关资源
    最近更新 更多