2015-01-13 3 views
0

외부 라이브러리를 사용하여 맞춤형 라이브 스트리밍 앱을 만들고 있습니다. 여기 Android에서 외부 라이브러리를 수정하는 가장 좋은 방법은 무엇입니까?

내가 사용하고 도서관입니다 :이 라이브러리를 가지고있는 (거의) 문제의

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

하나가 존재하는 경우 전면 카메라를 사용하기 위해 전화를 강제한다는 것입니다. 차라리 카메라 뒤쪽을 사용하도록 강요합니다 (또는 선택 사항이 무엇이든).

사실,이 라이브러리에서 브로드 캐스팅을 관리하는 클래스에는 초기화시 카메라를 선택하는 public 메서드가 내장되어 있으며 해당 메서드는 private이므로 메서드를 확장 할 수 없습니다.

내 솔루션은 라이브러리를 로컬에서 다운로드하여 Gradle의 로컬 프로젝트로 컴파일했습니다. (저는 Android Studio를 사용하고 있습니다). 그런 다음 프로젝트에서 라이브러리 파일을 직접 수정합니다. 그것은 작동합니다.

그러나 이것은 매우 좋은 습관이 아닌가 걱정됩니다. 내가 예상 할 수있는 한 가지 문제는 라이브러리가 업그레이드 될 것이라는 점입니다. 로컬에서 변경 했으므로 라이브러리의 새 버전을 사용하는 것은 매우 어려울 것입니다.

질문 : 외부 라이브러리를 수정할 때 가장 좋은 방법이 있습니까? 내가하고있는 일입니까, 아니면 더 좋은 방법이 있습니까?

질문에 대한 의견을 보내 주시면 문제를 개선하거나 명확히 할 수 있습니다.

+1

github을 사용하고 있으므로 [pull requests] (https://help.github.com/articles/using-pull-requests/)에 대해 배우고 싶을 수 있습니다. 이 방법으로 관리자에게 제안을 보낼 수 있습니다. –

+1

풀 요청에 대해 알고 있으며 매우 유용합니다. 그러나 제안은 실제로 원하는대로 라이브러리를 얻는 것과 같지 않습니다. 그렇습니까? 당신은 내가 메인테이너들과 나의 제안을 공유해야한다는 것이 옳다. - 나는 그들의 일에 기초하여 무언가를 만들 때 첫 번째 응답이되어야한다. – Laurent

답변

2

라이브러리를 포크하고 커밋을 포크로 푸시합니다. 이렇게하면 나중에 원래 라이브러리의 변경 사항을 포크에도 병합 할 수 있습니다.

0

리플렉션 (https://stackoverflow.com/a/11484158)을 사용할 수는 있지만 좋은 방법은 아닙니다. 나는 소스에서 모듈을 컴파일하고 업데이트하지 않는 것이 좋을 것이라고 생각합니다.

2

GitHub에는 훌륭한 공동 작업 모델이있어서 fork any OSS project easily 수 있습니다. 원하는대로 수정할 수 있으며, 변경 사항을 다시 pull requests의 형식으로 푸시 할 수도 있습니다.

당신이, 당신은 (몇 가지 이름을 Codeship, Drone.io, Travis-CI), 즉이 원하는 클라우드 기반의 CI 서버에서 내장 전체 무료 지속적인 통합/배포 툴체인을 사용하여 구축 할 코드가 준비되면, 귀하의 SNAPSHOTs (중간 빌드 결과)에 Artifactory의 무료 인스턴스와 Bintray을 배포 플랫폼으로 사용하십시오 (다른 사람들이 재사용 할 경우 built-in into Android Studio).

Here's a video demonstration은 전체 스택이고 here's the documentation은 Artifactory/Bintray 부분이다.

관련 문제