ExoPlayer 构建结构

exoplayer 的编译控制使用gradle. 相对较复杂, 这里大致梳理一下里面的结构和一些关键问题。

整个工程范围的配置:

  1. gradle.properties:
    gradle.properties里面定义的属性是全局的,可以在各个模块的build.gradle里面直接引用, 以键值对的形式呈现.
    android.useAndroidX=true 表示当前项目启用 AndroidX
    android.enableJetifier=true 表示将依赖包也迁移到 AndroidX。
    如果取值为 false, 表示不迁移依赖包到 AndroidX,但在使用依赖包中的内容时可能会出现问题,当然了,如果你的项目中没有使用任何三方依赖,那么,此项可以设置为 false
    android.enableUnitTestBinaryResources=true 使能测试资源访问,经常与includeAndroidResources = true 配合使用
    buildDir=buildout 构建输出的文件夹
    org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m 虚拟机参数配置
    另外,这里面还经常会配置的可以参考:
    https://juejin.im/post/582d606767f3560063320b21#heading-19
    这里面可以配置一些私密的东西,一般不建议提交,最好是把私密的配置独立到文件里面。

  2. javadoc_combined.gradle 文档自动生成合并
    javadoc_combined-->javadoc_util.gradle( 依赖)

  3. javadoc_library.gradle
    javadoc_library.gradle->javadoc_util.gradle
    该文件在每个子module 里面都有引用

  4. publish.gradle
    自动化发布工具, 将jar或者aar发布到marven 本地或中心仓库

  5. constants.gradle
    主要配置了一些version信息及重要的全局变量,如modulePrefix, ext.

def 与 ext的区别:
关键字def来自于Groovy,定义了一个local scope的变量。而ext.outDir是新加了一个property:outDir。可以想像成project有一个properties的map,这个map里面有一个键值ext,你把你的property放到这个map里面以便之后引用。
build.gradle 里面引用ext: "project.ext."
如果在根build.gradle 里面定义了ext 闭包, 那么子模块应该这样使用它"rootProject.ext.".
在这个文件里面gradle.ext 的由来:
gradle.ext.exoplayerRoot = 'path/to/exoplayer'
gradle.ext.exoplayerModulePrefix = 'exoplayer-'
apply from: new File(gradle.ext.exoplayerRoot, 'core_settings.gradle')
exoplayer官网给出的第三方apk 本地依赖exoplayer 的一些配置参数

  1. project build.gradle
    它在根目录,它配置的所有工程共同的配置项

7.Settings.gradle
一般涉及多项目, 多项目的管理

你可能感兴趣的:(ExoPlayer 构建结构)