2011-10-07 7 views
5

앱을 가지고 있는데, 현재 앱 스토어에 있습니다.2 개의 앱, 하나의 코드베이스. 이것을 어떻게 할 수 있습니까?

다른 앱에 대한 아이디어가 있습니다. 이는 내 게시 된 앱과 동일한 구조를 많이 공유합니다. 둘 다 사진 조작 응용 프로그램이므로 가져 오기, 공유, 저장, 회전 등의 코드베이스가 둘 사이에서 모두 공유됩니다. 그러나 사진 조작의 유형은 다를 수 있습니다.

제 생각에는 앱 # 1을 업데이트 할 때 앱 # 2의 변경 사항을 원하고 그 반대도 마찬가지입니다.

하나의 코드베이스에서 두 개의 앱을 구현하는 가장 좋은 방법은 무엇입니까? 내가 예상 한

전략,

  1. 하나 개의 프로젝트 파일, 두 가지 목표. 그렇게하면 두 앱의 코드베이스가 항상 최신 상태가되지만 프로젝트 파일/디렉토리는 다소 지저분 할 것입니다.
  2. git에서 응용 프로그램을 분기하면 두 응용 프로그램에서 사용하는 클래스의 변경 사항을 자주 병합 할 수 있습니다.

다른 아이디어도 있습니다.

사람들이이 문제에 대해 논의했지만 대부분 사소한 변경 사항과 관련되어 있습니다. 즉, 몇 가지 브랜드/데이터 파일이있는 앱 하나입니다. 내 두 애플 리케이션은 합리적으로 별개의 것입니다, 그래서 그 기술을 반드시 적용한다고 생각하지 않습니다.

+0

덧붙여서,'multiple-targets' 태그는 매우 틈새이기 때문에,'deployment-target'와 같이, 그 점을 얻기 위해서 좀 더 일반적인 것을 사용할 수 있기 때문에 제거했습니다. – darvids0n

답변

2

기존 앱을 두 부분으로 나누는 것이 좋습니다. 모든 공통 부분을 일반 DLL/클래스 라이브러리로 구분하고 기존 프로젝트와 새 프로젝트 모두에서 dll을 사용하십시오.

첫 번째 프로젝트 개발이 진행되면 적절한 배포 스크립트를 사용하여 최신 프로젝트에서 최신 버전의 dll을 사용하십시오. 이렇게하면 새 프로젝트가 별도의 코드베이스에있을 수도 있습니다.

+1

oops .net 용어를 사용 중입니다. 적절한 경우 객관적인 C 전문 용어로 변환하십시오. – Zasz

+1

정적 라이브러리가 적합한 라이브러리입니다. Apple의 물건은 DLL과 같은 동적 라이브러리를 지원하지만 iOS App Store 앱에서 동적 라이브러리 또는 프레임 워크를 사용할 수 없습니다. –

3

일반적인 사진 조작이나 다른 공유 기능을 사용하여 정적 라이브러리를 만들고 기존 프로젝트를 재 작업하여 종속성으로 라이브러리를 추가하고 라이브러리의 헤더 폴더를 사용자 헤더 검색 경로. 그런 다음 이전 프로젝트를 복제하고 모든 공유 라이브러리 기능에 대한 액세스 권한을 바로 수정하십시오.

동일한 프로젝트의 두 대상이 사용자의 상황에 적용될 수 있습니다. 많은 양의 오버랩이있는 경우 기본적으로 두 번째 UI/워크 플로를 작성해야합니다. 그렇다면 두 개의 대상을 사용하는 것이 좋습니다.

+1

두 프로젝트 사이에서 복제하고 싶은 부분은 대부분 application-structure *입니다. 나는 공유 라이브러리에서 호출 된 App Delegate도 가질 수 있다는 것에 회의적이다 ... 마찬가지로, nib 파일인가? 이것은 코코아 응용 프로그램에 대한 잘못된 기술처럼 느껴집니다. 전에이 기술을 사용해 보셨습니까? 어떻게 시작 했습니까? –

+0

사용자 지정 무비 플레이어에 정적 라이브러리를 사용합니다. 라이브러리를 사용하려면 검색 경로에 헤더를 추가하고 라이브러리를 종속 항목으로 추가해야하며 플레이어보기가 포함 된'.xib '를 통해 복사해야합니다. 내 프로젝트에서 맞춤형 무비 플레이어 클래스를 사용할 수 있도록하는 일회성 작업을 고려해 보겠습니다. 라이브러리에서 앱 위임자를 호출하려고하지는 않았지만 실제로는 실제로 원하는 내용이 아닙니다. 응용 프로그램 대리자 클래스와 달리 * 응용 프로그램 구조체 *의 루트 뷰가있는 라이브러리를 시작할 것입니다. 델리게이트 클래스에서 항상 # import를 할 수 있습니다. – darvids0n

2

두 앱에서 자식 서브 모듈을 사용하는 것이 좋습니다. 이 기능은 여러 앱에서 코드를 공유 할 때 완벽하게 작동했습니다. 기본적으로 우리는 각 Xcode 프로젝트에서 서브 모듈을 유지하는 "Components/" 폴더가있는 구조를 사용합니다.

Components/SomeAmazingPhotoManipulationStuff 
Components/MaybeSomeUsefullFoundationThingsYouUseOften 

앱 B 만 사용할 수 있습니다 :

응용 프로그램 A는이 같은 서브 모듈을 가질 수

Components/MaybeSomeUsefullFoundationThingsYouUseOften 
여기 아이디어는 당신이 별도로하여 서브 모듈 프로젝트를 업데이트하고 단지 각각에 갈 수 있다는 것입니다

응용 프로그램이 사용되는 곳이며 하위 구성 요소를 최신 버전의 구성 요소로 업데이트하여 버전 제어 기능을 유지하면서 응용 프로그램간에 물건을 성공적으로 공유 할 수 있습니다.또한 많은 프로젝트에서 잘 확장됩니다.

물론 하나의 응용 프로그램에서만 또는 일부 시나리오를 생각할 때 특정 물건이나 매우 실험적인 작업을 수행하는 경우 하위 모듈을 분기하고 App A에 하나의 분기와 App B를 사용할 수 있습니다.

우리가이 같은 자식 서브 모듈을 사용하기 시작한 이래로 우리는 뒤돌아 보지 않았으며 다른 해결책도 고려하지 않았습니다.

+1

GIT 서브 모듈을 사용하는 것이 좋습니다. 사실, 나는 모든 주어진 답을 결합 할 것입니다. 사용자 정의 정적 라이브러리에 대한 서브 모듈을 사용하십시오. 그렇게하면 모든 이점을 얻을 수 있습니다. 적절한 버전 제어 (자식 하위 모듈), 적절한 응용 프로그램 구조 (정적 라이브러리), 잘 공유 할 수있는 코드 (두 가지 모두), 동료 간의 책임 할당 (둘 다) ... – Till

관련 문제