동일한 소스 코드에서 "무료/데모"및 상용 앱을 모두 생성하는 가장 좋은 방법은?

StackOverflow https://stackoverflow.com/questions/274785

  •  07-07-2019
  •  | 
  •  

문제

App Store에서 두 가지 버전의 iPhone 앱을 제공하고 싶습니다. 하나는 응용 프로그램을 통해 표시되는 항목 수와 완전히 무제한으로 제한됩니다.

두 앱의 소스 코드는 정확히 동일합니다. 유일한 차이점은 항목을 앱에 저장하는 SQLite 데이터베이스입니다.

앱의 두 버전 모두 다른 번들 이름과 다른 아이콘이 필요하다는 것을 이해합니다. 데이터베이스, 아이콘, 펜촉 문자열 등 이러한 것들 중 일부를 사용자 정의 할 수 있도록 소스 코드 디렉토리를 완전히 복사하지 않도록하려고합니다.

모든 것을 복제하지 않고 이것을하는 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

프로젝트에서 두 번째 대상 만 만드십시오. 하나는 전체 데이터베이스를 포함한 전체 기능 응용 프로그램 일 수 있으며 새로운 대상은 데모 데이터베이스와 함께 데모 빌드입니다. 우리는 크로스 워드로 이것을하고 잘 작동합니다. 그런 다음 모든 소스를 한 곳에 유지하고 동기화가 나오는 것에 대해 걱정하지 않습니다.

다른 팁

조건부 편집을 신중하게 사용하십시오. 나는 당신이 일하는 언어를 모르지만 C/C ++ 조건부 편집에서 매크로 전 처리기 및 IFDEF를 사용하여 수행됩니다. 코드를 작성합니다.

#ifdef FULL_APP
  // unlimited size
  #define SIZE -1
#else
  #define SIZE 100
#endif

프로그램을 구축 할 때 컴파일러 명령 줄에 적합한 매크로 정의를 제공합니다.

gcc program.cc -o program.o -DFULL_APP

실행 파일에서 다양한 기능을 켜거나 끄거나 프로그램의 다른 측면을 수정하는 다양한 방법으로 조건부 편집 및 매크로 전 처리기를 사용할 수 있습니다.

또한 사용자가 정식 버전으로 업그레이드하기로 결정한 경우 기존 데이터를 전송할 메커니즘이없는 경우 사용자의 부정적인 반응이 표시 될 수 있습니다. 데이터의 내용이 작고 대부분 텍스트로 표시 될 수있는 경우 URL 방식을 전달하기위한 URL 구성표를 구현하는 것이 좋습니다.

새 프로젝트를 작성한 다음 원래 프로젝트와 동일한 소스 파일의 참조 (로컬 사본을 작성하지 않음)를 참조하십시오.

앱의 두 버전에 대해 다른 SQLite 데이터베이스가 있어야하는 특정 (iPhone 특정?) 이유가 있습니까?

그렇지 않은 경우 하나의 파일 만 변경하여 단일 코드베이스를 컴파일 할 수있는 교환 키가있는 라이센스 메커니즘을 구현할 수 있습니다. 런타임에 앱은 해당 파일을 확인하고 감소되거나 무제한 스토리지를 허용합니다. 추가 혜택 (iPhone-Store가 그러한 것들을 지원하는 경우)이 데이터를 잃지 않고 정식 버전을 잠금 해제하는 것이 매우 간단해야합니다.

물론, 고객이 기술에 정통하고 악의적이며 코드가 쉽게 디 컴파일하기 쉬운 경우 이러한 솔루션은 귀하의 비즈니스에 해를 끼칠 수 있습니다.

나는 이것을 탐색했으며 "시험을 다운로드하여 웹을 통해 업그레이드하는 것"은 App Store의 조건을 위반하는 것 같습니다. 상점에서 두 개의 별도 버전의 앱이 필요할 것 같습니다. (Ben Gottlieb의 출품작을 참조). 그래서 하나의 소스, 두 배포판.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top