Android source를 다운로드 후 수정 사항의 commit을 repo로 remote reposity에 반영할 때 에러가 발생하였다. Repo 명령어 (repo init, repo sync, repo start 등) 사용 시 Warning은 발생하더라 git init , clone, add, commit은 가능했지만, 결정적으로 repo upload 시 에러 발생하여 remote repository에 반영이 불가능하였다.
<에러 로그>
/home/temp/.repo/repo/main.py:19: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
import imp
Upload project android/apps/ to remote branch 158e3688a9d2898b80db166f70d1af19091f1cd7:
branch work_branch_release ( 1 commit, Fri Jun 19 18:12:29 2020 +0900):
b'50a624bc TEST : DO NOT MERGE\n'
repo 명령어는 https://kibua20.tistory.com/25에서 설명한 것처럼 구글 git에서 repo 실행 파일을 다운로드해서 설치한다. Android 소스는 최상위 폴더에 ./repo가 존재하고, /.repo 안에서는 각종 Project의 git 정보, branch 정보와 함께 python script 가 설치된다. 실제 Wanring 메시지를 보면 main.py 에서 참조하는 imp 모듈로 python script 문제임을 짐작할 수 있다.
(※Repo 설명은 네이버 얼씨구님 블로그에도 설명이 잘되어 있다. )
다른 PC에서는 repo 가 문제없이 동작하기 때문에 현재 운영 중인 안드로이드 소스가 문제가 있을 가능성은 낮고, 새로 설치한 우분투의 패키지 버전 문제로 예상하여 정상 동작하는 PC의 repo와 python 버전을 비교하였다. repo의 실행 파일은 위치는 $ which repo , repo 버전은 $ repo --version으로 확인이 가능하다. 비교 결과 문제 있는 PC에서는 repo 2.8 버전, repo launcher v2.8, git 2.25.1 버전으로 동일하지만, python 버전의 차이가 있었다.
* repo 실행 위치 확인: which repo (* repo 실행 파일 위치는 서버마다 다름)
* repo 버전 확인 repo --verison
회사에서는 Android 소스는 Q-OS 초기 버전이고, PC에 설치한 repo는 Q-OS의 최신 tag(android-10.0.0_r36 )을 받은 것으로 구글에서 Q-OS의 버전을 올리면서 python의 디폴트 버전을 2.7 버전에서 3.8 버전으로 변경한 것으로 추정된다. 이를 해결하기 위해서 정상 동작하는 서버의 repo를 문제 있는 PC의 repo 위치(=/usr/bin)에 copy 하여 재설치를 하였다. repo 동작을 확인 결과 문제없이 repo upload 가 가능하다. 안드로이드 소스에서 ./repo/repo/ 하위에 repo 실행파일을 같이 배포하고 있으니 이 버전을 사용하는 것이 가장 안전하다.
<관련 글>
[모바일/Android] - Android 소스 최적화 (100GB에서 65GB로 줄이기)
[모바일/Android] - Android 11 (R-OS) Emulator에 설치하기
[모바일/Android] - Android 11 기능 소개
[모바일/Android] - Ubuntu 20.04 에서 Android 10 빌드하기
[모바일/Android] - Android Studio 4.0 사용하기
댓글