https://lasselindh.tistory.com/1


안드로이드 앱을 개발하다보면 운영(Real)앱과 개발(Test)앱을 분리하여 관리해야될 때가 있다.스튜디오의 경우 패키지명만 변경하면 다른 어플리케이션으로 인식하여 개발앱과 운영앱을 동시에 설치가되지만 앱이름이 동일하기 때문에 앱이름도 변경을 시켜줘야되고 코드상의 Config변수또한 변경을 수기로 해줘야 한다. 이러한 불편함을 해소하고자 단순히 빌드옵션만 변경해서 패키지와 앱이름과 옵션이 틀린 두개의 앱을 만들어보는것이 이 포스팅의 목적이다.



1. 패키지명을 다르게 하기

첫번째 항목인 패키지명을 다르게 하는 방법은 생각보다 매우 간단하다. 평소 그레이들과 친하지 않기 때문에 몰랐던 옵션 하나만 추가하면 된다.

android {
buildTypes {
release {

}
debug {
applicationIdSuffix ".dev"
}
}
}

헉...너무 쉽다...위와같이 안드로이드 빌드 타입내의 applicationIdSuffix ".dev" 와 같이 추가만 해주면 개발용 keystore로 빌드 시 기본패키지명에 .dev 가 붙어서 빌드된다.

이게 끝이다...왜 이걸 몰랐을까.. ㅠㅠ


2. 앱이름을 변경하기 

첫째로 메니페스트를 수정해야 한다. 설명에 불필요한 요소는 모두 걷어냈으니 참고 바라며, 핵심은 application 요소중 android:label="${appName}", tools:replace="android:label" 를 아래와 같이 추가시켜주면된다. 메인액티비티에도 똑같이 수정해줘야하며, 다른 라이브러리 프로젝트에서 에러가 날경우 동일하게 수정해줘야한다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<application
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="${appName}"
android:largeHeap="true"
tools:replace="android:label">

<!-- Setting Activity -->
<activity
android:name=".activities.SplashActivity"
android:label="${appName}">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

두번째로 그레이들 빌드타입 설정을 아래와 같이 해준다. 릴리즈 키스토어 인 경우 기본 스트링에 따라가고 개발용 키스토어의 경우 내가 설정한 문자열로 나오게 된다. 

android {
buildTypes {
release {
manifestPlaceholders = [appName: "@string/app_name"]
}

debug {
applicationIdSuffix ".dev"
manifestPlaceholders = [appName: "개발용"]
}
}
}

3. 자바코드 분리하기 

일반적으로 운영서버와 개발서버가 다를경우 아래와 같이 처리할것이다. 

public static final boolean REAL = true;
public static final String SERVER_URL = REAL?"http://www.naver.com":"http://www.daum.net";

자바옵션의 경우 BuildConfig 라는 친하지 않은 놈을 사용하면 쉽게 해결가능하다. 

public static final boolean REAL = !BuildConfig.DEBUG;
public static final String SERVER_URL = REAL?"http://www.naver.com":"http://www.daum.net";





 

자 이제 이 옵션으로 설정하면 아래와 같은 결과물이 나올것이다

패키지에는 dev가 붙어서 나오고 앱의 이름은 개발용, 그리고 서버주소는 http://www.daum.net 가 된다. 


그리고 릴리즈 키를 통한 서명을 진행하면?? 결과는 본래의 패키지명, 본래의 앱이름, 그리고 서버주소는 http://www.naver.com이 된다.



출처: https://lasselindh.tistory.com/1 [모바일 개발자 LasseLindh]