투케이2K

189. (TWOK/LOGIC) [android] 안드로이드 apk 파일 사인 서명 인증서 지문 비교 로직 정리 - 앱 설치 수행 시 패키지가 충돌했습니다. 이슈 처리 본문

투케이2K 로직정리

189. (TWOK/LOGIC) [android] 안드로이드 apk 파일 사인 서명 인증서 지문 비교 로직 정리 - 앱 설치 수행 시 패키지가 충돌했습니다. 이슈 처리

투케이2K 2026. 5. 17. 10:16
728x90
반응형

[로직 정리]

정리 로직 : Mobile / Android

상태 : [android] 안드로이드 apk 파일 사인 서명 인증서 지문 비교 로직 정리 - 앱 설치 수행 시 패키지가 충돌했습니다. 이슈 처리

 

[설 명]

// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

1. 제 목 : [android] 안드로이드 apk 파일 사인 인증서 비교 확인 로직 정리 - 앱 설치 수행 시 패키지가 충돌했습니다. 이슈 처리


2. 테스트 환경 : 안드로이드 / android / apk


3. 사전) 👉 APK (Android Application Package) 파일 간략 설명

  >> APK 는 안드로이드 앱을 설치하기 위한 배포 파일 형식입니다.

    - PC 에서의 .exe, iOS의 .ipa와 같은 역할을 합니다.

  >> APK 파일 하나에 앱 실행에 필요한 모든 것이 포함되어 있습니다.

    - 앱 코드 (Java / Kotlin → DEX)
    - UI 리소스 (XML, 이미지, 문자열)
    - 앱 설정 (AndroidManifest.xml)
    - 서명 정보 (인증서)

  >> APK 내부 구조 (중요) : APK 는 사실상 ZIP 파일입니다. (확장자만 .apk)

    app.apk
    ├─ AndroidManifest.xml : 앱의 기본 정보 (패키지명, 권한, Activity 등)
    ├─ classes.dex : 앱 실행 코드 (Dalvik/ART용 바이트코드)
    ├─ resources.arsc 
    ├─ res/ : 레이아웃, 아이콘, 문자열
    ├─ assets/ : 그대로 사용하는 리소스
    ├─ lib/ : 네이티브 라이브러리 (.so)
    └─ META-INF/ : 서명정보 (매우 중요)

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

------------------------------------------------------
✅ 사전) 해당 이슈 발생 관련 증상 정리
------------------------------------------------------

1. 앱에는 출처를 알 수 없는 앱 설치 권한 부여 된 상태


2. 기존 APK 파일에서 새로운 버전 앱 파일 업데이트 수행 시 위와 같은 에러 메시지가 표시 되는 이슈


3. 안드로이드 특정 앱에서 ' 출처를 알 수 없는 앱 설치 ' 권한 부여 후 APK 파일 설치 및 업데이트 진행 시 

  ❌ ' 패키지가 충돌했습니다. ' 

  ❌ ' 앱이 설치되지 않았습니다 ' 
  
  메시지가 표시 이슈 문의



------------------------------------------------------
✅ 로직 정리) 안드로이드 apk 파일 사인 된 정보 비교 검증 정리
------------------------------------------------------

1. Git Bash 실행 후 AndroidStudio 에 포함 되어 있는 keytool 위치 확인 명령어 수행

  >> 명령어 : $ where keytool
  >> 결과 : C:\Program Files\Android\Android Studio\jre\bin\keytool.exe


2. keytool 이 포함 되어 있는 bin 폴더 까지 cd 명령어 이동 수행


3. bin 폴더에서 apk 앱 실행 파일 앱 서명 정보 확인 명령어 수행 (특정 경로에 apk 파일 준비 필요)

  >> 명령어 : $ ./keytool -printcert -jarfile /c/Users/twok/Desktop/app-debug.apk
  >> 결과 : 

서명:

소유자: C=US, O=Android, CN=Android Debug
발행자: C=US, O=Android, CN=Android Debug
일련번호: 1
적합한 시작 날짜: Tue Dec 20 17:20:24 KST 2022 종료 날짜: Thu Dec 12 17:20:24 KST 2052
👉 인증서 지문:
         SHA1: 72:20:ED:8D: ... 88:65:D6:23:45
         SHA256: A4:77:CA:2A ... :DE:22:F2:DB:A3:EF:7B:F0:35:D8
서명 알고리즘 이름: SHA1withRSA
주체 공용 키 알고리즘: 2048비트 RSA 키
버전: 1


4. 기존 apk 파일과 신규 업데이트 apk 파일 각각 인증서 지문 일치 여부 비교 수행 (인증서 지문이 다른 경우 사인 된 정보가 다름)



------------------------------------------------------
✅ 추가 정보) 안드로이드 build.gradle 파일에서 signingConfigs 설정 방법
------------------------------------------------------

android {
    namespace "com.twok.app"
    compileSdk 35

    defaultConfig {
        applicationId "com.twok.app"
        minSdkVersion 26
        targetSdk 35

        // 코틀린 이슈[minSdkVersion 20 이하 "AndroidX를 사용하지 않는" 경우]
        multiDexEnabled true

        // ----------------------------------------
        // TODO 앱 업데이트 시 해당 값 중요
        // ----------------------------------------
        versionCode = 38 // 해당 값 중요 > 앱 업데이트 판단
        versionName = "2.5.2"
        // ----------------------------------------
    }

    // ✅ 키스토어 설정 정보
    signingConfigs {
        release {
            storeFile file("signature/keystore") // 👉 Project >> app >> signature 폴더 >> keystore 파일 첨부 시 경로
            storePassword "twok1234"
            keyAlias "twok2k"
            keyPassword "twok1234"
        }
        debug {
            storeFile file('../keystore') // 👉 Project >> keystore 파일 첨부 시 경로
            storePassword "twok1234"
            keyAlias "twok2k"
            keyPassword "twok1234"
        }
    }

}

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

▶️ [업무 이슈] 안드로이드 apk 앱 설치 파일 설치 수행 시 ' 패키지가 충돌했습니다. ' , ' 앱이 설치되지 않았습니다 ' 메시지 표시 이슈

https://kkh0977.tistory.com/8815

https://blog.naver.com/kkh0977/224283300429


▶️ [Android] [출처 알 수 없는 앱 설치 허용] 앱 업데이트 여부 판단 및 앱 업데이트 수행 실시 - vnd.package-archive

https://kkh0977.tistory.com/4842

https://blog.naver.com/kkh0977/223258123850?trackingCode=blog_bloghome_searchlist


▶️ [안드로이드 키툴 (Keytool) 사용해 apk 실행 파일 앱 서명 정보 확인 방법]

https://kkh0977.tistory.com/6834

https://blog.naver.com/kkh0977/223550265510?trackingCode=blog_bloghome_searchlist


▶️ [안드로이드 apksigner 사용해 특정 apk 파일 jks , keystore 서명 인증 수행]

https://kkh0977.tistory.com/6973

https://blog.naver.com/kkh0977/223582075557?trackingCode=blog_bloghome_searchlist


▶️ [안드로이드 apksigner 사용해 특정 apk 파일 서명 인증 타입 확인 수행 (v1 , v2)]

https://kkh0977.tistory.com/6972

https://blog.naver.com/kkh0977/223582072292?trackingCode=blog_bloghome_searchlist


▶️ [업무 이슈] 안드로이드 apk 파일 빌드 시 필요한 jks 파일 alias 명칭 초기화 및 잊어 버림 이슈

https://kkh0977.tistory.com/7197

https://blog.naver.com/kkh0977/223626175927?trackingCode=blog_bloghome_searchlist


▶️ [업무 이슈] 삼성 갤럭 시 스마트폰 apk 파일 설치 시 보이스 피싱 의심 앱 설치 불가 문의 - 무시하고 설치 버튼 미표시

https://kkh0977.tistory.com/7974

https://blog.naver.com/kkh0977/223828837077?trackingCode=blog_bloghome_searchlist


▶️ [IT 정보] 구글 플레이 프로텍트 (Google Play Protect) 사용 해제 및 apk 파일 무시하고 설치 방법 (알 수 없는 앱 설치)

https://kkh0977.tistory.com/6333

https://blog.naver.com/kkh0977/223469956481?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments