'안드로이드 앱 업그레이드'에 해당되는 글 1건

728x90

Android 앱을 개발한 후 배포를 하기 위해 알아야 할 사항이다.


앱 build.gradle 에서

    defaultConfig {
        applicationId "com.android.USBController"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"


모든 Android 앱은 저마다 com.example.myapp과 같이 자바 패키지 이름처럼 보이는 고유한 애플리케이션 ID가 있다.
이 ID 덕분에 기기와 Google Play Store에서 각각의 앱을 고유하게 식별할 수 있는 것이다.
앱의 새로운 버전을 업로드하려면 애플리케이션 ID와 로그인할 때 사용할 인증서가 원래의 APK와 같아야 한다.
애플리케이션 ID를 변경할 경우 Google Play Store에서는 APK를 완전히 다른 앱으로 취급하게 된다.
따라서 일단 앱을 게시한 후에는 절대로 애플리케이션 ID를 변경하지 마시라.

앱을 개발할 때 기능을 약간 다르게 비교하면서 개발할 경우 applicationId 인 com.android.USBController 를 같게 하면 동일한 앱으로 컴파일된다는 걸 알 수 있다.
이 applicationId 만 다르게 하여 컴파일하면 두개의 앱이 생성되는 걸 확인할 수 있을 것이다.

PlayStore에 등록된 앱은 VersionCode와 VersionName의 두가지 속성을 가지고 있다.

VersionCode는 정수값을 이용하는데, 플레이 스토어 내부적으로 상위 버전을 구분하는데 사용되고, VersionName은 플레이 스토어에서 사용자에게 보여주기 위한 값으로 사용된다.


versionCode : 정수이며, 내부 버전 번호로 사용된다.
하나의 버전이 다른 버전보다 최신인지 여부를 판단하는 데만 사용되며, 번호가 높을수록 최신 버전이다.


versionName : 문자열이며, 사용자에게 표시되는 버전 번호로 사용된다.
사용자에게 표시하는 것 이외에 다른 용도는 없다.
따라서 별도로 시스템상으로 강제하고 있지 않다.


기업 내부용으로 이용시에는 신뢰할 수 없는 앱이라는 경고 표시가 나온다.

앱을 새롭게 업데이트해서 배포할 때마다

versionCode 와 versionName 을 숫자를 증가시켜야 오류가 발생하지 않는다.


아래 코드는 앱에서 현재 사용하는 버전이 어떤 버전인지 UI상에 표시해주는 코드이다.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        mContext = this.getBaseContext();
        backPressHandler = new BackPressHandler(this); // 뒤로 가기 버튼 이벤트

        // type1이 버튼형식
        findViewById(R.id.menu1).setOnClickListener(this);
        findViewById(R.id.menu2).setOnClickListener(this);
        findViewById(R.id.menu3).setOnClickListener(this);
        findViewById(R.id.menu4).setOnClickListener(this);

        TextView tv_version = findViewById(R.id.version);

        PackageInfo pInfo = null;
        try {
            pInfo = getPackageManager().getPackageInfo(this.getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        int versionCode = pInfo.versionCode;
        String versionName = pInfo.versionName; // build.gradle 에 기록된 VersionName
        tv_version.setText("Version "+versionName);
    }


블로그 이미지

Link2Me

,