[따라하는 빌드 #2] 안드로이드 AOSP 또는 CM 소스 다운로드(Sync) (따라하는 안드로이드 빌드)
안녕하세요!
두번째 시간입니다!
본 게시글은 아래 링크에서 모든 시리즈 혹은 관련 포스팅을 보실수 있습니다.
먼저 본 글은 윈도우나 리눅스등 운영체제나 기본적인 컴퓨터 상식정도는 알고있으신 분들을 중점으로 작성한 문서 입니다.
이번 글 부터는 복잡한 이전 방식을 대체하려고 하이퍼 링크로 본인이 필요하신 부분으로 바로바로 갈수 있도록 준비했습니다.
또한 글 내에 아래 두개와 같은 초록색 혹은 빨간색 글상자를 발견하신다면, 아래와 같은 역활을 합니다.
직접 키보드로 입력하셔야 하는 문구들
많이들 겪는 오류나 조심하셔야 하는 부분
그럼 본격적으로 시작하겠습니다.
목차 입니다.
따라하는 빌드 #2 안드로이드 소스 (sync) 다운로드
2-1. 원하는 소스 다운로드
2-1-1. Android Open Source Project 다운로드
2-1-2. Cyanogen Mod 다운로드
2-2. 공통작업 다운로드
이러한 순서로 진행하게 됩니다.
위 링크들을 클릭시 필요하신 부분으로 이동 됩니다.성성
1. 소스 다운로드를 위한 기본 준비
우선 구글의 안드로이드 Git 작업을 더 쉽게 해주는 구글의 Repo 라는 녀석을 설치해야 합니다.
Repo에 대한 자세한 정보는
https://source.android.com/source/developing.html (영문)
위 링크에서 보실수 있습니다.
방법은 상당히 간단합니다.
mkdir -p ~/bin
위 명령어를 터미널에 입력해 줍니다.
위 명령어는 내 홈디렉토리 (/homin/(계정명) 을 ~ 로 리눅스에서 빠르게 이동 및 표현이 가능합니다)안에 bin이라는 폴더를 만들라는 명령입니다.
-p 옵션은 하위 디렉토리 까지 만들라는 뜻인데, -p 없이 mkdir ~/1/2/3 을 치면 오류가 납니다. ~/1/2/3 은 1폴더 속 2폴더 속 3폴더를 만들라는 뜻인데 1 과 2 폴더가 없으니 오류가 납니다.
-p는 1과 2까지 알아서 만들라는 녀석 입니다 .(사실 잘 몰라요 ㅌㅌ)
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
위 처럼 입력해 주시면 기본적인 준비가 끝났습니다!
하지만 우리는 작업할 공간을 지정 해야 합니다.
위 mkdir 명령어를 응용같진 않지만 응용하셔서 자신이 원하시는 작업 공간을 만드시거나, 탐색기를 이용하셔서 만들어 주시면 됩니다.
여기서 뜻하는 작업공간은 안드로이드 소스를 받고, 빌드할 공간 입니다.
제 기준으로는 /home/icaros7/workspace/cm 입니다.
꼭 workspace 폴더 속 AOSP폴더가 아니어도 됩니다.
mkdir -p ~/workspace/cm
다 만들어 주셨다면, 터미널로 그 폴더로 이동 해야 합니다.
아래는 제 기준 입니다.
cd ~/workspace/cm
2. 안드로이드 소스 다운로드
2-1. 원하는 소스 다운로드
이중 본인이 원하시는 것을 받으시면 됩니다.
매우 많은 소스가 존재하지만 필자는 가장 대표적인 AOSP소스와 CM소스만을 다루겠습니다.
2-1-1. Android Open Source Project 다운로드
우리가 흔히 이야기하는 AOSP 소스 입니다. 구글에서 배포하는 순수한 안드로이드 소스 입니다.
먼저 자신이 다운로드 하고 싶은 안드로이드의 버전을 정해야 합니다.
원하는 안드로이드 버전은 아래 리스트에서 확인 하셔야 합니다.
https://source.android.com/source/build-numbers.html#source-code-tags-and-builds (영문)
위 링크는 매일 새로운 버전이 생긴다면 업데이트 됩니다.
위 링크 리스트에서 우리가 필요한 것은 해당 안드로이드 버전의 Branch 값 입니다.
예를 들어
2015년 9월 24일 필자가 이 글을 작성하는 기준으로 가장 최신의 안드로이드 버전인 android-5.1.1_r18 입니다.
repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r18
위 명령어를 터미널에 입력해주시면 repo가 알아서 저 위치의 소스를 받아올 준비를 하게 됩니다.
준비가 완료되셨다면, 아래 2-2로 이동해주세요.
2-1-2. Cyanogen Mod 다운로드
우리가 흔히 이야기하는 CM 소스 입니다. CyagnogenMod 팀에서 아니 이제 회사라고 해야 하나요...아무튼 CM에서 배포하는 소스 입니다!
먼저 자신이 다운로드 하고 싶은 CM의 버전을 정해야 합니다.
원하는 CM의 버전은 아래 사이트 중 드롭다운 목록에서 확인이 가능합니다.
https://github.com/CyanogenMod/Android (영문)
저~기 빨간색 테두리가 있는 녀석을 눌러서 나오는 리스트를 확인해주시면 됩니다.
예를들어
2015년 9월 24일 필자가 이 글을 작성하는 기준으로 가장 최신의 안드로이드 버전인 cm-12.1 입니다.
repo init -u https://github.com/CyanogenMod/android.git -b cm-12.1
위 명령어를 터미널에 입력해주시면 repo가 알아서 저 위치의 소스를 받아올 준비를 하게 됩니다.
준비가 완료되셨다면, 아래 2-2로 이동해주세요.
2-2. 공통작업 다운로드
위 2-1 옵션에서 원하는 소스의 다운로드를 준비시켰다면 이제 repo sync 를 받아야 합니다!
방법은 매우 간단합니다 흐흐
터미널에서 진짜로 repo sync 만 쳐주시면 다운로드 됩니다만, 속도가 매우 발암을 유발함으로 한번에 여러개의 파일을 다운로드 해주어야 합니다.
공식 사이트들에서 권장하는 동시 다운로드수는 2~6개 정도이지만, 필자는 40개씩 받을껍니다. (...) 한번 받고 누락된 파일을 다시 다운로드 해주는 과정을 거처준다면 문제 없습니다!
원하는 동시 다운로드 수는 repo sync 명령어 뒤에 -jXX 를 붙여서 가능 합니다.
예를 들어 필자의 경우
repo sync -j40
입니다.
성공적으로 다운로드가 되었다면, 위 처럼 repo 가 Sync 작업을 합니다!
그런데 전 지금 CM서버에 문제가 있나 몇몇 파일이 404 오류를 뿜으며 계속 누락 되는군요.
그래서 다음번에 받기로 했습니다~
3. 이 과정을 마치며!
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
[따라하는 빌드 #1] 안드로이드 AOSP 또는 CM 개발 환경 구성 (따라하는 안드로이드 빌드) (1) | 2015.09.22 |
---|---|
LG 옵티머스Q2 [LG-LU6500] 의 루팅 과정 (0) | 2013.06.14 |
[Dev] TWRP 리커버리 포팅하기 (Team Win Recovery Project) (4) | 2012.11.25 |
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[따라하는 빌드 #1] 안드로이드 AOSP 또는 CM 개발 환경 구성 (따라하는 안드로이드 빌드)
안녕하세요!
오랜만에 이 시리즈 글을 쓰네요. (아니 새로 구성하고는 처음이지요? ㅌㅌ)
본 게시글은 아래 링크에서 모든 시리즈 혹은 관련 포스팅을 보실수 있습니다.
먼저 본 글은 윈도우나 리눅스등 운영체제나 기본적인 컴퓨터 상식정도는 알고있으신 분들을 중점으로 작성한 문서 입니다.
이번 글 부터는 복잡한 이전 방식을 대체하려고 하이퍼 링크로 본인이 필요하신 부분으로 바로바로 갈수 있도록 준비했습니다.
또한 글 내에 아래 두개와 같은 초록색 혹은 빨간색 글상자를 발견하신다면, 아래와 같은 역활을 합니다.
직접 키보드로 입력하셔야 하는 문구들
많이들 겪는 오류나 조심하셔야 하는 부분
그럼 본격적으로 시작하겠습니다.
목차 입니다.
따라하는 빌드 #1 안드로이드 개발 환경 구성
2-1. 자바 설치
2-2. 필수 패키지 다운로드
3-3. ADB 사용을 위한 규칙 수정
이러한 순서로 진행하게 됩니다.
위 링크들을 클릭시 필요하신 부분으로 이동 됩니다.성성
1. 64비트 우분투 설치
2. 안드로이드 개발 환경 구성
우분투가 모두 성공적으로 설치 되셨나요
바로 급하지만 우리는 안드로이드 개발 환경 구성을 해야 합니다,
우분투가 모두 부팅이 되셨다면, 컨트롤키 + 알트키 + T키를 눌러주세요.
위와 같이 우분투의 내장 터미널이 실행될것 입니다.
우분투는 여기서 모든 작업이 가능 합니다. NT커널을 사용하고 DOS를 대체하는 명렴프롬프트만이 존재하는 윈도우와는 많이 다르게 모든 작업이 가능 합니다.
오히려 저는 종종 마우스로 누르는거보다 여기서 작업하는게 더 편한 경우도 있습니다만은 파일 관리는 마우스가 편합니다 ㅎㅎ
우선 자신이 개발할 안드로이드 환경을 정하셔야 합니다.
여기까지 오신분이라면 안드로이드에 대한 기본 지식은 있다 생각하겠습니다.
2-1. 자바 설치
롤리팝 5.0 이상의 안드로이드의 경우 자바 이용시 7버전을 사용 합니다.
진저브레드 2.3 이상의 안드로이드에서 킷켓 4.4의 안드로이드까지는 자바 이용시 6버전을 사용합니다.
컵케잌1.5 이상의 안드로이드에서 프로요 2.2의 안드로이드까지는 자바 이용시 5버전을 사용합니다.
자신이 해당하는 부분의 자바를 설치해야함을 기억 해주세요~
이 글에서는 롤리팝 소스를 받고, 안드로이드 사이트 master 브랜치를 받으시는 경우 무조건 늘 최신 버전의 자바를 설치하시면 됩니다.
sudo apt-get update
sudo apt-get install openjdk-7-jdk
우선 자바를 설치하시 위해 우분투에서 주로 쓰이는 OpenJDK 를 설치 합니다.
만일 성공적으로 설치 되신 경우에는 "java -version" 명령어를 입력하시면 아래와 비슷하게 나오셔야 합니다.
2-2. 필수 패키지 다운로드
그런 다음 안드로이드 개발에 꼭 필요한 필수 패키지 들을 설치하셔야만 합니다.
본 글은 우분투 14.04 를 기준으로 작성하였습니다.
sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
적
성공적으로 설치가 완료되셨다면 개발환경 구성의 반이상이 끝났습니다!
아래서부터는 필수 과정은 아닙니다만은 없으면 많이 불편하죠.
2-3. ADB 사용을 위한 규칙 설정
개발과정중 ADB사용이 안된다면 상당한 불편함이 있습니다.
일딴 우분투에서는 기본적으로 각종 핸드폰 제조사별 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
위 문구를 터미널에서 입력해 줍니다. 그러면 알아서 구글에서 가장 최신의 정보가 적혀있는 녀석을 알아서 설치하고, 필요한 서비스를 재시작 해줍니다.
(저도 이글쓰면서 처음 알았네요. 이때까지 늘 따로따로 직접 했는데...)
3. 이 과정을 마치며!
모든 과정이 오류 없이 성공적으로 준비 되셨나요?
그렇다면 이미 안드로이드 빌드 과정에 한 100분의 1쯤 다가 왔습니다 (...)
왜냐하면 안드로이드 소스를 받는게 100분의 98 이거든요!!!! 아오 오래걸려라
만약 여기까지하시는데 멘탈이 깨지신다?!?!!?
이제 빌드중에 오류나시면 훨훨 날라가십니다.
단단히 준비하세요!
사실 이 편에서는 여기다가 적을께 뭔가 없네요.
다음에 뷉겠습니다!
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
[따라하는 빌드 #2] 안드로이드 AOSP 또는 CM 소스 다운로드(Sync) (따라하는 안드로이드 빌드) (0) | 2015.09.24 |
---|---|
LG 옵티머스Q2 [LG-LU6500] 의 루팅 과정 (0) | 2013.06.14 |
[Dev] TWRP 리커버리 포팅하기 (Team Win Recovery Project) (4) | 2012.11.25 |
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
LG 옵티머스Q2 [LG-LU6500] 의 루팅 과정
안녕하세요.
오늘은 다름이 아니라 LG 옵티머스Q2의 루팅 과정에 대해 좀 이론 처럼(?) 뺵빽 하게 적어 봅니다.
저도 초보이지만, 메모 차원에서 글을 남깁니다.
먼저 이글은 옵티머스Q2의 최초의 아이스크림 샌드위치 펌웨어인 137펌웨어를 기준으로 작성했습니다.
먼저 이글은 백원만님 (jungil0502@naver.com)에 의해 만들어질수 있었던 방법 입니다.
읽으시기전 유용할것이다 라고 생각 되면 손가락 한번씩만 눌러주십시요~^^
모바일이라면 맨 아래에서라도 괜찮다 싶으면 눌러주세요 ㅠㅠ
먼저 옵티머스Q2는 120,126,128 진저브레드 펌웨어 그리고 131 유출 아이스크림 샌드위치때는 부트로더 락이 걸려있지 않았습니다.
하지만 이번 137 ICS펌웨어에선 부트로더 락 이 걸리게 되었습니다.
엔디비아 테그라2 AP2Xh 의 부트로더에 관한 자세한 내용은 영구땡칠님이 정리하신 글이 있습니다.
http://cafe.naver.com/androidhacker/323 위 글 참조해 주시면 될듯 합니다.
또한 이 부트로더의 크랙 관련글도 위 링크에 같이 있습니다.
※크랙과 언락은 약간 다릅니다. 주로 언락은 제조사에서 부트로더 언락을 공식적으로 지원하는 경우에 사용하고, 크랙은 사용자가 직접 부트로더를 수정하는 경우가 됩니다.
이 부트로더를 크랙을 해야지만 옵티머스Q2는 루팅이 가능 합니다.
옵티머스Q2에서 사용하는 루팅 방식은 아래와 같습니다.
1. 부트이미지의 램디스크의 default.prop에서 adb 연결시 자동으로 root 권한으로 실행되게 수정
2. 부팅 완료후 adb 를 이용해 루팅 관련 파일 (su 바이너리, SuperSU등) 주입
3. 재부팅
위와 같은 과정을 사용했습니다.
하지만 이번엔 부트로더의 락에 의해
수정된 부트이미지를 부트 영역에 넣고 부팅을 할 경우 LG벽돌이 됩니다. (옛날 옵큐의 OZ벽돌이나 요즘 옵티머스의 시큐리티 에러등)
부트로더가 부트이미지가 순정 이미지가 아니라면 그대로 부팅을 중지시킵니다.
그러하여 4단계로 나눠지게 되었습니다.
1. 부트이미지의 램디스크의 default.prop에서 adb 연결시 자동으로 root 권한으로 실행되게 수정
2. 백원만님의 크랙된 137 부트로더 적용
3. 부팅 완료후 adb 를 이용해 루팅 관련 파일 (su 바이너리, SuperSU등) 주입
4. 재부팅
옵티머스Q2의 경우엔 Nvidia 사의 테그라2 3D AP25H 칩셋을 사용해 APX 모드라는 녀석이 사용이 가능 합니다.
APX 모드는 Fastboot 등과 같은 역활을 합니다. 허나 테그라2 AP20H를 사용하는 아트릭스 같은 경우엔 apx모드 사용이 불능 하여 Fastboot 을 사용합니다.
아무튼 APX 모드라는 꽤나 강력한 놈이 있기에 우린 부트로더도 손쉽게 플래싱이 가능 합니다.
APX라는 녀석이 있어서, 옵티머스 2x, Q2, Ex는 벽돌 불가폰이 되었습니다.
nvflash 라는 프로그램과 관련 라이브러리를 따로 구하셔야 합니다만 전 원 출처를 잘 몰라 제가 소유하고 있는 파일을 사용합니다.
nvflash.exe --bl 부트로더파일 --download 파티션번호 이미지.img
가 기본적인 명령 입니다.
간단히 플래싱을 할 경우에 사용하는 명령어 입니다.
옵티머스Q2의 경우엔 부트로더 영역은 4번 파티션 입니다.
하지만 크랙 부트로더 플래싱은 가장 마지막에 해야 합니다.
먼저 수정된 부트 이미지를 플래싱 합니다.
nvflash --bl bootloader.bin --download 12 ics137boot.img
# nvflash.exe --bl nvflash용부트로더 --download 12번부트로더파티션 수정된부트이미지
nvflash 의 --bl 명령어는 먼저 nvflash.exe와 APX모드를 연결할때 사용하는 부트로더를 먼저 4번 부트로더 영역에 플래싱 합니다.
저 nvflash 용 부트로더는 진저브레드때의 부트로더 입니다.
이젠 부트로더를 플래싱 하여야 합니다.
nvflash 는 한번만 --bl 명령어인 부트로더를 주입하면 됩니다. 그러하여 다음부턴 -r 명령어를 사용하여 그 전에 플래싱 했던 nvlfash 용 부트로더를 계속 사용한다고 합니다.
그러하여 아래와 같은 명령을 이용해 플래싱 합니다.
nvflash -r --download 4 ics137crackboot.bin
# nvflash.exe -r --download 4번부트로더파티션 크랙된부트로더
를 입력하여, 플래싱을 합니다.
이렇게 하였다면, 이제 모든 과정은 완료되었습니다.
이젠 그저 adb 를 사용해 약간 파일만 넣어주면 됩니다.
이곳은 제가 제작해둔 http://cafe.naver.com/optimusq2life/7591 글에 있는 One Power 라는 루팅툴의 동작을 알아보겠습니다.
일딴 휴대폰에서 설정 - 개발자 옵션 - USB 디버깅 모드에 체크가 되어야 합니다.
(진저브레드 이하의 OS의 경우 설정 - 어플리케이션 (응용프로그램) - 개발 - USB디버깅 입니다)
su 파일과 busybox,SuperSU.apk 는 rooting 이라는 폴더 내에
adb 는 adb 라는 폴더 내에 있습니다.
adb\adb wait-for-device # USB가 연결이 될때까지 기다립니다.
adb\adb remount # 모든 파티션을 마운트 합니다.
adb\adb push rooting/su /system/xbin/su # SU파일을 /system/xbin (명령어 폴더)에 넣습니다.
adb\adb shell chown 0.0 /system/xbin/su # SU파일의 소유자 정보를 수정합니다.
adb\adb shell chmod 06755 /system/xbin/su # SU파일에 755권한과 특수 권한을 부여 합니다.
adb\adb shell ln -s /system/xbin/su /system/bin/su # SU파일을 /system/bin 에 심볼릭 링크를 생성합니다.
adb\adb push rooting/busybox /system/bin/busybox # busybox 를 /system/xbin (명령어 폴더)에 넣습니다.
adb\adb shell chown 0.0 /system/bin/busybox # busybox파일의 소유자 정보를 수정합니다
adb\adb shell chmod 0755 /system/bin/busybox # busybox파일에 755 권한을 부여 합니다
adb\adb push rooting/SuperSU.apk /system/app/SuperSU.apk # SuperSU 앱을 시스템 앱으로 복사합니다.
adb\adb shell chown 0.0 /system/app/SuperSU.apk # 소유자 정보 수정.
adb\adb shell chmod 0644 /system/app/SuperSU.apk # 644권한 부여.
위 와 같은 동작에 의해 모든 과정이 완료 됩니다.
그리곤 adb\adb reboot 한번.
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
[따라하는 빌드 #2] 안드로이드 AOSP 또는 CM 소스 다운로드(Sync) (따라하는 안드로이드 빌드) (0) | 2015.09.24 |
---|---|
[따라하는 빌드 #1] 안드로이드 AOSP 또는 CM 개발 환경 구성 (따라하는 안드로이드 빌드) (1) | 2015.09.22 |
[Dev] TWRP 리커버리 포팅하기 (Team Win Recovery Project) (4) | 2012.11.25 |
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[Dev] TWRP 리커버리 포팅하기 (Team Win Recovery Project)
안녕하세요!
Icaros 이자, Se7eN 인 Winpower7 입니다! (으잉?)
오늘은 그 유명하고 빠릿하고 간지 좔좔 줄줄 흐른다고 알려져있는, TWRP 리커버리를 한번 포팅 시도를 해보겠습니다!
Twrp 리커버리란?
TeamWin 팀에서 만든 리커버리로써, 현제 많은 기기가 이용중인 CWM리커버리보다 강력하며 빠른 리커버리 입니다.
TeamWinRecoveryProject 의 약자로써, 국내에도 몇몇 기기에 포팅이 되어 많은 사랑을 받고 있습니다.
※참고로 본 블로그는 드레그 기능을 지원하지 않음으로, 맨 아래 보시면 TXT파일로 따로 저장한 파일잉 있습니다.
왼쪽 옵티머스 3D와 오른쪽 갤럭시 넥서스에 실행되고 있는, Twrp 리커버리 / http://cafe.naver.com/nexusdevelops/8514 / http://cafe.naver.com/nxss/230342)
위 사진 처럼, 터치, 배터리 퍼센트 표시기, 소프트키, 암호화 등의 CWM과 다른 기능들로 많은 신비함을 뿜어 내고 있답니다 ㅎㅎ
하지만 이런 리커버리....지금까지 포팅이 된 리커버리는 주로 ClcokworkMod 리커버리 입니다.
그럼 이제, Twrp 리커버리도 각 기기에 알맞게 포팅시도를 해볼까요?
안탑갑게도, 전 국내 LG 옵티머스Q2에 포팅시도를 하고 있지만, 아직까지 LG벽돌이 기다리고 있을뿐 ~_~;;
먼저 이 포팅법은 Rootzwiki 에 TeamWin 에서 직접 작성해준 글을, 제 흐접 영어 실력으로 번역한 글 입니다.
원문 : http://rootzwiki.com/topic/23903-how-to-compile-twrp-from-source/
일딴 제가 한국어로 조금 원문과 다르게 쉽게 번역을 하였습니다.
직역을 한곳엔 표시를 하였습니다.
1. 리커버리 소스 파일 교체
먼저 자신이 어떤 소스를 받았는지 알아야 합니다.
예전 제 글을 따라 오셨다면, http://minnote.net/117 이글에서 안드로이드 버전 마다~ 이 부분을 보시면
각각 받은 소스가 다릅니다.
일딴 현제 이 글에 나와있는 말은 진저브레드 소스 (CM7)과 아이스크림 샌드위치 소스 (CM9) 만 언급되었습니다.
CM10 소스 및 CM6 소스는 어떻게 되는지 잘 모르겠습니다.
※안드로이더스 카페 내 콜홍님이 CM10 역시 CM9 처럼 하면 된다고 알려주셨습니다.
* CM9/CM10 소스를 받으신 분
Cyanogen Mod 9 ICS 소스를 받으신 분은
https://github.com/TeamWin/Team-Win-Recovery-Project/
위 링크에 들어 가셔서, 파일을 받으신후
CM소스 폴더/bootable/recovery 폴더를 교체해 주세요.
※ 예) /home/icaros/android/system/bootable/recovery
* CM7 소스를 받으신 분
Cyanogen Mod 7 GB 소스를 받으신 분들은 빌드 폴더도 같이 교체를 해주셔야 작업이 가능 합니다.
CM9 설명과 동일하게
https://github.com/TeamWin/Team-Win-Recovery-Project/
위 링크로 들어 가셔서, 파일을 받으신후
CM소스 폴더/bootable/recovery 폴더를 교체해 주세요.
※ 예) /home/icaros/android/system/bootable/recovery
CM7 소스를 받으신 분들은 빌드 폴더 또한 교체를 해주셔야 합니다.
https://github.com/Dees-Troy/TWRP2-CM7_build
위 링크로 들어 가셔서, 파일을 받으신후
CM소스 폴더/build 폴더를 교체해 주세요.
※ 예) /home/icaros/android/system/build
2. 컴파일을 하기 전 기본 정보 수정
먼저 컴파일을 하기전에, 디바이스 정보를 TWRP 리커버리에 알맞게 수정을 하셔야 정상 사용이 가능 합니다.
예전에 제 글을 따라 오셨다면, 아마
/home/(사용자 계정명)/android/system/device/(제조사)/(기기명) 폴더가 있습니다.
그쪽으로 터미널이 아닌 마우스를 통해 들어가주세요 ㅎㅎ
※ 예) /home/icaros/android/system/device/lge/lu6500
그러신뒤, 그 폴더를 가보시면 BoardConfig.mk 파일이있습니다.
※현제 윈도우에서 글을 작성하여, 우분투 환경으로 스크린샷을 찍지 못하였습니다...ㅠㅠ 추후 수정하겠습니다.
※다른 CM포팅 작업을 하던 디바이스 셋팅 파일로는 컴파일 하는데 지장이 있을수 있으니, 새로운 부트이미지를 해체 하셔서 작업하시는것을 추천 드립니다.
그런뒤, BoardConfig.mk 파일 내에
TARGET_RECOVERY_INITRC :=
란 문장이 있는지 확인 합니다. 없을 경우 추가해 주시고, 있는 경우
기존에 만들고 있던 리커버리나, 이 방법을 통해 만든 리커버리의 램디스크내에 있는 init.rc 파일 내에
on init
export PATH /sbin
export LD_LIBRARY_PATH .:/sbin
라는 문장이 있는지 확인해 줍시다. Q2 이미지 같은 경우엔, 5번째 줄에 있었습니다.
모두 성공적으로 확인이 되었다면, 이제 다시 BoardConfig.mk 파일로 돌아와
맨 아래쪽에
DEVICE_RESOLUTION := 해상도 가로 값x해상도 세로 값
을 추가 합니다.
예) DEVICE_RESOLUTION := 540x960
예) DEVICE_RESOLUTION := 480x800
※참고
아오 제 대가리로 해석을 못하겠어요. 혹시나 해서 언제나 믿지 않았던 발번역을 돌렸지만, 역시 믿을께 못되는듯
원문
Note that themes do not rotate, so the 1280x800 theme is intended for tablets and would not work on the Samsung Galaxy Note that expects a 800x1280 type of theme (which doesn't exist yet).
직역본?...
테마들은 회전을 하면 안됩니다. 그래서 1280x800 테마는 타블렛 PC들 그리고, 삼성 갤럭시 노트 같은 800x1280 타입의 테마에선 아직 동작하지 않습니다.
아마 타블렛 PC등에서 기본적으로 가로모드가 기본 상태인 몇몇 디바이스들이 해상도를 입력할때 갤럭시 노트를 예로 들자면
800x1280 으로 입력을 하라는 소리 같습니다. 즉 가로모드는 지원이 안되어, 1280x800 으로 입력을 하면 화면이 짤리는듯 합니다.
※100% 정확하지 않습니다.
그리고 만약 부팅을 했을때, 그래픽이 깨지는 현상이 일어 난다면 아래 문구를 BoardConfig.mk 파일에 추가 합니다.
RECOVERY_GRAPHICS_USE_LINELENGTH := true
여기 까지를 하면 기본적인 셋팅은 끝나는듯 합니다.
이제 여기서 부턴 부가적인 셋팅 입니다. 하지만 필요한 경우가 많습니다. 잘 읽어봐주세요.
BoardConfig.mk 파일에 적용되는것들 입니다.
이 아래 부분은 가장 첫 부분이지만, 해석을 해봐도, 발번역을 해도 뭔소리인질 모르겠습니다.
아래는 당신이 어떻게 개별 / 파티션들을 어떻게 추가로 백업 옵션에 넣을 수 있는지 입니다. 'SP1_NAME' 항목은 recovery.fstab 에 정의된 파티션의 이름과 일치해야 합니다.
'SP1_DISPLAY_NAME' 은 백업된 파일이 'SP1_NAME'의 파티션 이름과 달라야 할 경우에 쓰이는 이름입니다. 'SP1_BACKUP_METHOD'는 파티션이 어떻게 정의되어야 할지(파일 혹은 이미지)
를 결정합니다. 그리고 'SP1_MOUNTABLE' 항목은 파티션이 마운트 될 수 있는지 여부를 결정합니다.
SP1_NAME := "pds"
SP1_BACKUP_METHOD := files
SP1_MOUNTABLE := 1
SP2_NAME := "osh"
SP2_DISPLAY_NAME := "Webtop"
SP2_BACKUP_METHOD := files
SP2_MOUNTABLE := 1
SP3_NAME := "preinstall"
SP3_BACKUP_METHOD := image
SP3_MOUNTABLE := 0
고글 발번역을 돌리면
아래는 백업에 사용할 파티션의 목록에 사용자 정의 / 특별 파티션을 추가 할 수있는 방법입니다.SP1_NAME는 recovery.fstab에 정의 된 파티션의 이름과 일치해야합니다. 이 SP1_NAME 다를해야 할 경우 SP1_DISPLAY_NAME는 백업 페이지에 표시되는 이름입니다. SP1_BACKUP_METHOD는 파티션 (파일 또는 이미지) 백업하는 방법을 정의합니다. 그리고 파티션하는 경우 SP1_MOUNTABLE 결정을 장착 할 수 있습니다.
이라 나옵니다.
아마 특수 파티션을 위한 경우인듯 합니다.
RECOVERY_SDCARD_ON_DATA := true - /data/media 를 핸들링하여 사용하는 디바이스들을 위한 구문 입니다.
(허니콤 디바이스들과 ICS에선 갤럭시 넥서스 같은 디바이스들이 필요한 것 입니다)
BOARD_HAS_NO_REAL_SDCARD := true - SD카드 파티셔닝 같은 기능들을 사용하지 않습니다.
TW_INCLUDE_DUMLOCK := true - HTC Dumlock 같은것이 필요 할때 사용합니다. (아마 독바가 추가 되는듯 합니다)
이 글상자는 내장 SD카드를 가진 폰들은 필요한 작업입니다.
즉 내장SD카드가 있는 폰이라면 필요 합니다.
※ 외장 SD카드를 꼽지 않아도, SD카드가 있는 폰
recovery.fstab 에 쓴 내용이랑 일치시켜 주세요!
예를 들어 recovery.fstab 에 내장 메모리를 /emmc 에 지정하고, 외장 SD카드를 /sdcard 에 넣었다면 아래와 같이 추가 합니다.
TW_INTERNAL_STORAGE_PATH := "/emmc"
TW_INTERNAL_STORAGE_MOUNT_POINT := "emmc"
TW_EXTERNAL_STORAGE_PATH := "/sdcard"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"
원래 원문은
TW_INTERNAL_STORAGE_PATH := "/data/media"
TW_INTERNAL_STORAGE_MOUNT_POINT := "data"
TW_EXTERNAL_STORAGE_PATH := "/sdcard"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"
입니다. 하지만 제가 해외 옵티머스 2x의 Twrp 리커버리 작업 파일을 보며 Q2용으로 수정하며 바꾼 내용을 올립니다.
또는 recovery.fstab 에 내장 메모리를 /sdcard 에 넣고, 외장 SD카드를 /sd-ext 에 넣으셨다면 아래와 같이 추가합니다.
TW_INTERNAL_STORAGE_PATH := "/sdcard"
TW_INTERNAL_STORAGE_MOUNT_POINT := "sdcard"
TW_EXTERNAL_STORAGE_PATH := "/sd-ext"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sd-ext"
TW_NO_BATT_PERCENT := true - 첫부분에 있던 사진을 보시면, 배터리 퍼센트가 표시 됩니다. 이걸 표시 하지 않으시려면 추가하세요.
TW_CUSTOM_POWER_BUTTON := 107 - 락스크린을 위해 별도의 파워버튼을 지정하려면 추가하세요.
107 부분엔 키값을 넣으면 되는 모양 입니다.
그런데 잠금화면도 있나요!! 역시 Twrp 위대합니다.
TW_NO_REBOOT_BOOTLOADER := true - 부트로더가 없는 경우 메뉴에서 부트로더로 재부팅 메뉴를 제거 합니다.
TW_NO_REBOOT_RECOVERY := true - 리커버리로 직접 진입이 불가능 한경우 메뉴에서 리커버리로 재부팅 메뉴를 제거 합니다.
TW_NO_USB_STORAGE := true - USB마운트를 지원하지 않는 디바이스들을 위해 USB마운트 메뉴를 제거 합니다.
RECOVERY_TOUCHSCREEN_SWAP_XY := true - X축과 Y축 사이의 터치 맵핑을 스왑 합니다. 뭔소리인지 모르겠네요~
번역은 대충 된듯 합니다.
원문 - swaps the mapping of touches between the X and Y axis / 직역 - 그 X축과 Y축 사이 터치 영역 맵핑을 스왑한다.
* 아래 두 줄은 직역 입니다.
RECOVERY_TOUCHSCREEN_FLIP_Y := true - Y축 터치 스크린 값을 넘겨 줍니다.
RECOVERY_TOUCHSCREEN_FLIP_X := true - X축 터치 스크린 값을 넘겨 줍니다.
위와 관련된 구문 입니다.
TW_NEVER_UNMOUNT_SYSTEM := true - 시스템 파티션을 절대 마운트 해제 하지 않습니다.
(가끔 몇몇 모토로라 기기에서 필요하다는 군요~)
TW_INCLUDE_INJECTTWRP := true - 부팅 이미지에 두 번째 램 디스크로 복구가 삼성 장치 삼성 부트 이미지 일부에 TWRP를 삽입 할 수있는 능력을 추가
제가 삼성 디바이스를 한번도 못만져 봐서 그런지, 해석도 이해도 안되네요. 구글 발번역 입니다.
※ 아마 삼성기기에 있는 두번쨰 리커버리 파티션에 Twrp 이미지를 플래싱 할수 있는 능력 추가?..정도 인듯 합니다.
TW_DEFAULT_EXTERNAL_STORAGE := true - 외장 SD카드를 기본 저장소로 지정 합니다. (위에 내장 SD카드가 있는 디바이스들에게 해당 됩니다. 아마 백업을 하면 외장 SD카드를 우선으로 백업 하나 봅니다)
TW_FLASH_FROM_STORAGE := true - RAM 이 좀 작은 디바이스들에게 좋은 구문 인듯 합니다.
플래싱 하는 롬이 RAM 보다 지나치게 큰 경우, RAM 대신 /tmp 에서 작업을 진행 하는것 입니다.
Twrp 에서 이걸 기본 값으로 설정 하는걸 고려중이라네요~
Here's some flags that may help you, but are not specific to TWRP (works in CWM too):
This flag has multiple options, but can be used to set different graphics modes that may be need to correct color space issues on some devices:
TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"
BOARD_HAS_FLIPPED_SCREEN := true -- flips the screen upside down for screens that were mounted upside-down
TARGET_PREBUILT_RECOVERY_KERNEL := path/to/kernel -- use to specify a kernel specifically for building recovery
이 부분은 귀찮기도 하고, 해서 번역을 건너 뛰었습니다.
발번역을 하면
이것은 당신을 도와줄 몇 가지 추가 항목들입니다. 그러나 이것은 TWRP에만 특정되는건 아닙니다(CWM에서도 작동합니다).
이 플래그는 여러가지 경우가 있지만, 대표적으로 몇몇 기기에서 일어나는 색상 문제를 해결하기 위해 다른 그래픽 모드로 설정되는데 사용됩니다.
TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"
BOARD_HAS_FLIPPED_SCREEN := true - 스크린이 위아래로 뒤집힌 기기들을 위한 옵션입니다.
TARGET_PREBUILT_RECOVERY_KERNEL := path/to/kernel - 리커버리를 빌드하기 위해 커널을 특별하게 지정하기 위해 사용됩니다.
참고적으로 https://github.com/TeamWin 이 사이트에서 자신의 디바이스와 비슷한 디바이스의 작업 파일을 찾아 작업 하시면 좀더 수월하게 하실수 있습니다^^
저 같은 경우엔 옵티머스 Q2에 포팅을 시도 함으로, 해외 옵티머스 2x 파일인 P990 파일을 보고 수정을 하였습니다.
위와 같이 설정을 한후, CWM리커버리 빌드 하듯이 해주시면 됩니다~ 어떻게 하냐고요?
http://minnote.net/117 글의 아래쪽 빌드 쪽을 참조해 주시면 됩니다.
+ 2012년 11월 29일 추가
조규진 님이, 미번역 부분과 부족한 부분을 번역해 주셨습니다^^
감사합니다~
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
[따라하는 빌드 #1] 안드로이드 AOSP 또는 CM 개발 환경 구성 (따라하는 안드로이드 빌드) (1) | 2015.09.22 |
---|---|
LG 옵티머스Q2 [LG-LU6500] 의 루팅 과정 (0) | 2013.06.14 |
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[Dev] ClockWorkMod-based Recovery PowerOFF 종료 파워 오프 버튼 추가하기 / 개발자용 글 (0) | 2012.11.13 |
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기
안녕하세요!
Se7eN 인 Icaros 입니다.
오늘은 순정 락스크린 부활에 이어, LG옵티머스들의 화이트 UI를 제거하여 보겠습니다.
원래 안드로이드 4.x 아이스크림 샌드위치는 검은색 프레임워크를 중심으로 구성되어있습니다.
갤럭시, 베가, 모토로라, 엑스페리아 등의 타기종 아이스크림 샌드위치를 보시면 알수 있습니다^^
읽으시기전 손가락 운동한번만^^
LG 옵티머스 기종들의 ICS , JB에선 하얀색의 UI가 눈에 뛰며 예뻐 보입니다.
하지만 전 마음에 안들어요! 하루 빨리 제거 하고 싶었어요.
하지만 안드로이더스의 콜홍님이 제보를...(http://cafe.naver.com/androiders/1503270)
(하얀색 UI를 제거하기전의 Q2와 제거한후의 Q2)
오른쪽 사진의 뒤를 자세히 봐주시면, 순정 락스크린이 정상적으로 표시가 됩니다^^
하지만 이 화이트 UI제거의 문제점이 있습니다.
1. 루팅하신 분만 이용가능
2. 순정 메시지 어플 사용 불능
3. 순정 메모 어플 색 겹침 현상
1번은 당연히 아실테구, 2번은 전 GO SMS Pro 를 사용하여 해결을 하고 있습니다.
순정 메시지 어플의 사용이 불능 합니다.
3번은 사용에는 지장이 없지만, 메인화면에서 글씨 색과 배경색이 같아 불편함이 있습니다. 하지만 개별 메모를 터치하시면 정상 표시가 됩니다.
무작정 해보고 봅시다!
준비물 : Root Explorer , 안드로마이저 등의 Build.prop 을 수정 가능한 어플리케이션 또는 시스템 작업이 가능한 파일 탐색기 어플
저는 Root Explorer 를 사용하였지만, 강좌에 편리함을 위해 안드로마이저 Free 를 사용하여 보겠습니다.
1. Google Play 스토어에서 "안드로마이저" 를 설치하여 줍니다.
[https://play.google.com/store/apps/details?id=com.j.y.daddy.customizer]
2. 안드로 마이저를 실행 하여 주신후, Tool 탭을 터치하신후, "Build.prop 관리자" 를 터치하여 주십시오.
3. 2번 사진을 보시면서, 조금만 밑으로 내려 주시면
"ro.lge.capp_optimusui"
"ro.lge.capp_resource"
아래 두개의 줄이 있습니다.
터치를 하신후, 값을
true 를 지워주신후, false 로 적으신후 확인!
을 눌러 주신후
적용을 눌러 주시면 됩니다.
뭐 알아서 재부팅 하시겠습니까? 라는 질문이있지만, 재부팅을 하신후에 적용이 됩니다.
적용을 하신후에는 정상적으로 표시가 됩니다.
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
LG 옵티머스Q2 [LG-LU6500] 의 루팅 과정 (0) | 2013.06.14 |
---|---|
[Dev] TWRP 리커버리 포팅하기 (Team Win Recovery Project) (4) | 2012.11.25 |
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[Dev] ClockWorkMod-based Recovery PowerOFF 종료 파워 오프 버튼 추가하기 / 개발자용 글 (0) | 2012.11.13 |
[Dev] ClockWorkMod-based Recovery 키값 바꾸기 / 개발자용 글 (0) | 2012.11.13 |
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기
안녕하세요~
Icaros 입니다!
요즘은 CWM을 접고, Twrp 라는 제가 찬양하는 리커버리의 포팅을 옵티머스Q2에 시도중입니다.
(하지만 절대로 12월 5일이 기말이지 않아요. 절대로.....절대로 맞아요)
이건 Q2만이 아닌 모든 아이스크림샌드위치이상의 옵티머스 폰들에게 해당 됩니다.
아무튼, 안드로이드 순정의 락 (잠금) 스크린 (화면)...전 진저의 락스크린은, LG의 락스크린이 멋지고
아이스크림 샌드위치의 락스크린은, 안드로이드 순정 락스크린이 훨씬더 멋져보인답니다~ ㅎㅎ
LG의 ICS락스크린은 UI가 예쁘단걸로 찬사를 받고 있지만, 음악을 많이 듣는 저에겐 독같은 존재 ㄱ-;
이유는 바로, LG의 순정 락스크린에선 "LG 음악 플레이어" 만이 잠금화면에서 컨트롤러가 표시가 됩니다.
다른 뮤직 플레이어를 쓰면, 자체 잠금화면이나, 잠금 없음을 한뒤 상단바를 내려서 컨트롤을 해야 합니다.
하지만 허니콤(컴 / 안드로이드 3.x) 부터 안드로이드 락위젯 이라는 기능이 추가되었습니다.
바로 아래 사진과 같이, 안드로이드에서 직접 잠금화면에서 뮤직 컨트롤러를 제공 합니다.
어떠한 음악 플레이어 어플도 지원이 됩니다.
일딴 제가 확인한것으로는 "파워 엠프"와 "Google Play Music" 입니다.
하지만 우리 옵티머스들의 아이스크림 샌드위치에선 LG락스크린을 사용하느랴고, 저 기능 사용을 못합니다.
하지만 우리는 오늘 안드로이드 순정의 락스크린을 부활시켜 봅시다.
아래 사진은 오늘 7시 49분에 찍은, 제 옵티머스Q2의 락스크린 입니다.
요즘 패턴 그리기가 귀찮아, 그냥 풀고 다녀요.
※아래 검은색 화면이 표시되는것은 소프트키(네비게이션 바) 입니다. 착오 없으시길 바랍니다.
※현제 국내에 판매되고 있는 LG 옵티머스들 중에는 루팅 없이, 저런 소프트키가 있는 폰은 없습니다.
※갤럭시 넥서스, 테이크 LTE, 넥서스4, 넥서스10등의 몇몇폰들은 기본적으로 저것이 있습니다.
※오 저것 추가하는 강좌도 올려야지요~
일딴 루팅 (Rooting)을 하신 분들만이 가능 하십니다.
준비물 : Root Explorer 등의 시스템을 조작할수 있는 파일 탐색기, 손가락
1. Root Explorer 등의 시스템을 조작할수 있는 파일 탐색기를 실행 합니다.
2. /system/app 으로 들어 갑니다.
3. LockScreen3.apk 를 찾아줍니다.
4. LockScreen3.apk 를 꾹 터치하여, 이름바꾸기를 터치하여 줍니다.
※저기 노란색으로 표시해둔, 버튼이 "R/W Mount" 또는 "마운트 R/W" 등으로 R/W라는 말이있으면, 한번 터치한후 해줍니다.
5. 여기서 두방향의 갈림길에 놓이게 됩니다.
설명 읽어 보시고, 대충 선택하시구 가주시면 됩니다~
길1 - 일딴 한번, 순정 락스크린을 써보고, 다시 원래 LG락으로 오시고 싶은분
1-1. 이름 바꾸기를 합니다.
1-2. 이름을 "LockScreen3.apk1" 로 바꿔 줍니다.
1-3. LockScreen3.odex 파일있다면, 삭제하거나 이름을 바꾸지 말고 그냥 놔둡니다.
길2 - 계속 순정 락스크린으로 살고 싶으신분
2-1. 이름 바꾸기를 하시지 마시고, 삭제를 눌러 줍니다.
2-2. LockScreen3.odex 파일이있다면, Odex 파일도 삭제해 줍니다.
이렇게 영구적과 반영구정이 있습니다.
전 1번을 추천 드립니다^^
이 과정을 거친후에, 화면을 껏다가, 켜보면! 안드로이드 순정 락이!
근데...꼭 읽어주세요
일딴 재부팅을 하지 않으시고, 잠금화면을 가시면, 바탕화면이 이상하게 표시됩니다. 재부팅을 하여 주세요.
그리고 또한 화이트UI제거를 하시지 않으면 아래 사진 처럼 이상할수 있습니다.
알림 및 소유자 정보, 긴급 통화 및 통신사 문구가 이상하게 표시가 됩니다. 다음글을 참조해주세요.
또한 의문의 회색 바도 생겨버린답니다~
꼭 다음글을 한번 읽어주세요!
서로 관련이 있습니다.
저 현상은 LG옵티머스 ICS에 예쁘다고 극찬을 받고 있는, 하얀색 UI를 제거해야 정상적인 표시가 됩니다.
바로가기 : http://minnote.net/134
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
[Dev] TWRP 리커버리 포팅하기 (Team Win Recovery Project) (4) | 2012.11.25 |
---|---|
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
[Dev] ClockWorkMod-based Recovery PowerOFF 종료 파워 오프 버튼 추가하기 / 개발자용 글 (0) | 2012.11.13 |
[Dev] ClockWorkMod-based Recovery 키값 바꾸기 / 개발자용 글 (0) | 2012.11.13 |
[쿠킹] CM7 또는 AOSP를 기반으로 MIUI 포팅하기 (1) | 2012.10.05 |
[Dev] ClockWorkMod-based Recovery PowerOFF 종료 파워 오프 버튼 추가하기 / 개발자용 글
이것이 제가 꾸미고 있는, 옵티머스Q2의 CWM리커버리 메인 화면 입니다!
어서 모든 강좌를 올려 볼려고 합니다~
윗쪽, CWM-Based Recovery v6.0.1.2 를 Optimus Q2 CWM-Based Recovery v4 / v6.0.1.2 로 수정!
Power Off 추가!
LG Optimus Q2 이미지로 수정!
Welcom to the God World! / So am I Still Waiting / For OpQu2 CM9/CMX ROM...Please! 추가!
가 있습니다.
제가 현제 준비중인것은 쿼티 폰의 자부심인 리커버리에서 쿼티를 이용하여 콘솔을 살리는것 입니다! 그 내용은 나중에 약간 다루겠습니다.
읽으시기전 손가락 운동 한번^^
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
---|---|
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[Dev] ClockWorkMod-based Recovery 키값 바꾸기 / 개발자용 글 (0) | 2012.11.13 |
[쿠킹] CM7 또는 AOSP를 기반으로 MIUI 포팅하기 (1) | 2012.10.05 |
[Dev] ClockWorkMod-based Recovery Porting (CWM 리커버리 포팅 강좌) / 개발자용 글 (6) | 2012.10.04 |
[Dev] ClockWorkMod-based Recovery 키값 바꾸기 / 개발자용 글
먼저 강좌를 시작 하기 전, 이 글은
영구땡칠님의 글을 그냥 사진만 추가해서 올린다고 해도 뭐라 할것이 없습니다...ㅠㅠ
원문 / http://cafe.naver.com/androidhacker/461
먼저 하시기 전에, 손가락 운동 한번만^^
일딴 대부분의 디바이스가 정상 동작을 하겠지만, 몇몇 디바이스들은 CWM리커버리 기본 셋팅으로 빌드를 하면
선택키가 없고, 볼륨키로만 왔다 갔다만 할수 있는....그런 상황이 일어나 버립니다...ㅠㅠ
제가 만들어본 LG 옵티머스Q2와 옵티머스Ex 에선 그랬습니다.
그래서 약간 글을 써볼려고 합니다.
위에서 말했듯이, 이 글은 영구땡칠님께서 써주신 글 입니다.
올라온거 보고, 덧글도 제가 1등으로 달았어요!
영구땡칠님曰 / "이미 초급딱치를 뗀 개발자라고 생각하신다면 이 글을 안보고도 쉽사리 고칠 부분을 찾아내실수 있습니다. 그런 분들이라면 이 문서를 참고하지 말고 직접 고보시기 바랍니다"
아아...전 아직 못뗏어요...ㅠㅠ
언제나 그렇지만 저에게 언제나 도움을 주시는 영구땡칠님 (LG 기기에서 많은 활약을...), hPa님 (이분은 너무 글로벌 하셔서), 베르제브님 (옵티머스Q2와 Ex를 구원해 주신 분...)등의 수많은 능력자 분들이 있기에, 전 낼름 받아 먹기만 하고 글을 써 봅니다.
먼저 개념은 이러 합니다.
grep VOLUME 라는 명령어를 내려, 자신이 수행했던 기록을 거슬러 올라갈수 있습니다.
그렇게 해서 파일을 찾는 방식 입니다.
하지만...전 왜 저 명령어가 안먹히죠...ㅠㅠ 그래서 글을 그대로 날름 했습니다.
ClcokworkMod 리커버리 5에선 아래와 같은 파일을 수정 하시면 됩니다.
/home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_ui.c
ClockworkMod 리커버리 6에선 아래와 같은 파일을 수정 하시면 됩니다.
/home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_keys.c
전 CWM5의 작업 파일을 만저 본적이 없어, CWM6을 기준으로 글을 써 봅니다.
1. /home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_keys.c 파일을 열어 줍니다.
2. 열어 보시면 아래와 비슷한 내용이 있습니다. 여기서 대충 딱 보시고! 아 이거군아! 하시면 초급자 딱지는 땟다고 봐도 된다고 합니다! 오오 (불행중 다행)
아래 내용은 Git Hub 에서 가져온 가장 기본 상태의 파일 내용 입니다.
#include <linux/input.h>
#include "recovery_ui.h"#include "common.h"#include "extendedcommands.h"
int device_toggle_display(volatile char* key_pressed, int key_code) { int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT]; if (alt && key_code == KEY_L) return 1; // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off if (ui_get_showing_back_button()) { return 0; //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END); } return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);}
int device_handle_key(int key_code, int visible) { if (visible) { switch (key_code) { case KEY_CAPSLOCK: case KEY_DOWN: case KEY_VOLUMEDOWN: case KEY_MENU: return HIGHLIGHT_DOWN;
case KEY_LEFTSHIFT: case KEY_UP: case KEY_VOLUMEUP: case KEY_HOME: return HIGHLIGHT_UP;
case KEY_POWER: if (ui_get_showing_back_button()) { return SELECT_ITEM; } if (!get_allow_toggle_display() && !ui_root_menu) { return GO_BACK; } break; case KEY_LEFTBRACE: case KEY_ENTER: case BTN_MOUSE: case KEY_CAMERA: case KEY_F21: case KEY_SEND: return SELECT_ITEM; case KEY_END: case KEY_BACKSPACE: case KEY_SEARCH: if (ui_get_showing_back_button()) { return SELECT_ITEM; } if (!get_allow_toggle_display() && !ui_root_menu) { return GO_BACK; } case KEY_BACK: if (!ui_root_menu) { return GO_BACK; } } }
return NO_ACTION;}
딱 보시고 아실 분은 다 아실듯 합니다! 우둔한 저도 알아 차렸으니;
아래 부분을 보아 봅시다.
case KEY_CAPSLOCK: case KEY_DOWN: case KEY_VOLUMEDOWN: case KEY_MENU: return HIGHLIGHT_DOWN;
위와 같은 내용 입니다.
위 내용은 다음과 같은 뜻을 가지고 있습니다.
CapsLock 버튼, Down 버튼, 볼륨 다운버튼, 메뉴 버튼 으로 아래쪽 항목을 선택 할수 있습니다.
그럼 아래 와 같이 수정을 하면, 검색키를 통해 아래쪽 항목을 선택 가능 합니다.
※단 검색키 이용은 약간의 수정이 필요 합니다
case KEY_CAPSLOCK:case KEY_DOWN:case KEY_VOLUMEDOWN:case KEY_MENU:case KEY_SEARCH:
return HIGHLIGHT_DOWN;
위와 같이 "case KEY_XXX"를 추가하면, 됩니다.
#include <linux/input.h>
#include "recovery_ui.h"#include "common.h"#include "extendedcommands.h"
int device_toggle_display(volatile char* key_pressed, int key_code) { int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT]; if (alt && key_code == KEY_L) return 1; // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off if (ui_get_showing_back_button()) { return 0; //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END); } return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);}
int device_handle_key(int key_code, int visible) { if (visible) { switch (key_code) { case KEY_CAPSLOCK: case KEY_DOWN: case KEY_VOLUMEDOWN: case KEY_MENU: return HIGHLIGHT_DOWN; / 항목 아래로 이동
case KEY_LEFTSHIFT: case KEY_UP: case KEY_VOLUMEUP: case KEY_HOME: return HIGHLIGHT_UP; / 항목 위로 이동
case KEY_POWER: if (ui_get_showing_back_button()) { return SELECT_ITEM; } if (!get_allow_toggle_display() && !ui_root_menu) { return GO_BACK; } break; / 이놈 때문에 파워버튼이 정상동작을...지우고 수정해야 할듯 합니다. 뭐하는 놈인지 모르겠어요,...ㅠㅠ case KEY_LEFTBRACE: case KEY_ENTER: case BTN_MOUSE: case KEY_CAMERA: case KEY_F21: case KEY_SEND: return SELECT_ITEM; / 항목을 선택 case KEY_END: case KEY_BACKSPACE: case KEY_SEARCH: if (ui_get_showing_back_button()) { return SELECT_ITEM; } if (!get_allow_toggle_display() && !ui_root_menu) { return GO_BACK; } case KEY_BACK: if (!ui_root_menu) { return GO_BACK; / 뒤로 가기 } } }
return NO_ACTION;}
입니다.
제가 약간 응용한 부분을 보겠습니다.
Q2에 적용된 파일이며, Q2는 하단 하드웨어 키가
옆의 사진과 같습니다.
그래서 저는 전원키 대신
메뉴 - 위로 이동 (방향키 및 볼륨키 대응)
홈 - 아래로 이동 (방향키 및 볼륨키 대응)
뒤로 - 뒤로 (백스페이스 키 대응)
검색 - 선택 (엔터키 및 전원키 대응)
그래서 아래와 같이 수정해 보았습니다.
#include <linux/input.h>
#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"
int device_toggle_display(volatile char* key_pressed, int key_code) {
int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];
if (alt && key_code == KEY_L)
return 1;
// allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off
if (ui_get_showing_back_button()) {
return 0;
//return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);
}
return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);
}
int device_handle_key(int key_code, int visible) {
if (visible) {
switch (key_code) {
case KEY_CAPSLOCK:
case KEY_DOWN:
case KEY_VOLUMEDOWN:
case KEY_HOME:
return HIGHLIGHT_DOWN;
case KEY_LEFTSHIFT:
case KEY_UP:
case KEY_VOLUMEUP:
case KEY_MENU:
return HIGHLIGHT_UP;
// case KEY_POWER:
// if (ui_get_showing_back_button()) {
// return SELECT_ITEM;
// }
// if (!get_allow_toggle_display() && !ui_root_menu) {
// return GO_BACK;
// }
// break;
case KEY_LEFTBRACE:
case KEY_ENTER:
case BTN_MOUSE:
case KEY_CAMERA:
case KEY_F21:
case KEY_SEND:
case KEY_SEARCH:
case KEY_POWER:
return SELECT_ITEM;
case KEY_END:
case KEY_BACKSPACE:
if (ui_get_showing_back_button()) {
return SELECT_ITEM;
}
if (!get_allow_toggle_display() && !ui_root_menu) {
return GO_BACK;
}
case KEY_BACK:
if (!ui_root_menu) {
return GO_BACK;
}
}
}
return NO_ACTION;
}
// 파란색은 주석 처리를 한것 입니다.
즉 저 문장들은 실제로는 없는것과 같이 처리 된다는 것 입니다.
해석을...
#include <linux/input.h>
#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"
int device_toggle_display(volatile char* key_pressed, int key_code) {
int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];
if (alt && key_code == KEY_L)
return 1;
// allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off
if (ui_get_showing_back_button()) {
return 0;
//return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);
}
return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);
}
int device_handle_key(int key_code, int visible) {
if (visible) {
switch (key_code) {
case KEY_CAPSLOCK:
case KEY_DOWN:
case KEY_VOLUMEDOWN:
case KEY_HOME:
return HIGHLIGHT_DOWN;
case KEY_LEFTSHIFT:
case KEY_UP:
case KEY_VOLUMEUP:
case KEY_MENU:
return HIGHLIGHT_UP;
// case KEY_POWER:
// if (ui_get_showing_back_button()) {
// return SELECT_ITEM;
// }
// if (!get_allow_toggle_display() && !ui_root_menu) {
// return GO_BACK;
// }
// break;
// 일딴 이놈때문에 전원키가 동작을 안하니 삭제를...
case KEY_LEFTBRACE:
case KEY_ENTER:
case BTN_MOUSE:
case KEY_CAMERA:
case KEY_F21:
case KEY_SEND:
case KEY_SEARCH:
case KEY_POWER:
// 전원키와 검색키를 선택 항목에 넣습니다
return SELECT_ITEM;
case KEY_END:
case KEY_BACKSPACE:
// 이 부분에 검색 값이있었지만, 위쪽으로 이동을 했습니다
if (ui_get_showing_back_button()) {
return SELECT_ITEM;
}
if (!get_allow_toggle_display() && !ui_root_menu) {
return GO_BACK;
}
case KEY_BACK:
if (!ui_root_menu) {
return GO_BACK;
}
}
}
return NO_ACTION;
}
이제 그리고 빌드를 하시면 됩니다!
다음번에는 메인 화면 수정 및 리커버리 정보 수정을 한번 흐흐
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
---|---|
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[Dev] ClockWorkMod-based Recovery PowerOFF 종료 파워 오프 버튼 추가하기 / 개발자용 글 (0) | 2012.11.13 |
[쿠킹] CM7 또는 AOSP를 기반으로 MIUI 포팅하기 (1) | 2012.10.05 |
[Dev] ClockWorkMod-based Recovery Porting (CWM 리커버리 포팅 강좌) / 개발자용 글 (6) | 2012.10.04 |
[쿠킹] CM7 또는 AOSP를 기반으로 MIUI 포팅하기
안녕하세요.
Icaros 입니다.
먼저 이러한 방법으로 쿠킹 형식으로 Miui 산소 센스 Lewa OS를 포팅 할수 있습니다.
이번엔 그냥 MIUI를 쿠킹해 보겠습니다.
그전에 손가락 운동 한번^^
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
---|---|
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[Dev] ClockWorkMod-based Recovery PowerOFF 종료 파워 오프 버튼 추가하기 / 개발자용 글 (0) | 2012.11.13 |
[Dev] ClockWorkMod-based Recovery 키값 바꾸기 / 개발자용 글 (0) | 2012.11.13 |
[Dev] ClockWorkMod-based Recovery Porting (CWM 리커버리 포팅 강좌) / 개발자용 글 (6) | 2012.10.04 |
[Dev] ClockWorkMod-based Recovery Porting (CWM 리커버리 포팅 강좌) / 개발자용 글
안녕하세요~
winpower7 입니다. 별명으로 '이카로스' 라 하겠습니다.
먼저 이 방법은 저 역시 초보 개발자 이기 때문에...저 역시 다른글을 보고 배웠지만
그 글들을 모두 모아, 쉽고, 최대한 제가 할수 있는 능력안에선 다 해드릴려고 합니다.
일딴 CWM리커버리를 포팅 하는 데에는 2가지 방법이 있습니다.
첫번째는 Windows 에서도 클릭 몇번으로 포팅이 가능 합니다.
하지만 삼성 갤럭시 디바이스 처럼 몇몇 약간 다른 방식의 파티션을 사용하는 기기들은 불가능 합니다.
또한 LG전자의 1~2세대 디바이스 처럼 기본 리커버리가 없는 폰 역시 불가능 합니다.
※요즘 나온 펌웨어는 리커버리가 기본적으로 들어있습니다. LG폰역시...하지만 리커버리 파티션 부팅이 안될뿐;
첫번째 쉬운 방법은 두번째 글 마치고 쓰겠습니다. 뭐 네이버에 널렸으니...
그전에 손가락 운동 한번^^
하지만 우린 우분투를 이용한 CWM-based Recovery 를 포팅해 보겠습니다.
먼저 다음과 같은 개발환경이 되어야 합니다.
- x64 지원 CPU / 64비트 지원 CPU
└ 32비트 컴퓨터에선 빌드조차 되지 않습니다. 확인법은 CPU-Z 등을 이용해 주시면 감사하겠습니다.
- 우분투 10.x 이상의 ISO 또는 설치된 컴퓨터
└ 가상 컴퓨터로 돌리셔도 됩니다. 하지만 윈도우가 설치되어 있다면, 쉽게 우분투를 덮어쓰기 형식으로 설치 할수 있으니 참고바랍니다. 우분투는 오픈소스 운영체제 임으로, 네이버에서도 합법적으로 구하실수 있습니다. / 저는 우분투 10.10 환경에서 진행 합니다. / 커널은 2.6.35-22
- 루팅이 된 안드로이드 디바이스
└ 개통이 안된 기기도 가능 합니다. / 저는 LG 옵티머스Q2로 글을 진행 합니다.
- 여러가지 정신들...인내심, 전기료에 대한 걱정 (인터넷 속도가 개똥이신분만 걱정하심 되요), 강인함과 굳은 마음
1. 우분투 운영체제를 설치 합시다.
※이 부분에는 사진이 단 한장도 없습니다. 죄송합니다.
우분투...안드로이드 개발자 분이시라면 한번쯤은 들어 보신 말 입니다.
우분투는 윈도우와 같은 하나의 운영체제 입니다. 여기서 우분투를 알아 뭐 알건 없고
그냥 본론으로 갑니다.
전 우분투 10.10 환경에서 진행 합니다. 완전 초보자 이시라면, 가장 구하기 쉬운 12.xx를 통해 다른 12.xx 글을 보시거나
10.10 을 구하여, 저랑 동일한 환경에서 포팅하시는것도 좋습니다.
먼저 가상 윈도우로 우분투를 설치 할것인지, 우분투를 아예 포멧후 설치 할것인지, 우분투를 윈도우와 쓰면서 듀얼 부팅을 할것인지, 우분투를 윈도우 안에 설치 할것인지 정하셔야 합니다.
가상 윈도우로 하시는 방법은 그닥 추천 드리지 않음으로 (하지만 개발에는 훨씬 편합니다. 단 좀 짜증날뿐)
전 윈도우 위에 우분투룰 설치하겠습니다.
우분투 ISO 파일을 받으셨다면, 윈도우에서 알집이나 7zip 등으로 압축을 푸신후 폴더에 가보시면
"webui.exe" 라는 파일이 있습니다. 그 파일을 실행 하시면
"윈도우 위에 우분투 설치" 라는 버튼이 2번째에 있습니다. 그걸 그냥 클릭 하시면 됩니다.
기본적인 정보를 입력하신후, 하드디스크는 30GB로 잡아 주시는걸 추천 드립니다. 나중에 하드 공간이 없어 포멧하시는 일은 없기를...
윈도우 위에 우분투를 설치하시면, 포멧 없이 윈도우와 우분투를 듀얼 부팅하셔서 사용하실수 있습니다.
프로그램 추가/제거에서 우분투를 다른 프로그램과 동일하게 지우실수 있습니다.
기본적인 정보와 비밀번호 설정을 다 하셨다면, 다음을 눌러 기본적인 파일 설치를 합니다.
그런후 '지금 재부팅' 을 하여, 듀얼 부팅에 시도 합니다.
듀얼 부팅이란걸 처음 하시는 분은 아마 기본 설정인 30초 동안 윈도우 부팅전 새로운 화면이 보입니다.
Windows Boot Manager 인가요...가 나옵니다.
거기서 방향키와 엔터를 사용하여, 'Ubuntu' 로 부팅을 합니다.
그럼 약 10~20분 동안 언어팩등 여러가지 설치를 하게 됩니다.
이 부분은 이렇게 끝났습니다.
원래 글을 나눌려 했지만 귀찮아 져서, 그냥 씁니다.
2. 기본 셋팅 및 CM소스를 받아 보자
※참고로 복사 붙여 넣기가 안되시는 분들은, 맨 아래 첨부파일에서 복사 붙여넣기 해주세요.
아아...여기서 이제 욕이 나옵니다. 인터넷이 느리신 분은 엄청난 전기료가 나오실수 있습니다.
엄청난 시간이 소요 됩니다. 가상 윈도우에 경우 여기서 좀 걸리실수 있습니다.
서버가 외국에 있어 약 10~300kbps 의 속도로 받아 집니다.
하지만 동시에 받는 기능과 이어 받기 기능이 있어 참 좋습니다.
2-1. 프로그램 -> 보조 프로그램 -> 터미널 을 실행 합니다. (조합키 Ctrl + Alt + T 로도 실행 가능)
2-2. 이제 다음과 같은 글을 터미널에 복사 붙여 넣기 합니다.
sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \ libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \ libxml2-utils
붙여 넣기를 하면 다음과 같은 메시지가 나옵니다.
[sudo] password for 사용자명:
여기서 영어로 자신의 비밀번호를 입력 합니다.
이때 입력이 안되신다구 당황하시지 마십시오. 안보일뿐 입니다. 한글로 입력하시면 한글이 보입니다. 지워지시구 영어로 전환하여 주십시오.
만약 다음과 같이 E:무엇을 설치할 수 없습니다. 라고 나온다면, 그 부분을 빼고 복사해 붙여 넣기 합니다.
※ 붙여 넣기는, 터미널 안에서 오른쪽 마우스 클릭 -> 붙여 넣기를 통해 붙여 넣을수 있습니다.
또한 E:무엇을 설치할 수 없습니다. 라고 나온다면, 그 파일을 다음 양식에 넣어 입력 합니다.
sudo apt-get install 패키지이름
예) sudo apt-get install lib32ncurses5-dev
※ 업데이트가 필요 하다고 나오는 경우엔
sudo apt-get update 패키지이름
예) sudo apt-get update zip
자자 이제 가장 중요한 CM소스를 받을 차례 입니다.
받기전에 기본 설정을 위해 repo 를 해야 합니다. 뭐 CM소스를 받는 일이죠
홈 폴더로 이동을 해야 합니다. 다음을 입력 합니다.
cd /home/(사용자계정명)
예) cd /home/icaros
그다음은 이제 BIN 이라는 폴더를 만들어 줘야 합니다.
mkdir bin
이제 만들었다면, 이동을 해야 겠죠?
cd bin
그 다음은 BIN을 기본 패치 장소로 지정 해야 합니다.
export PATH=$PATH:~/bin
그 다음은 REPO 사이트로 부터 기본적 설정을 받아와야 합니다.
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
이제 받기 위한 준비를 해야 합니다. repo 라는 파일에게 권한을 줍니다.
chmod a+x ~/bin/repo
이제 home/icaros/android/system 이라는 폴더를 만듭니다.
mkdir -p ~/android/system
이제 /android/system 으로 이동 합니다.
cd ~/android/system
이제 CM소스를 받아야 하는데, 여기서 기기를 살펴야 합니다.
안드로이드 버전 마다 받아야 하는 파일이 다릅니다.
설정 -> 휴대폰 정보 -> Android 버전 확인후
4.0.x 인경우 / repo init -u git://github.com/CyanogenMod/android.git -b ics
4.1.x 인경우 / repo init -u git://github.com/CyanogenMod/android.git -b jellybean
2.3.x 인경우 / repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
2.2.x 인경우 / repo init -u git://github.com/CyanogenMod/android.git -b froyo
2.1.x 또는 2.0.1 인경우 / repo init -u git://github.com/CyanogenMod/android.git -b eclair
1.6.x 인경우 / repo init -u git://github.com/CyanogenMod/android.git -b donut
1.5.x 인경우 / repo init -u git://github.com/CyanogenMod/android.git -b cupcake
으로 중 하나를 입력해 주시면 되겠습니다.
이클레어와 컵케익은 저 주소가 정확한지 모르겠습니다. 이클레어는 소스가 맞다면 받아 지고, 컵케익은 주소가 맞아도 아직 파일이 있을지 의문 입니다...CM3은 배포 중단된지 오래라는데...
저는 이번 옵티머스Q2 의 ICS 버전의 CWM를 포팅 함으로, ics를 입력했습니다.
이젠 파일을 받아야 합니다. 엄청난 인내심과 끈기가 필요 합니다. 컴퓨터에 따라 받는 속도가 다릅니다.
repo sync
※ 참고 : repo sync -j 16 같이 뒤에 -j 숫자 를 붙이면 한번에 여러개의 파일을 받습니다.
2부터 최대 80까지를 입력할수 있습니다. 하지만 80은 누락될 위험도 있기에, 보통 16을 사용합니다.
전 50으로 받았습니다. / repo sync -j 50
다 받아 지셨다면, 다음을 입력 합니다.
make -j4 otatools
그 다음 아래 첨부파일을 받아
/home/(사용자 계정명)/bin 에 넣습니다.
그 다음은 자신의 폰의 부트이미지를 추출 해야 합니다.
성공적으로 부트 이미지가 추출 되었다면, 이제 본격적인 리커버리 제조에 들어 갑니다.
추출된 부트 이미지는 /home/(사용자계정명)/mydroid 에 넣어 주시면 되겠습니다.
터미널에서 다음을 입력합니다.
. build/envsetup.sh
※컴퓨터를 재부팅후 다시 터미널로 접속 할떈 'cd /home/(사용자 계정명)/android/system' 을 입력해 줘야 합니다.
이제 부트 이미지를 해체 해야 합니다.
그럼으로 mkvendor.sh 를 사용하여, 부트 이미지를 해체 합니다.
build/tools/device/mkvendor.sh 제조사 기기명 /mydroid/boot.img
예) build/tools/device/mkvendor.sh lge lu6500 /mydroid/boot.img
예) build/tools/device/mkvendor.sh sky ima760s /mydroid/boot.img
예) build/tools/device/mkvendor.sh samsung shwm110s /mydroid/boot.img
다 되셨다면, 직접 마우스를 이용하여
/home/(사용자계정명)/android/system/device/제조사/기기명 으로 이동하시면
recovery.fstab 이랑 boardconfig.mk 이 있습니다.
요 두파일을 자신의 폰에 알맞게 수정 해야 합니다.
먼저 recovery.fastab 를 텍스트 편집기로 열어 봅니다.
그럼 이런 대충 비슷한 내용이 나옵니다.
이건 옵티머스Q2의 파티션 정보 입니다.
# mount point fstype device [device2]
/boot emmc /dev/block/mmcblk0p7
/cache ext4 /dev/block/mmcblk0p3
/data ext4 /dev/block/mmcblk0p11
/recovery emmc /dev/block/mmcblk0p1
/sdcard vfat /dev/block/mmcblk1p1
/system ext4 /dev/block/mmcblk0p2
/misc emmc /dev/block/mmcblk0p5
/nvarea emmc /dev/block/mmcblk0p6
/emmc vfat /dev/block/mmcblk0p13
/마운트포인트 파티션 위치
로 적어 주시면 됩니다.
기본 리커버리가 있으시다면, 그 리커버리를 부트이미지 분해 하듯이 분해 하시면
저 파일의 내용이 나옵니다. 그걸 적어 주시거나 안나오시면
핡...개노가다 입니다...전 nvflash 로 구하는 테그라 계열 방법밖에 모르겠습니다. 죄송합니다...ㅠㅠ
이제 boardconfig.mk 파일을 열어 줍니다. 다음 비슷한 내용이 나옵니다.
이건 제 컴퓨터에서 해체한 옵티머스Q2의 파일 입니다.
USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/lge/lu6500/BoardConfigVendor.mk
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown
TARGET_CPU_ABI := armeabi
TARGET_BOOTLOADER_BOARD_NAME := lu6500
BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00800000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x1400000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x22400000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072
TARGET_PREBUILT_KERNEL := device/lge/lu6500/kernel
#BOARD_HAS_NO_SELECT_BUTTON := true
# Use this flag if the board has a ext4 partition larger than 2gb
#BOARD_HAS_LARGE_FILESYSTEM := true
이 파일은 원래 리커버리가 있으시다면, 당연 풀어서 보시면 되지만 없는 디바이스 일경우
adb shell 또는 안드로이드 터미널 에뮬레이터에서 su 입력후 'cat /proc/mtd' 를 입력하시면 나옵니다.
그래두 못구하시겠다면, 좀 다른 방법을 사용해야 합니다. 여기서 나오는 값은 보드 커널 페이지사이즈랑 보드 커널 베이스 입니다.
BOARD_BOOTIMAGE_PARTITION_SIZE := 부트 파티션 크기를 16진수로 적습니다.
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 리커버리 파티션 크기를 16진수로 적습니다.
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 시스템 파티션 크기를 16진수로 적습니다.
BOARD_USERDATAIMAGE_PARTITION_SIZE := 데이터 파티션 크기를 16진수로 적습니다.
BOARD_FLASH_BLOCK_SIZE := SD카드 파티션 크기를 16진수로 적습니다. / 는 잘 모르겠어요.
이제 boardconfig.mk 파일을 한글자 라도 수정해 저장했다면, 명령을 실행해 줘야 합니다.
make clobber
그런후, 이제 본격적으로 리커버리 이미지 생성전 준비를 해 둡시다.
lunch full_기기명-eng
예) lunch full_lu6500-eng
핡핡...이제 드디어 리커버리 이미지를 생성해 봅시다^^
make -j4 recoveryimage
make clobber
lunch full_기기명-eng
make -j4 recoveryimage
여기서 주의할점이 있습니다.
여기서 뭐라뭐라 나오면서 안되는 경우도 있는데....
그럼 혹시 원래 폰의 리커버리 파일을 뜯으신적이 있나요?
기본 리커버리를 이 방법으로 뜯으셨다면, 그 파일을 삭제해 주셔야 합니다.
를 입력후 엔터를 딱! 하시면 약 3분 가량 후에
android/system/out/target/product/기기명 폴더 안에 recovery.img 가 있답니다!
만약 에러가 뜨신다면, 위에서 수정한 두 파일 수정이 잘못된것 입니다.
전 커널 페이지 값에서 한참 헤맷습니다...ㅠㅠ
Windows OS에서 보실경우 아래 파일을 받아 주십시오.
'iCAROS Works > 안드로이드 따라하는 개발' 카테고리의 다른 글
LG 옵티머스 ICS(아이스크림샌드위치) 전기종 화이트 UI제거 하기 (0) | 2012.11.24 |
---|---|
LG 옵티머스 ICS (아이스크림 샌드위치)에서 안드로이드 순정 잠금화면 사용하기 (2) | 2012.11.24 |
[Dev] ClockWorkMod-based Recovery PowerOFF 종료 파워 오프 버튼 추가하기 / 개발자용 글 (0) | 2012.11.13 |
[Dev] ClockWorkMod-based Recovery 키값 바꾸기 / 개발자용 글 (0) | 2012.11.13 |
[쿠킹] CM7 또는 AOSP를 기반으로 MIUI 포팅하기 (1) | 2012.10.05 |