2010-04-21 3 views
5

Google은 앱을 만들 계획이며 Google 시장에 게시하지 않을 계획입니다. 업데이트를 서버를 통해 rlsd 할 때 사용자가 thire 앱을 한 번 업데이트하는 경우 (이 작업을 수행하는 방법을 알지 못하게하자) ... 이렇게하려면 각 앱에 ID를 부여해야합니다. 그래서 나는 그 사용자가 자신의 앱을 업데이트해야한다는 것을 알고 새로운 설치가 아니라 (사용자가 앱의 두 가지 버전을 가질 경우를 피하고 싶다.) 물론 새로운 사용자에게 앱을 설치한다. 업데이트를 수동으로 실행할 때 버전이있는 앱에 어떻게 서명 할 수 있습니까? mybe some other idea?수동 버전 만들기

감사합니다. 레이.

답변

15

AndroidManifest.xml에 android:versionCodeandroid:versionName 속성을 사용할 수 있습니다. 그런 식으로, 한 패키지 이름은 동일로가 중복되지 않고 사용 가능한 최신 버전이 있는지 확인하기 위해이 같은 그 정보를 얻을 수 있습니다

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.moo.android.myApp" 
    android:versionCode="12" 
    android:versionName="1.2.37"> 

그런 다음이 값을 읽고 비교할 수는 이 같은 서버에 값과 :

try 
{ 
    PackageManager manager = context.getPackageManager(); 
    PackageInfo info = manager.getPackageInfo("org.moo.android.myApp", 0); 
    int code = info.versionCode; 
    String name = info.versionName; 

    // Compare with values on the server to see if there is a new version 
} 
catch(NameNotFoundException nnf) 
{ 
    nnf.printStackTrace(); 
} 

같은 응용 프로그램의 버전을 확인하는 경우 context.getPackageName()으로 하드 코딩 된 패키지 이름을 바꿀 수 있습니다.

+0

+1 이것은 내가 제안한 것의 "깨끗한"버전 일 것입니다. (솔직히 말해서 당신이하는 일을 솔직하게 ;-)) –

+4

원한다면 하드 코딩하는 대신'context.getPackageName()'을 사용할 수 있습니다. 나는 생각한다. – Timmmm

0

나는 말하기마다 그것들에 서명하는 것에 대해 걱정할 필요가 없습니다. 왜 버전 번호가있는 strings.xml 파일에 값이 없습니까? 서버의 값을 단순히 검사하면 업데이트가 필요한지 여부를 결정할 수 있습니다.

+0

감사합니다. 아프다.이 해결책을 시도하십시오. – rayman