Nexus 7에 대해 빌드하는 방법에 대해 정리를 해보았습니다.


그리고 WiFi 전용 모델 입니다.


우선 환경은 Ubuntu 12.04 64bit 환경 입니다.


1. 작업 디렉터리 설정하기

  ~$mkdir Android_Nexus

  ~$mkdir Android_Nexus/bin

  ~$mkdir Android_Nexus/src


 2.필수 패키지 설치

 ~/Andorid_Nexus$sudo apt-get update // Package 최신으로 Update

 ~/Andorid_Nexus$sudo apt-get upgrade // 최신 Package 설치

 ~/Andorid_Nexus$sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386


 ~/Andorid_Nexus$sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so


3.JDK 6 설치

  ~/Andorid_Nexus$wget https://raw.github.com/flexiondotorg/oab-java6/master/oab-java.sh


 ~/Andorid_Nexus$chmod a+x oab-java.sh

 ~/Andorid_Nexus$sudo ./oab-java.sh

 ~/Andorid_Nexus$sudo apt-get install sun-java6-jdk

 ~/Andorid_Nexus$sudo update-alternatives --config java


4.Android 4.2 Source Download

 ~/Andorid_Nexus$curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ./bin/repo


 ~/Andorid_Nexus$chmod u+x ./bin/repo


 ~/Andorid_Nexus$gedit ~/.bashrc


[내용 입력]

 - export PATH=${PATH}:~/Andorid_Nexus/src/out/host/linux-x86/bin
   export ANDROID_PRODUCT_OUT=~/Andorid_Nexus/src/out/target/product/grouper


 ~/Andorid_Nexus$source ~/.bashrc


 ~/Andorid_Nexus$cd src

 ~/Andorid_Nexus/src$repo init -u https://android.googlesource.com/platform/manifest -b android-4.2_r1

 ~/Andorid_Nexus/src$repo sync


5. Android 4.2 Binary Driver Download

   https://developers.google.com/android/nexus/drivers#grouperjop40c 로 접속 후,

   해당 드라이버 바이너리들을 Android_Nexus/src/안에 저장.

 

Nexus 7 (Wi-Fi) binaries for Android 4.2 (JOP40C)

Hardware Component Company Download MD5 Checksum SHA-1 Checksum
Wi-Fi, Bluetooth, GPS Broadcom Link 2860929996827f53d38e5432c9dc7dc7 40b15ad807e1cbddca36fd64f60691cc8d621c07
Touch Panel ELAN Link 6c2b4c4f5301c25ff6982b909ba838f1 1de7a664e4bf53a5427e31363ae9024c762ab20f
Orientation Sensor Invensense Link d31fdd0513cf91fbc8aebd8a0a8205f2 95a5a4b2d35bfcdb4ec5f88487f41bef75d04757
Graphics NVIDIA Link bc8c6e082925f642562688b2abebf617 38383f75dfa5fd1573a8b6501940af848b983a2b
NFC NXP Link 436654fa7b2d688f6b332dcf0d053eed b006a2f1e828af068a6c48a8af87b05dd27ab28b
DRM Widevine/Google Link fc4acdc2ccb17b8e9abd8c14957eab49 2916b2ab791fcc07f1a53802e02860136354ae36


위와 같이 다 받았다면, 아래의 명령어 들을 실행합니다.

~/Andorid_Nexus/src$for i in *.tgz; do tar -xvzf "./$i"; done


위의 명령어를 실행하였으면 sh 파일들이 생성되는 것을 확인할 수 있습니다.


여기서 해당 파일들을 하나씩 터미널로 실행시킵니다.


그러면 라이센스가 나오게 되는데 이때, 라이센스틑 반드시 다 읽고 마지막에 "I AGREEDED" [확실치 않음.] 라고 입력해 주고 엔터를 입력해야 정상적으로 바이너리가 설치가 됩니다.


이런 방식으로 나머지 드라이버 바이너리 sh 파일들을 실행시켜 줍니다.


6. Build.

~/Andorid_Nexus/src$source build/envsetup.sh

~/Andorid_Nexus/src$lunch

    lunch 명령을 입력하면 빌드할 명령어를 적어달라고 합니다.

    여기서 엔지니어로 처리하고 싶으면, 출력된 예제대로 출력해주면 되고,

    저는 grouper 빌드 방법에서 userdebug가 아닌 eng로 변경하여 설정하였습니다.

~/Andorid_Nexus/src$make -j4

   여기서 -j4라는 옵션은 Thread를 4개 돌린다는 말로 만약 듀얼코어이면 -j2 이런식으로 처리하면
   됩니다.


7. udev 설치.

~/Andorid_Nexus/src$sudo bash

~/Andorid_Nexus/src#echo SUBSYSTEM==\"USB\", ATTR{idVendor}==\"04e8\", MODE=\"0666\", GROUP=\"plugdev\" >> /etc/udev/rules.d/90-android.rules


~/Andorid_Nexus/src#chmod a+r /etc/udev/rules.d/90-android.rules

~/Andorid_Nexus/src#service udev restart


8. 바이너리 올리기

~/Andorid_Nexus/src$ sudo bash

~/Andorid_Nexus/src#adb reboot bootloader

[기기 upload 모드로 변환]


~/Andorid_Nexus/src#fastboot oem unlock

~/Andorid_Nexus/src#fastboot erase cache

~/Andorid_Nexus/src#fastboot erase userdata

~/Andorid_Nexus/src#fastboot flashall

여기서 flashall은 환경 변수에서 설정한 ANDROID_PRODUCT_OUT의 경로를 통해서 자동으로 image 파일들을 추출 후 연결된 기기로 자동으로 업로드 해주는 명령어 입니다.


[Fastboot 관련 명령어 참고 : http://www.androidpub.com/3633]


위와 같은 작업을 함으로써 정상적으로 바이너리가 올라가는 것을 확인하였습니다.


===================================================================================

Google Apps를 올리는 방법


1. [전제조건 : 루팅이 되어 있어야 함.]

     우선 gapps를 검색하여 다운로드 받습니다.

     [http://goo.im/devs/KonstantinKeller/mako/gapps/gapps-4.2-JOP40C-121116.zip]

     다운로드 받았으면, gapps를 기기의 sdcard에 다운로드 받습니다.

   

     adb shell 상에서 unzip 명령을 사용하기 위해서는 다음의 파일을 다운로드 받아서 설치합니다.

     [busybox.tar]

     설치 방법은 다음과 같습니다.

     1) 위의 파일을 컴퓨터에 다운 받습니다. 그리고 터미널을 이용하여 다운받은 위치로 이동 후 다음과

          같은 명령어로 압축을 풀어줍니다.

          tar -xvf busybox.tar

     2) adb remount 란 명령어를 이용하여 기기를 remount 시켜줍니다.

          그리고 해당 파일을  adb push를 이용하여 /data/busybox 란 위치에 올려줍니다.

          adb push busybox /data/busybox

     3) adb shell 명령어를 이용하여 기기의 shell로 접속 합니다.

     4) 업로드한 busybox 위치로 이동합니다.

          cd /data/busybox

     5) 해당 경로로 이동하였다면, 다음과 같이 명령어를 입력하여 설치합니다.

         chmod 777 busybox

         ./busybox --install -s /data/busybox

         export PATH=/data/busybox:$PATH

      6) 위와 같이 처리하였다면, unzip 명령이 먹힐 것입니다.


     여기까지 작업을 하였다면, 이 전에 기기에 올린 gapps의 zip 파일을 다음의 명령어를 통해서
    설치합니다.

     ./unzip -o /sdcard/gapps-4.2-JOP40C-121116.zip -x "META-INF*" -d /

    위의 명령어를 통해서 설치를 완료하였다면, 기기를 재부팅 합니다.

   그러면 셋업 위자드가 뜨면서 Google App 들이 설치되어 있는 것을 확인 할 수 있습니다.

 

  2. [빌드시 적용 방법.]

      아래의 주소는 어렵게 구한 Gapps가 존재하는 소스 입니다.

      [넥서스 7 Wifi (구글 apk 및 기타 apk들 포함.):
                     https://github.com/rpcraig/grouper_gapps/downloads]

      [구글 apk :
                     https://github.com/rpcraig/android_vendor_google_gapps]

      일단 넥서스 7 WIFI에 포함된 Google Apps 및 깉타 앱들이 포함된 소스를 빌드하는 방법을

     설명해드리겠습니다.

     우선은 위의 소스를 전달 받게 되시면 아래와 같이 몇가지 작업을 하셔야 합니다.


     1. 먼저 위에서 풀소스 및 드라이버 바이너리를 다운받아서 설치를 했기 때문에 전달 받은 파일들의

          mk 파일에서 수정을 해야 합니다.


         수정 내역은 다음과 같습니다.

         1. vendor/asus/grouper/bin/Android.mk 파일에서 glgps 파트 주석 처리.
         2. vendor/asus/grouper/lib/Android.mk 파일에서 gps.tegra3 파트 주석 처리.
         3. vendor/asus/grouper/vendor/Android.mk 파일에서 libpn544_fw 파트 주석 처리.


         위와 같이 수정을 하였다면, 이제 두번째 작업을 시작해야 합니다.

         우선 인터넷에서 gapps-4.2-JOP40C-121116.zip 명으로 검색하여 파일을 다운로드 합니다.

         다운이 완료되면 다운 받은 파일과 방금 다운 받은 넥서스 7 Wifi (구글 apk 및 기타 apk들 포함.)
         압축파일 들을 압축 해제 합니다.


        압축을 풀었다면, 이제 gapps-4.2-JOP40C-121116의 파일들을 잘라내서 그대로 넥서스 7 Wifi
        (구글 apk 및 기타 apk들 포함.)를 압축 푼 폴더에 붙여넣기 합니다.

        이는 인터넷에서 받은 버전은 허니컴버전이기 때문에 App 실행에 있어서 원활하게 실행을 할 수
        가 없다.

        복사가 완료되었다면, 이제  Android 폴더에서 vendor/asus/grouper/에 복사합니다.

        예제)

    


      그리고 빌드를 돌려주시면 됩니다.


     만약 넥서스 7 이 아닌 구글 apk만 설치하겠다면, vendor폴더에서 google이라는 폴더를 생성 후

    그 안에 넣어서 빌드를 돌려주면 됩니다.

    감사합니다.


   




+ Recent posts