2012-11-26 3 views
2

우리는 기존 Java 애플리케이션을 android로 이식하려고하고 있으며 소스 코드를 관리하기위한 모범 사례가 무엇인지 알고 싶습니다.안드로이드 및 소스 관리에 대한 프로젝트 포트

우리는 거대한 프로젝트를 여러 가지 불가 지론적인 프로젝트로 폭발 시켰지만 우리는 여전히 큰 모노리딕 프로젝트를 가지고 있습니다. 이러한 작은 프레임 워크의 경우 많은 작업을 수행 할 필요는 없지만 큰 프레임 워크는 다시 작성해야합니다.

개발자는 당분간 Android에 앱을 포팅하지만 다른 개발자는 Android 이외의 프로젝트에서 새로운 기능을 계속 개발하고 있습니다. 포트가 완료되면 모든 수정 사항을 안드로이드 코드베이스에 병합해야합니다. 그러면 정말 고통 스러울 것입니다. 그래서 내 질문은 : 우리가 코드 소스를 어떻게 관리해야 하는가? 각 플랫폼에 대한 특정 저장소를 만들어야합니까? 동일한 저장소에 두 코드베이스를 유지해야하지만 다른 분기를 가리켜 병합이 더 쉬워야합니까?

답변

3

아마 소스 관리 문제가 아닙니다. 추상적 인 포팅 레이어를 만들어보십시오. 응용 프로그램을 실행하는 데 필요한 모든 API를 추상화합니다. 그런 다음 SWT 아래 SWT API를 사용하여 이식 계층을 구현합니다. 예를 들어 Android는 Android API를 사용하여 동일한 레이어를 구현합니다.

하나는 상상할 수 : 앱

public interface ISoundEngine { 
void startSound(); 
void stopSoud(); 
} 

나머지는 엔진을 작동 startSound/stopSound를 사용합니다.

그래서 다음 창에서 당신은 당신이 각각의 경우에 낮은 수준의 API를 Windows 특정 안드로이드 별을 사용하여

public AndroidSoundEngine implements ISoundEngine { 
... 
} 

을 구현 안드로이드에서

public WindowsSoundEngine implements ISoundEngine { 
... 
} 

를 구현합니다.

+0

감사합니다. 이러한 라이브러리를 사용하는 프로젝트는 어떻게됩니까? 기존 저장소와 동일한 저장소에 생성해야합니까? 아니면 새 저장소를 만들고 기본적으로 모든 내용을 복사해야합니까? 예를 들어 git을 사용한다면, 생성 된 각 브랜치에 대해 projectxx-branchName이라는 브랜치와 projectxx-and-branchName이라는 브랜치를 만들 수 있습니다. – fewe

0

내가보기에 유일한 좋은 해결책은 모든 공통 코드를 라이브러리로 옮기는 것입니다. 독자적으로 개발할 수 있습니다. 그런 다음 스윙 UI, Android UI 등을위한 프로젝트를 만듭니다. 로직에 여전히 특정 플랫폼 관련 서비스 (데이터 저장, 알림 등)가 필요한 경우 클라이언트가 공용 라이브러리를 호출 할 때 Alex의 메소드를 사용하여 올바른 라이브러리를 전달합니다.

관련 문제