- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 미니슈트리뷰
- 인스타그램특수문자입력
- 인스타특수문자
- 제로페이상품권
- 아주조금아쉬운
- 제로페이로담배
- 가성비컴퓨터
- 인스타그램특수문자
- 원천징수이행상황신고서발급
- 이모지입력
- 중장년일자리지원
- 모바일제로페이
- 운전면허 갱신 방법
- 이모지찾는법
- 이마트몰
- 카카오채널네이버플레이스비교
- 제로페이모바일
- 운전면허 적성검사 하는 방법
- 산업분류코드
- 중장년일자리희망센터
- 중새카
- 국민내일배움카드
- 제로페이담배
- 제로페이사용기
- 상상우리
- 서울시지원금사용하기
- 원천징수이행상황신고서확인방법
- 제로페이모바일상품권
- 중장년새출발카운슬링
- 쓸만한도구가없네
人生襍多
1) Android Build를 위한 준비단계 본문
[안드로이드 빌드를 위한 준비 사항]
AOSP에서 나오는 것 참조 http://source.android.com/source/requirements.html
-. AOSP (Android Open Source Project)
말그대로 임.... http://source.android.com 에 각종 안드로이드 소스/메뉴얼 자료 등이 있음 .
비지니스용으로 google 계정하나 생성시킬 것......(소스 다운로드나, 커뮤니티 활동시 필요할 듯)
-. 최신 버전의 Ubuntu LTS : in house에서 지속적으로 test 한다는 군요
Ubuntu ( Linux 배포판 이름 )
안드로이드 빌드는 오직 Linux or Mac OS system에서만 됨
AOSP에서 나온 시스템 권장 사양을 보면,
at least 16GB of RAM/swap
at least 100GB of free disk space ( 뭐 이것저것 작업하려면 200GB는 확보 하랍니당..~ )
가능한 virtual machine는 사용치 말라네요
64bit 로 설치할 것 ( Gingerbread 이상~ )
스팩에는 안써있지만.....한글과 영어 로케일은 당연히 설치
-. Python 2.6~2.7
뭐 프로그램 언어 python.org
Python 3.4는 명기가 안되있는걸로 봐서....안되나 봄
-. GNU Make 3.81~3.82
소스컴파일을 위한 유틸리티(?) 프로그램임. gnu.org
추억의 make구나...
-. JDK 7
JAVA인데....
JDK 6 for Gingerbread through KitKat
JDK 5 for Cupcake through Froyo
-. Git 1.7 or newer
소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'의 이름 ( git-scm.com )
원래는 Linux 소스코드를 관리할 목적으로 개발되었고,
안드로이드 소스를 다운 받으려면, Git 프로그램(?)을 설치해야 함
한번더 메뉴얼에는 나오는데, 아래 List에 원하는 안드로이드 버전을 고려 하란다....
http://source.android.com/source/build-numbers.html
-. API Level : 음...명확히 설명은 안나오는데.....엔지니어가 고려해야 되는 framework 버전인듯
-. Android 2.3.4 / 2.3.3 은 API Level 9로 빌드 엔지니어는 동일 framework 봐도 된다 라는 의미
여기서 각 버전별 특징은
안드로이드 4.3 ~ 4.3.1 / JellyBean / API Level 18
-. Linux Kernel 3.4.0
-. 기본스마트폰 : Nexus 7
-. 블루투스 LE 지원
-. 와이파이 성능 및 사용시 편의성 개선
안드로이드 4.4 ~ 4.4.4 / Kitkat / API Level 19
-. Linux Kernel 3.4.0
-. 기본스마트폰 : Nexus 5
-. 512MB RAM을 사용하는 저사양 기기를 위한 메모리 최적화
안드로이드 5.0 ~ 5.0.2 / Lollipop / API Level 21
-. Linux Kernel 3.4.0 & 3.10.0
-. 기본스마트폰 : Nexus 6 & Nexus 9
-. 안드로이드 런타임(ART) 기본
-. 64 bit 지원
-. BLE 주변기기 모드
-. 멀티네트워킹
* ART
Dalvik을 개선한 가상 머신이다. Dalvik은 장치에 맞추어서 응용프로그램 실행시 매번 재 컴파일을 하였으나,
ART은 응용프로그램 설치시 미리 컴파일을 완료 한 뒤 저장하여 사용하는 형식
결론은 요즘 많이 쓰는 4.0버전(아이스크림 샌드위치) 이상의 안드로이드 빌드하여면 64bit 환경 및 이에 맞는 유틸을 설치해아 되니까 고려 하라는 얘기임
젤라빈 이상으로 .... 롤리팝은 목표로.....해야 할 듯
[실환경구축]
1. 우분투 14.04 설치
윗 글에 해당하는 H/W 사양
설치 후 기본 O/S 최신버전 업데이트 apt-get으로 확인
-. apt-get : 리눅스명령어. APT Advanced Package Tool 로 사용법 숙지 필요
이 부분이 잘 안된다면.... apt repository url 재설정 .... ( apt-get 사용법 숙지 필요 --;;)
2. JDK 7
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
-. sudo : 리눅스명령어 root권한으로 프로세스를 실행시킴
$ sudo java -version : 설치 버전확인. 이게 정상적으로 안 나올 경우나...JDK 세팅이 꼬이는 경우
설정 확인 완료 ( 그냥 해줘도 됨 )
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
-. update-alternatives : http://egloos.zum.com/hwanud/v/3052369 참조
3. 여러 유틸 및 라이브러리
@ Ubuntu 14.04일 경우
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
libgl1-mesa-dev libxml2-utils xsltproc unzip
@ Ubuntu 12.04일 경우
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
위 구문은 asop에 나온 스크립트인데.....python하고 git가 없다....
apt-get으로 설치 여부 확인 후, 설치 재확인 하시길.... ( 우분트 정상설치 되었으면 상관 없음 )
$ sudo apt-get install python
$ sudo apt-get install git-core
4. ADB 설치 및 USB가 연결될 수 있도록 Setting
리눅스 시스템에서 (특히 우분투 시스템에서), 일반 사용자가 직접 기본적으로 USB 장치에 액세스 할 수 없슴
나중에 ADB를 사용하기 위해 setting 필수
-. ADB ; Android Debugging Bridge / 컴퓨터와 단말기를 연결(보통 USB)하여 단말기를 제어하는 콘솔 프로그램
$ wget -S -O - http://source.android.com/source/51-android.rules | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
위 구문은 asop에 나온 스크립트인데.....
구분해 보면....
$ wget -S -O - http://source.android.com/source/51-android.rules
-. wget : http통신프로트콜로 파일을 다운 받아주는 유틸
-. 위 구분 실행하면, 51-android.rules 파일에 실행 시킨 디렉토리에 있을 것 임
$ vi 51-android.rules
편집하여... http://source.android.com/source/51-android.rules 외의 기타 USB 커넥션 정보 추가
#KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666"
#Lenevo
SUBSYSTEM=="usb", ATTR{idVendor}=="17EF", MODE="0666"
#LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"
#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"
#Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10A9", MODE="0666"
#SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666"
#Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666"
#Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"
$ sudo cp 51-android.rules /etc/udev/rules.d/.
$ sudo apt-get install android-tools-adb
$ adb devices
실행 시키면...몬가 열심히 찾다 실패.. ㅎㅎ
5. 별도의 출력 디렉토리 값 세팅 : 안해 도 될꺼 같은데, 했음
$ export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
<path-to-your-out-directory>에 /output : 당연히 mkdir /output
소스 경로가 /source/master1 및 /source/master2 에 있고
OUT_DIR_COMMON_BASE 로/output 설정되어 있다면,
출력 디렉토리가 /output/master1, /output/master2 로 될 것 임
6. repo 설치하기
마지막으로 소스를 다운로드 할때 소스의 위치를 찾기 위해서 사용하는 유틸 임
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
또는....
$ sudo apt-get install phablet-tools
기타. 최적화 (안해도됨)
앞에서 '여러 유틸 및 라이브러리' 설치 시 ccache라는 놈을 깔았는데...
ccashe라는 놈은 재빌드를 빠르게 해준다고 함
제안 된 캐시 크기는 50-100GB 정도로 세팅
.bashrc 편집
export USE_CCACHE=1
기본 cache저장소는 ~/.ccache 이나 지정가능
export CCACHE_DIR=<path-to-your-cache-directory>
prebuilts/misc/linux-x86/ccache/ccache -M 50G
아이스크림 샌드위치 (4.0.x의) 이상
prebuilt/linux-x86/ccache/ccache -M 50G
[소스 다운로드]
여기서 브랜치가 하나 생기는데,
asop의 순정안드로이드 소스와....누군가 커스텀한 커스컴안드로이드 소스가 있을 수 있음
우선 순정으로....
7-1. 다운로드
저장 디렉토리 만들고...
$ cd ~
$ mkdir Android
$ mkdir Android/AOSP
$ cd ~/Android/AOSP
repo 세팅인데...
$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.2_r1
-b android-5.0.2_r1를 안 적으로면 무조건 최신 버전으로 다운....
branch 명은 아래 주소 참조...
http://source.android.com/source/build-numbers.html#source-code-tags-and-builds
repo 세팅 시... 이름하고 이메일을 물어보면...
$ git config --global user.email "이메일주소"
$ git config --global user.name "사용자이름"
으로...등록 완료 하고...다시 repo init 하시면 됨.
$ repo sync
실제 다운로드 함......
7-2. 예외처리...
다운로드 관련 에러 (방화벽, 해당머신IP를 구글에서 막은경우 등..) 와 속도 저하 이슈 ( 미러사이트 이용 등) 가 있는데...
발생하면, http://source.android.com/source/downloading.html 참조
[소스 빌드]
여기서 브랜치가 하나 더 생기는데,
asop의 순정안드로이드 소스이기에...구글레퍼런스 H/W에 대한 정보가 이미 포함되어 있음...
H/W대한 정보가 없을 경우에는 toolchain을 H/W 제조사에서 받아서, 크로스 컴파일을 해야함...
또...Android 6.0이상 부터는.....구글레퍼런스H/W일지라도..
아래 적어둔 방법 말고...Compiling with Jack 방법으로 해야한다고 함..
우선....롤리팝까지 하는걸 목적으로...
8. 빌드환경 및 H/W 설정
$ cd ~/Android/AOSP
$ . build/envsetup.sh
몬가 흘러 감.....각 소스파일이 정상적으로 있나, 환경변수는 있나 살펴 보는 듯 함
$ lunch aosp_arm-eng 라고 하는데....
여기서 구글레퍼런스H/W의 기기종류와 빌드 타입을 설정 함 .
aosp_arm-eng => "기기종류"-"빌드타입"
빌드 타입은...
-. user : 제한된 액세스, 생산에 적합. / 이말은....우리가 쓰는 rooting 안된 스마트폰 임...
-. userdebug : 사용자의 루트 액세스 및 디버깅 용
-. eng : 개발환경과 디버깅 도구가 추가된 상태
기기종류명는...
"aosp_"에 "기기의 코드네임"을 합친 것
코드네임은 http://source.android.com/source/running.html 중간쯤 나와 있음
$ lunch aosp_arm-eng 은...
arm 에뮬레이터용 빌드임...
$ lunch aosp_hammerhead-eng 이러면....넥서스 5 용.....
순정 H/W가 없기에... $ lunch aosp_arm-eng 로..;;
9. 빌드
$ make -j4
"-j?"옵션은 사용할 CPU의 쓰레드 갯수
2CPU에....총 16core로 돌려도...1시간 정도....;;;
내 경우에는 코어2듀오 1.8GHz에서 2RAM 돌리기다가...2시간만에 뻑남...
10. 설치하기
빌드가 완료된 파일은 /output/target/product/기기명 에 있음
이 곳에서 빌드가 완료된 파일을 꺼내서 편한 위치로 옮긴 이후 "fastboot"를 이용하여 플래싱
$ adb reboot bootloader
H/W를 adb를 통해서 부트로더로 진입
$ fastboot flashall -w
플래싱...
-w 옵션은 wipes로....system, data, cache, Dalvik Cache 등의 영역을 초기화 시킴
처음에만 하고....두번째 부터는 안줘도 된다고 하는데....