如何将库的本地副本添加和编译到 Android React Native 模块中?

Posted

技术标签:

【中文标题】如何将库的本地副本添加和编译到 Android React Native 模块中?【英文标题】:How can I add and compile local copy of a library into Android React Native module? 【发布时间】:2019-03-15 13:15:52 【问题描述】:

如何添加到本机模块、外部库源代码。 在这种情况下,我想将 ExoPlayer 的本地副本添加到 react-native-video 模块。 我想“git clone” ExoPlayer 的原始来源 在 react-native-video/android-exoplayer 里面,对它进行一些修改并测试它。 目前/react-native-video/android-exoplayer/build.gradle的依赖有:

dependencies 
    //noinspection GradleDynamicVersion
    provided "com.facebook.react:react-native:$safeExtGet('reactNativeVersion', '+')"
    compile 'com.google.android.exoplayer:exoplayer:2.7.3'
    compile('com.google.android.exoplayer:extension-okhttp:2.7.3') 
        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
    
    compile 'com.squareup.okhttp3:okhttp:3.9.1'

当前文件结构:

构建

build.gradle

ExoPlayer

/src

这个目录“ExoPlayer”是我用“git clone”得到的,想用它来代替

compile 'com.google.android.exoplayer:exoplayer:2.7.3'

【问题讨论】:

【参考方案1】:

我找到了解决办法:

在根项目 settings.gradle 应该添加这个:

gradle.ext.exoplayerRoot = '../node_modules/react-native-video/android-exoplayer/ExoPlayer-r2.7.3'
gradle.ext.exoplayerModulePrefix = 'exoplayer-'
apply from: new File(gradle.ext.exoplayerRoot, 'core_settings.gradle')

在 react-native-video/android-exoplayer/build.gradle dependencies 部分添加:

implementation project(':exoplayer-library-core')
implementation project(':exoplayer-library-hls')
implementation project(':exoplayer-library-smoothstreaming')
implementation project(':exoplayer-library-dash')
implementation project(':exoplayer-library-ui')
implementation project(':exoplayer-extension-okhttp')

并删除所有以“编译”开头的行

【讨论】:

以上是关于如何将库的本地副本添加和编译到 Android React Native 模块中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将库添加到交叉编译工具链?

如何将库路径添加到编译器

如何将库项目添加到 android 项目?

为啥将库添加到链接器命令行两次?

如何在 Android Studio 中导入模块而不创建副本

Android.mk添加本地程序和库的经常使用模版