방금 첫 번째 앱을 출시했으며 무료 버전을 받고 싶습니다. 정식 버전에서 변경 사항을 쉽게 병합 할 수 있도록 무료 버전 지점 (svn)을 어떻게 관리해야합니까? Manifest 파일에서 패키지 이름을 변경하는 것이 가능합니까? 또는 패키지 이름이 코드마다 달라야합니까? 그렇다면 어떻게하면 쉽게 변경 사항을 병합 할 수 있습니까?무료 버전을 관리하는 방법?
감사합니다, 제이슨
방금 첫 번째 앱을 출시했으며 무료 버전을 받고 싶습니다. 정식 버전에서 변경 사항을 쉽게 병합 할 수 있도록 무료 버전 지점 (svn)을 어떻게 관리해야합니까? Manifest 파일에서 패키지 이름을 변경하는 것이 가능합니까? 또는 패키지 이름이 코드마다 달라야합니까? 그렇다면 어떻게하면 쉽게 변경 사항을 병합 할 수 있습니까?무료 버전을 관리하는 방법?
감사합니다, 제이슨
Android Library Project은 귀하의 친구입니다.
당신이 정말로 무료 버전을 만들기 위해 다른 지점을 유지 하시겠습니까?
동일한 코드베이스를 사용하고 #ifdef
또는 구성 매개 변수를 사용하여 무료 버전의 일부 기능을 비활성화합니다.
내 모든 응용 프로그램에서 이것을 사용
public static final boolean LITE_VERSION = true;
다음 몇 가지 기능을 해제하는 데 사용합니다.
LITE_VERSION이 true로 설정된 경우 java 컴파일러가 if (! LITE_VERSION) 블록의 코드를 무시하므로 리버스 엔지니어링 할 수 없습니다 (javap -c "명령).
빌드에 Ant를 사용합니다. 나는 이전에 how I build two versions of the same app을 문서화했다. 서로 다른 매니 페스트를 다루는 방법을 논의하는 마지막 섹션은 아마도 여러분에게 가장 관심있는 부분 일 것입니다.
내가 집으로 돌아올 때 흥미로운 것 같아요,이 방법은 크레타 기능을 사용하지 않도록 허용합니까? – Jason
크레타 섬 기능? :) 각 버전마다 다른 매니 페스트 파일을 사용합니다. 또한 세 가지 소스 트리 (주, 데모 및 공용)를 설정하고 Ant를 사용하여 세 개의 트리 중 두 개 (기본 + 공통 또는 데모 + 공통)를 빌드하기 전에 단일 트리로 병합합니다. –
나는 동일한 코드베이스와 패키지 이름을 사용하고 추가 앱 (apk) 또는 일련 번호 일 수있는 프리미엄 키를 제공하려고합니다. 이 접근 방식은 업그레이드하려는 사용자가 이전 데이터 및 설정을 사용할 수 있다는 긍정적 인 효과가 있습니다. 열쇠는 단지 동적으로 기능을 활성화하기 전에 언급과 같은 깃발을 가능하게합니다
그래, 아마도 이것이 최고의 soulution 덕분이다 – Jason