在Android中修改外部库的最佳做法是什么?

时间:2015-01-13 09:12:00

标签: java android android-studio libraries

我正在使用外部库来创建自定义的直播应用。

这是我正在使用的库:

https://github.com/cine-io/cineio-broadcast-android/tree/master/cineio-broadcast-android-sdk

我对这个库的一些(少数)问题是它强制手机使用FRONT相机(如果有的话)。我宁愿强迫使用后置摄像头(或者有选择,无论如何)。

实际上,在这个库中管理广播的类确实有内置的公共方法来在初始化时选择相机,并且它的方法是私有的,所以我不能扩展它。

我的解决方案是在本地下载库,将其编译为Gradle中的本地项目(我是usnig Android Studio)。然后我直接修改项目中的库文件。它有效。

但是我担心这不是一个很好的做法。我可以预见的一个问题是图书馆将升级 - 由于我将在本地进行更改,因此很难利用图书馆的新版本。

问题:在修改外部库时是否有最佳实践?这是我在做什么,还是有更好的方法?

请随时提供有关问题的反馈,以便我可以根据需要对其进行改进或澄清。

3 个答案:

答案 0 :(得分:2)

我会分叉库并将你的提交推送到你的分支。像这样你以后可以将原始库中的更改合并到你的fork中。

答案 1 :(得分:2)

GitHub有一个很棒的协作模型,可以让你fork any OSS project easily。您可以随意修改它,也可以选择以pull requests

的形式推送更改

准备好代码后,您可以使用完全免费的持续集成/分发工具链,该工具链是从您选择的基于云的CI服务器(CodeshipDrone.io构建的, Travis-CI仅举几例),一个免费的Artifactory实例用于您的SNAPSHOT(中间版本结果),Bintray用作分发平台(built-in into Android Studio供其他人重复使用)。

完整堆栈的

Here's a video demonstration和Artifactory / Bintray部分的here's the documentation

答案 2 :(得分:0)

你可以使用反射(https://stackoverflow.com/a/11484158),但这不是一个好方法。 我认为在你的情况下,最好从源代码编译模块而不是更新它。