12/31/2013

Android 개발환경 설정 Ubuntu 12.04

1. ANDROID BUILD 개발환경.

현재 ODROID를 위한 기본개발환경구성 

  • Host OS Ubuntu 권장사항 
  1. Android 6.0 (Marshmallow) - AOSP master: Ubuntu 14.04 (Trusty)
  2. Android 2.3.x (Gingerbread) - Android 5.x (Lollipop): Ubuntu 12.04 (Precise)
  3. Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu 10.04 (Lucid)

  • Build Toolchain
  1. Android 8.0 and higher support only Clang/LLVM
  2. legacy kernels, GCC 4.9 included in the AOSP master branch (under prebuilts/) may also be used.

  • JDK 권장사항 
  1. Android 7.0 (Nougat) - Android 8.0 (Oreo): Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
  2. Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
  3. Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
  4. Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5

Repo 와 Git 및 Build 환경구성 

  • 개발환경-Key packages
  1. Python 2.6 to 2.7 from python.org
  2. GNU Make 3.81 to 3.82 from gnu.org
  3. Git 1.7 or newer from git-scm.com

  • Make Version 
To avoid build errors, Android 4.0.x (Ice Cream Sandwich) and earlier must revert from make 3.82.

Android SITE의 기본요구사항 확인 
  https://source.android.com/setup/build/requirements

Host에서 USB Device 설정
  https://developer.android.com/studio/run/device#setting-up


1.1 Ubuntu 12.04 LTS 32bit Version 설치 

Android 기본 빌드내용은 아래의 사이트를 참고
Linux에 기본 Android Build 환경과 SDK 및 기타 설정해보자
Ubuntu에 Android 개발환경을 설치해보자. 만약 Virtual Machine을 이용한다면,우선 Virtual Machine 먼저 설정하고, 아래와 같이 ubuntu를 기본으로 설치진행 

  • OS : unbuntu 12.04_LTS
  • Virtual Box 사용.
Virtual Machine을 사용한 Linux를 이용할 경우, 적어도, 16GB RAM 그리고, 30GB 그 이상의 disk 용량을 요구.

Virtual Box 설치 및 Ubuntu 12.04 설치
  https://ahyuo79.blogspot.com/2013/12/virtualbox.html

repo 설치 및 git 설치
  https://ahyuo79.blogspot.com/2014/07/repo.html

Google의 개발환경구성 관련설명
  https://source.android.com/setup/build/initializing

Google의 개발환경구성 관련설정
  https://source.android.com/source/initializing.html#installing-the-jdk

ODROID Download
  https://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword&tag&bid=230


  • 기본 adb 와 fastboot 설치
$ sudo apt-get install android-tools-adb android-tools-fastboot 

  • 설정 Tool Chain 
$ sudo apt-get install gcc-arm-linux-gnueabihf
$ vi ~/.profile
ARCH=arm
CROSS_COMPILE=arm-linux-gnueabihf-

JAVA_HOME=/usr/lib/jvm/jdk1.6.0_35
PATH=$JAVA_HOME/bin:$PATH

  • AOSP Build 시 문제사항 
  https://stackoverflow.com/questions/20235901/aosp-build-error
$ sudo apt-get install libswitch-perl 

  • JDK 관련문제사항 
Copying: out/target/common/obj/APPS/KeyChain_intermediates/emma_out/lib/classes-jarjar.jar
Copying: out/target/common/obj/APPS/Launcher2_intermediates/emma_out/lib/classes-jarjar.jar
make: *** [out/target/common/docs/api-stubs-timestamp] 오류 45

  • JDK 문제 발생시 변경  
$ update-alternatives --config javadoc
$ update-alternatives --config java
$ update-alternatives --config javac
$ update-alternatives --config jar


  • Errors.HIDDEN_SUPERCLASS
아래와 같이 JDK Version 변경 
.... ERROR사항 (stripped of unavailable superclass 에러)  (JDK 6으로 변경)
Install: out/target/product/odroidx2/system/app/Development.apk
Copying: out/target/common/obj/JAVA_LIBRARIES/uiautomator_intermediates/noproguard.classes.jar
target Dex: uiautomator
Install: out/target/product/odroidx2/system/app/PinyinIME.apk
frameworks/base/ethernet/java/android/net/ethernet/EthernetStateMachine.java:72: error 111: Public class android.net.ethernet.EthernetStateMachine stripped of unavailable superclass com.android.internal.util.StateMachine
DroidDoc took 19 sec. to write docs to out/target/common/docs/api-stubs 

  https://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidaf&bid=1294
  https://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword=&tag=&bid=95

설치된 중복 Package 관리방법
  https://ahyuo79.blogspot.com/2018/02/ubuntu-package-2.html

  • JAVA JDK 관련링크
Java SE Development Kit 6u26
jdk-6u26-linux-x64.bin  (계정이 필요)
  https://www.oracle.com/technetwork/java/javase/downloads/index.html
  https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html


1.1.  Installing JDK (Java Development Kit) 

ubuntu를 설치를 하고 update를 하면 , 기본적으로 openJDK가 설치가 된다고 하는데 이 openJDK로 빌드를 하면 문제발생하는데, 주로 JDK의 Version 문제이다. 
ODROID Android  Source Version 를 여러 개 같이 빌드하니, 이 문제는 각 버전마다 별도로 각각 관리해야함 

일단 TEST를 위해서 Sun사 JDK와 OpenJDK 둘다 설치해보고 테스트 중이다.
더불어 Oracle JDK도 존재하며, Sun 사는 Oracle사에 인수합병이 되었으니, Sun JDK가 이전 Version , Oracle JDK가 이후 Version일 것 이라고 생각함

본래 JDK에 문제가 없다면 하나만 설치하면된다. 문제가 발생하면 처음 Version을 변경을 해보고, 다른 JDK로 변경을 해보자.

  •  Sun JDK 설치 (실패) 
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo vi /etc/apt/sources.list 
   ## check your list 
$ sudo apt-get install sun-java6-jdk

위의 명령대로 했더니, 설치가 안되어서, 다시 구글링해서 아래와 같이 script version or manual version으로 설치

  •  Sun JDK 설치 (성공) 
$ wget https://raw.github.com/flexiondotorg/oab-java6/master/oab-java.sh
$ chmod +x oab-java.sh
$ sudo ./oab-java.sh
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk sun-java6-fonts sun-java6-source
$ sudo update-alternatives --config java    // JAVA JDK중 사용자가 직접설정
$ sudo update-alternatives --all            // 모든설정 사용자가 직접설정.
# 체크 모든 JDK , JRE 설정 

  • Oracle JDK 설치 
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update  
sudo apt-get upgrade  
sudo apt-get install oracle-java7-installer        // oracle-7 JDK 설치 

sudo update-java-alternatives -s java-7-oracle     // oracle-java-7로 설정 및 사용

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections                     // 정확히 뭔지 모르겠음 

sudo apt-get install oracle-java7-set-default  // JAVA_HOME and PATH 환경변수 자동설정.
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java6-installer    // 각 version 별로 설치

상위 관련내용 
  http://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-openjre-and-set-sunjdk-sunjre-as-default


Sun사와 Oracle 사의 JDK를 설치, Version 1.6로 확인 JDK는 Ubuntu Terminal에서 설치를 해야한다. (SSH Client 설치할 경우, Error)
     
JDK 관련설명 및 사용법
  https://help.ubuntu.com/community/Java

Android Version ICS와  JDK 권장내용 (ODROID 관련내용, 중요한 내용)
  http://codewalkerster.blogspot.kr/2011/11/android-openjdk-vs-sun-jdk-build.html

  • Open JDK 설치 
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk

  • SUN SDK 6 설치확인
각 JDK를 설치 후 Version 확인 

$ java -version
$ javac -version 
Sun JDK 6
$ java -version  //Sun JDK 6 and Oracle 6
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

OPEN JDK 7 설치확인 
$ java -version  // OpenJDK 설치시
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

javac 1.7.0_55

이렇게 JDK를 여러개를 설치 한 후 JDK와 JRE를 변경하고 싶다면 update-alternatives를 이용하는데, 이게 애매할때가 있는데,
이런 경우에는 각 설치한 JDK 패키지들을 각자 삭제한후 새로 설치 진행을 하자 
나중에 정리가 필요할 것 같다.


1.2. Ubuntu 12.04의 Package 설치 


$ 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


1.3. Host 에서 ADB USB Access 허용   

Host 즉  Window에서,  Guest OS인 Linux Server에 usb device 관련설정 한 후에 , Window의 Virtual box에서 USB Filter로 등록하여 사용하자. 

  • adb 사용을 위해 USB Device 설정 
$ sudo vi /etc/udev/rules.d/51-android.rules
    SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"

$ sudo chmod a+rx /etc/udev/rules.d/51-android.rules
$ sudo service udev restart

아래의 사이트 참고 
  http://developer.android.com/tools/device.html

Fastboot 설치방법 
  https://github.com/red-root/PortingARMLinux/wiki/Fastboot-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95


2. How to install Toolchain 

Lite version 만 무료이며, 아래의 링크는 ODROID 사이트에서 가져옴

  • Code Sourcery - Tool Chain Download
  https://sourcery.mentor.com/sgpp/lite/arm/portal/release1294

  • Download 후 설치 
$ sudo chmod a+x arm-2010q1-188-arm-none-eabi.bin
$ sudo dpkg-reconfigure -plow dash
    아니오 선택.

$ ./arm-2010q1-188-arm-none-eabi.bin


설치시 PATH에  cross compiler 설치된 디렉토리 자동으로 추가되며,이를 .bath_profile로 확인.


3. How to install SDK and ECLIPSE



3.1 ECLIPSE

$ sudo apt-get install ecplise

회사 컴퓨터는 위와 같이 설치가 했는데  아래와 같은 에러가 발생하여, 아래와 같이 해결.
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:

$ ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/ 

이상하게, Eclipse와 위에서 설치한 필수 library와 충돌한다.
만약 위의 대로 설치가 되지 않는다면, 아래와 사이트가서 직접 다운로드해서 실행.

  http://www.eclipse.org/downloads/packages/release/indigo/sr2


3.2. ECLIPSE에서 Android SDK 설치

ODROID 메뉴얼과 아래의 메뉴얼을 참조하면 쉽게 할수 있을 것이다.

$ eclipse 실행.
Help->Install New Software -> ADD

ADT(Android Develop Tools) 로
      Name: ADT Plugin
      Location: https://dl-ssl.google.com/android/eclipse/


  • ADB와 FASTBOOT를 사용하기위해서 PATH설정 

$ vi ~/.bash_profile
 PATH=${PATH}:~/android-sdks/platform-tools
$ source ~/.bash_profile

아래사이트 참조
  http://blog.naver.com/PostList.nhn?from=postList&blogId=kazama10&categoryNo=29&currentPage=3


Ref.
  http://source.android.com/source/initializing.html