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

What is best practice to amend an external library in Android?

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

这是我正在使用的库:

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

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

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

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

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

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

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

我会分叉库并将您的提交推送到您的分叉。像这样,您以后也可以将原始库中的更改合并到您的复刻中。

您可以使用反射 (),但这不是一个好方法。 我认为在你的情况下,从源代码编译模块而不是更新它会更好。

GitHub 有一个很棒的协作模型,让您 fork any OSS project easily. You can modify it at will, optionally, push the changes back in a form of pull requests.

准备好构建代码后,您可以使用完整的免费连续 integration/distribution 工具链,它是从您选择的基于云的 CI 服务器构建的(Codeship, Drone.io, Travis-CI to name a few), a free instance of Artifactory for your SNAPSHOTs (intermediate build results) and Bintray as a distribution platform (built-in into Android Studio供其他人重用)。

Artifactory/Bintray 部分的

Here's a video demonstration of the full stack and here's the documentation