2010-05-16 3 views
7

안녕하세요 저는 Android Android 애플리케이션을 개발하기 위해 창과 Eclipse IDE를 사용하는 Android 개발자입니다. 게임은 하나만 게시했지만 무료 버전의 게임과 유료 버전이 있습니다. . 구글 시장은 서로 다른 버전이 서로 다른 패키지 이름을 가져야한다고 주장한다. 지금까지 나는 2 개의 다른 이름으로 패키지를 리팩터링하고 다른 버전을 빌드 할 때마다 R 리소스 파일 가져 오기를 변경했습니다. 코드는 두 버전 모두 99 % 동일합니다. 더 좋은 방법이 있습니까?Android 및 Eclipse 같은 앱의 두 가지 다른 버전

답변

2

이 주제에 대한 여러 가지 토론이 있지만 herethere이지만 기본적으로 해결책은 프로젝트를 복제하는 것과 비슷합니다. (이클립스 기반으로하지 않는) 예를 들어

:

우리가 차이 앱의 무료 - 무료로하지 버전 사이에 무엇인지 않기 때문에,이 대답하기가 어렵습니다.

필자는 차이점을 일종의 글로벌 자유/비 플래그로 처리 할 수 ​​있다고 가정합니다. 즉, 나는 동일한 코드가 응용 프로그램의 두 버전을 만들 것이라는 점을 의미하고, 어느 부분을 사용하거나 어딘가에 일부 공공 정적 데이터 멤버에 의존 할 것이다 사용됩니다

if (SomeClass.IS_PAID_APP) { 
     // add more stuff to menu, etc. 
} 

당신이 할 수있는 경우 그런 식으로 앱을 구성하면 코드 기반이 하나만 필요합니다.
앱의 해당 버전에 대한 매니페스트에서 앱을 무료 또는 유료로 선택하고 적절한 패키지를 만들도록 설정 했습니까?
그런 다음 않는 개미 작업을 추가 다음

  1. 는 통해 검색을 통해 임시 위치
  2. 스위치 새로운 패키지 이름으로 매니페스트의 복사본 프로젝트 디렉토리의 트리 카피를 작성합니다 하지 원래
  3. 당신의 IS_PAID_APP 변경 (또는 복사본에 다시 검색 및 바꾸기를 통해 다시 에
  4. 전환에게 새 패키지를 R의 기존 패키지의 버전에 대한 모든 import 문을 및 바꾸기, 그리고 어떤)를 반대 값으로 (검색 및 바꾸기 사본에)
  5. 복사가에서 바이너리 주요 프로젝트의 bin 별개의 이름으로/ 디렉토리 (에 구축 프로젝트의 사본을 Ant 빌드를 실행 그래서 '아무튼 t는 APK의 다른 사본 )
  6. 자바가 미리 프로세서를 가지고 있다면 1

이 다소 간단 할 것이다 단계 #에서 만든 나무 사본을 삭제를 소지품. 그러나, 위에서 설명한 기본 기술은 이제 수십 년 동안 사용되었습니다. 그것은 clunky하지만, 그것은 작동하고, 당신이 다루어야 할 한 세트의 소스 코드를 가지고 있음을 의미합니다. 개미 <replace> 작업이 검색 및 바꾸기 작업을 멋지게 처리합니다.

1

이것은 왜 그들이 그렇게했는지 알 수 있지만 안드로이드 마켓의 실패 중 하나입니다.앱의 무료 및 유료 버전을 위해 설계되지 않았습니다. (24 시간 반품 정책이 적용되는 것이지만 불법 복제로 사용됩니다.) - :

어쨌든 가장 간단한 방법은 다음과 같이 작성하는 것입니다. Ant 빌드 스크립트 (또는 사용하는 스크립팅 언어). 모든 .xml 및 .java 파일을 통해 패키지 이름을 검색합니다. 그런 다음 앱을 빌드하십시오. 리팩토링하는 코드는 IMHO보다 가치가 있습니다.

관련 문제