본문 바로가기
SW Developer/Android

안드로이드 delta 파일 생성시 signing password key 입력 넘어가도록 수정하는 방법

by ashespia 2022. 6. 16.
SMALL

안드로이드 Binary를 빌드하고 OTA를 위해 delta 파일 생성 시

ota_from_target_files 실행 시점에 signing 인증키를 입력하는 부분이 존재한다. 

 

Delta 파일이란?

A 버전과 B 버전 사이의 차분 만을 업데이트용 펌웨어를 생성하는 것이다. 

전체 바이너리를 다운로드 하는 것 보다 네트웍 저장소 시간 등 장점이 많다.

 

이에 휴대폰 제조사들에서는 Delta 파일을 만들어서 배포하는 경우가 많다.

 

안드로이드 Delta 파일 생성하기 위한 명령어 

./build/tools/releasetools/ota_from_target_files -k ./.android-certs/releasekey -i $prefile$value.zip $prefile$finalver.zip $model$value.$model$finalver.zip

 

양산 버전이 많아지는 경우

signing 혹은 delta package 생성을 위한 password를 무수히 입력해야하는 경우가 존재한다. 

 

signing 패스워드를 물어보는 함수가 있는 파일

./HLOS/build/tools/releasetools/common.py

 

 

diff /workspace1/ysbaik/script_backup/common.py build/tools/releasetools/common.py
1116,1118c1116,1117
<           #result[k] = getpass.getpass(
<           #    "Enter password for %s key> " % k).strip()
<           result[k] = "signingkey password"
---
>           result[k] = getpass.getpass(
>               "Enter password for %s key> " % k).strip()

 

 

signing 패스워드를 물어보는 함수

  def PromptResult(self, current): # pylint: disable=no-self-use
    """Prompt the user to enter a value (password) for each key in
    'current' whose value is fales.  Returns a new dict with all the
    values.
    """
    result = {}
    for k, v in sorted(current.iteritems()):
      if v:
        result[k] = v
      else:
        while True:
          #result[k] = getpass.getpass(
          #    "Enter password for %s key> " % k).strip()
          result[k] = "signingkey password"
          if result[k]:
            break
    return result

 

result[k] = getpass.getpass 함수 부분을 주석처리 하고 패스워드를 하드 코딩하여 값을 넣어주자.

 

젠킨스 (Jenkins), 트레비스(Travis) 등등의 CI 툴을 통해 빌드 자동화를 하는 경우 특정 경로에 수정한 파일을 두고 빌드 시 카피 해서 동작 시키는 경우 자동화 가능할 것이다.

LIST

댓글