안드로이드 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 툴을 통해 빌드 자동화를 하는 경우 특정 경로에 수정한 파일을 두고 빌드 시 카피 해서 동작 시키는 경우 자동화 가능할 것이다.
댓글