2014-01-27 3 views
0

Android apk에 서명하는 데 사용 된 원래의 키 저장소에 액세스 할 수있는 경우 다른 버전의 키 저장소를 사용하도록 향후 버전의 앱을 마이그레이션하는 방법이 있습니다. 두 번째 키 저장소가 항상 사용 된 것처럼 ADT로 개발할 수 있습니까?Android 앱 버전의 키 저장소 마이그레이션 (두 번 서명)

jarsigner를 사용하여 두 개의 다른 키 저장소로 apk 파일의 첫 번째 업데이트에 서명 할 수 있어야합니다. 그런 다음 클라이언트가 앱 유지 관리를 완전히 대신 할 수 있도록 키를 사용하여 업데이트를 수행 할 수 있습니다.

Version   Keystore 
1.0    A 
2.0    A & B 
3.0     B 
4.0     B 
...    ... 

나는, 클라이언트는 우리가 그들의 APK 파일은 키 스토어 B에 매핑 CERT.SF를 포함 할 때 키 스토어 B. 서명 버전 2.0 APK 파일을 내보낼 ADT를 사용할 수 있도록하고 싶습니다 버전 1.0 CERT 반면, 내가 여전히 오류가이 때 .SF는 키 저장소 A.

에 매핑 :

An existing package by the same name with a conflicting signature is already installed. 

내가 APK를 내보낼 때, 그것의 META-INF 디렉토리에 CERT.SF 포함되어 있음을 알 수 있습니다. 내가

jarsigner -keystore /path/to/keystore_b -storepass STOREPASS -keypass KEYPASS ./AndroidApp.apk ALIAS 

... 같은 jarsigner를 사용하여 두 번 로그인하면 ... 메타-INF는 이제 ALIAS.SF이 포함되어 있습니다.

.SF 파일로 인해 Android 업그레이드가 불편합니까? ALIAS.SF가 찾고있는 키가 포함되어 있더라도 CERT.SF는 두 개의 다른 키에 매핑됩니다.

(수업 배운 : 가능한 한 빨리 고객을위한 새로운 키 스토어 생성) 아니,

답변

1

If I have access to the original keystore used to sign an Android apk is there a way to migrate future versions of the app to use a different keystore, preferably maintaining the ability to develop with ADT as though the second keystore had always been used?

아아합니다. 이를 지원하려면 Android 자체를 수정해야합니다. 작년에이 문제에 대해 약간의 질문을 던졌습니다. 주제에 this paper이라고 쓴 연구원 중 한 명과 관련하여 말입니다.

From what I have been able to find out, it looks like we should be able to use jarsigner to sign the first update to the apk file twice with two different keystores

True이지만 모든 서명이 일치해야합니다.

Then in the future any updates can be done with either key, letting the client take over app maintenance completely.

아니요, 모든 서명이 일치해야합니다. 이것은 Android에서 필요한 변경 사항입니다. 원래 응용 프로그램이 B로 서명하지 않기 때문에 당신의 예에서, 버전 2.0이 A.

Lesson learned: create new keystores for clients as early as possible

컨설턴트, 또는 다른 사람에 대한 응용 프로그램을 만들어 다른 사람과 서명에도 불구하고, 실패, 아마 키 스토어를 당 고려해야한다 -app 접근법, 또는 적어도 클라이언트 당 키 스토어를 제안합니다.

관련 문제