2012-11-06 2 views
2

Google Play 및 Amazon AppStore에 게시 된 앱이 있습니다. 최근에이 앱에지도 API 기능을 추가 했으므로 Google API SDK를 사용하여 빌드해야했습니다. 새 버전을 Google Play에 게시했지만 Amazon에 문제가 있습니다.Android : Amazon AppStore 및 Kindle의지도 기능을 제거하는 방법

Amazon AppStore는 앱의 Kindle 라인이이를 지원하지 않기 때문에 앱을 거부했습니다. 추가 조사가 끝나면 새로운 Kindle 에뮬레이터를 다운로드하여 Google API를 지원하지 않는다는 사실을 알게되었습니다. Kindle Fire 태블릿은 Amazon AppStore를 통해 앱을 구매하는 사람들에게 기본 장치로 보이기 때문에 맵 기능을 포함하지 않는 앱 버전을 제출해야한다는 것을 알았지 만 그렇지 않은 경우 동일한 앱입니다.

내 질문은 : 어떻게 표준 안드로이드 SDK를 기반으로 매핑 API를 포함하지 않지만 동일한 자바 소스 파일을 사용하는 응용 프로그램의 두 번째 버전을 만들 수 있습니까? 오랫동안 C++ 프로그래머로서 C++에서 조건부 컴파일 플래그를 사용하여 쉽게이 작업을 수행 할 수 있었지만 Java가 조건부 컴파일을 지원하지 않는다는 것을 깨닫게되었습니다. 그리고 나는 하나의 Android Eclipse 빌드에서 라이브러리를 제외하고 다른 빌드에 포함시키는 방법을 확실히 모릅니다.

안드로이드에서 원하는 결과를 얻는 방법에 대한 조언을 해 줄 사람이 있습니까? 나는 두 개의 개별 앱을 만들 수 있지만 업데이트를해야 할 때 훨씬 더 많은 코드 겹침이있을 것이라고 생각합니다. 실제로 Kindle을 지원하기 위해 별도의 코드베이스 두 개를 유지하고 싶지는 않습니다. 발사!

+0

: Google지도 기능

boolean isAmazonDevice = Build.MANUFACTURER.equalsIgnoreCase("amazon"); final Application application = getApplication(); String installerName = application.getPackageManager().getInstallerPackageName(application.getPackageName()); boolean fromAmazonStore = installerName != null && installerName.equalsIgnoreCase("com.amazon.venezia"); 

다음의 값을 확인을 (라이브러리가있는 경우로서 그들이 활성화되지 않은 것 같은 상처를하지 않는 것) 도서관 프로젝트로 잘 작동합니다. 모든 공통 코드를 라이브러리로 이동하면 라이브러리를 상속하는 두 개의 프로젝트를 만들 수 있으며 컴파일하는 프로젝트에 따라 조건부로 코드를 포함/제외 할 수 있습니다. 나는 이것을하는 방법에 대해 합리적으로 자세한 설명을했다. (이 답변에서) (http://stackoverflow.com/questions/12963369/creating-demo-and-full-version-app-based-on-one-code-base -project/12963665 # 12963665). – Tim

+0

감사합니다. Tim, 나는이 아이디어를 가지고 놀고 있었다. 나는 당신이 당신의 대답에서 그것을 완전히 개발 했으므로 그것을 시도 할 것입니다 - 매우 유망 해 보입니다! –

+0

@ AlanMoore 당신은 무엇을하고 있었습니까? 나는 매우 비슷한 상황에 처해있다. – theblang

답변

2

"Amazon"과 동일한 Build.Manufacturer를 확인하거나 앱이 installed from the Amazon AppStore (예 : Fire 장치 또는 Blackberry)인지 확인하고 초기화하지 않았거나 나는 이것이 아마 것이라고 생각

isAmazonDevice || fromAmazonStore 
+0

나는 이것을 시험해야한다, 확실히 나의 인생을 훨씬 더 쉽게 만들 것이다! –

관련 문제