본문 바로가기
개발/Android

[안드로이드 Android] applicationId, application id 변경

by 언제나초심. 2019. 2. 21.
반응형

개요

안드로이드 앱 개발에서 Package 명을 변경하고, application id 를 변경하는 것에 대한 내용입니다. 몇 번 변경해봤는데, 이제는 익숙하네요.. (...)



주의

작업을 하기 전에 반드시 백업을 하고 진행하시기 바랍니다. 



본문

1. 'Application Id' 변경

Open Module Settings (단축키: 모듈을 선택하고 F4) 로 들어가서 app > Flavors 에서

Application Id 를 변경합니다.


그리고 'Sync Project with Gradle' 을 한 번 해줍니다. 




2. AndroidManifest.xml 에 있는 package 값을 변경한다.

변경하고 나면, 버그가 많이 생길 것입니다 ... (의외로 안 생길 수도 있음. 상황마다 다름...)



모든 클래스 파일에 있는 R 을 호출하는 곳을 변경해주어야 합니다.


Edit -> Replace in Path 에서 찾으면서 교체합니다.


'import (이전 패키지명).R' 을 'import (바꿀 패키지명).R' 로 교체


BuildConfig 를 사용하고 있다면, 이 관련된 것도 찾아서 import 부분 변경합니다.



추가 설명

 R 을 찾을 때에 동일한 위치에 있는 것을 일단은 찾긴 합니다. (이 경우는 수정을 하지 않아도 됩니다)

만약, 소스 코드의 위치와 설정하려는 '패키지명' 의 위치가 다르다면, 일일이 import {패키지경로}.R 을 해주어야 합니다. 제가 그랬습니다.



3. Admob, Analytics 등의 설정을 살필 것


(1) AdMob 의 ID 를 확인

AdMob 에 로그인해서 확인해 둘 값

* 앱 ID : (예시) ca-app-pub-3940256099942544~3347511713

* 앱의 광고 Unit ID : (예시) ca-app-pub-3940256099942544/6300978111



Firebase 또는 Admob 에서 프로젝트 AdMob App ID 를 확인해 볼 것

* AdMob 에서 확인하는 방법 : AdMob > 앱 선택 > '앱 설정' 을 보면 있습니다. '앱 ID' 라는 값이 필요합니다. 추가로 광고 단위의 id 값도 필요하니 두 가지 다 확인해 두어야 합니다. 아래 에서는 '예제 id' 를 사용하였습니다.




변경할 것은


(1-1) AndroidManifest.xml 에서 '앱 ID' 값의 변경.


<meta-data
 android:name="com.google.android.gms.ads.APPLICATION_ID"
 android:value="ca-app-pub-3940256099942544~3347511713"/>



(1-2) strings.xml 에 설정한 값이 있다면 변경


<string name="ad_unit_id_banner" translatable="false">ca-app-pub-3940256099942544/6300978111</string>




(1-3) 

firebase 를 이용하고 있다면, google-services.json 을 새로 받아야 할 수도 있습니다. (상황마다 다름).



4. 그 다음에 할 일

생각보다 잘 안 될 수 있습니다. 보통 cache 부분을 새로 clean -> build 를 해주거나, 여러가지 캐시를 지우는 작업이 동반될 수 있습니다. Android Studio 를 재시작 해보거나, 추가적으로 발생하는 오류를 찾아서 해결해야할 수도 있습니다.


반대로 정말 아무렇지 않게 너무 쉽게 아무 이상이 없을 수도 있습니다. (이 경우는 기쁨 반 두려움 반.. ㄷㄷㄷ)





5. 메모 

Error:Execution failed for task ':app:processDebugGoogleServices'.

> No matching client found for package name '~~~'

(Application ID 가 맞지 않아서 Google Service 관련으로 뜨는 메시지 인데... 왜 적어둔지는 모르겠으나, 그냥 두기로 함)


반응형