안드로이드

디바이스를 구분하는 고유번호 ANDROID_ID 오레오

코딩하는후운 2022. 10. 25. 11:22
반응형

디바이스를 구분하는 고유번호

디바이스를 구분하는 고유번호로 ANDROID_ID를 사용했습니다.
android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
              Settings.Secure.ANDROID_ID);

ANDROID_ID는 디바이스가 최초 Boot될 때 생성 되는 64-bit값입니다.
이는 디바이스를 공장 초기화 하지 않는이상 바뀌지 않는 고유 값이라고 알고있었습니다.

하지만! 이 값이 변하는 경우를 보았습니다.
Android 8.0(오레오) 이상 버전에서 부터 정책이 바뀌게 되었는데요.

https://developer.android.com/about/versions/oreo/android-8.0-changes?hl=ko

중간에 내용을 보면
-Android 8.0을 실행하는 기기에 설치된 앱의 경우 ANDROID_ID의 값은 이제 사용자뿐 아니라 앱 서명 키별로
범위가 지정됩니다. ANDROID_ID의 값은 같은 앱 서명 키, 사용자 및 기기의 각 조합에 대해 고유합니다.
따라서 동일한 기기에서 실행중인 다른 서명 키가 있는 앱은(사용자가 동일하더라도) 더 이상 동일한 Android ID를 보지 못합니다.

앱 서명 키 별로 ANDROID_ID의 범위가 지정된다는 것을 알 수 있는데요.
즉 릴리즈 버전과 디버깅 버전의 APK의 Android ID가 다를 수 있다는 것입니다.

제가 확인해본 결과 Android 8.0 애서는 마켓에서 받았던 앱과 디버깅 APK 의 ANDROID_ID 가 다른것을 확인 할 수 있었습니다.

앱 사용자들은 디버깅APK 를 다운 받을 일이 없으니 서비스를 운영하는데에는 큰 문제는 없을 것 같다는게 제 의견입니다. ㅎㅎ

 

참조 :

https://black-jin0427.tistory.com/88?category=727620 

 

[Android_ID] Android 0 대응 하기 - Android Id 변경

안녕하세요 블랙진입니다. 저는 디바이스를 구분하는 고유 번호로  ANDROID_ID 를 사용했습니다. android_id = Settings.Secure.getString( getApplicationContext().getContentResolver(), Settings.Secure.AND..

black-jin0427.tistory.com

 

반응형