서론

 - Android Studio를 접한지 하루가 지났습니다.
    Android Studio에 대해서 구글에서 검색해본 결과, 일부 사람들은 Eclipse보다는 좋은 툴이라고 말씀하시는 분들도 있지만, 일부는 툴의
    사용법이 너무 어렵다고 Eclipse를 사용하시는 분들도 있더군요.
    그런데 앞으로의 추세를 보았을 때, Android Studio를 개발자들이 많이 사용하게 되지 않을 까 싶습니다.

    그래서 저는 이 툴에 대해서 설치 및 사용을 해보고자 이글을 정리해서 올립니다.

    Android Studio에 대해서 잘 정리하신 분이 계셔서 해당글의 내용을 아래에 적어드립니다.
    여러분들도 도움이 되셨으면 하네요.

    [ http://blog.saltfactory.net/227 ]


Android Studio HomePage
 - Android Developer : http://developer.android.com/sdk/installing/studio.html

 - Android Studio : http://paolorotolo.github.io/android-studio/


설치 (Ubuntu 에서 shall 명령어를 통한 설치) : Android Studio 홈페이지 참고.

 - sudo apt-add-repository ppa:paolorotolo/android-studio 

    sudo apt-get update 

    sudo apt-get install android-studio
 - 위의 명령어 들을 이용하여, 설치가 완료가 된 후, App 목록에서 확인해보면, Android Studio가 설치되었음을 확인할 수 있다.
    (저같은 경우에는 설치가 끝났음에도 App 목록에 나타나지 않아서 재부팅을 해보니 설치가 됨을 확인할 수 있었다.)

 - 위와 같이 설치시, 다음과 같은 경로에 설치가 됨.
    경로) /usr/share/android-studio/data/


설치 (Android Developer에서 다운 받았을 경우.)

 - Android Developer에서 Android Studio 압축 파일을 다운받았다면, 원하는 위치에 압축을 풀어줍니다.
    --> 예) tar -xzvf android-studio-bundle-135.1245622-linux.tgz

 - 위 명령어를 통해서, 압축을 풀었다면, 압축을 풀은 경로에서 아래의 경로를 이동하여, studio.sh를 실행하면 됩니다.
    경로) .../android-studio/bin/studio.h


위와 같이 실행하기 전에 메모리를 조금 늘려주어야 한다. 그렇지 않으면, 로딩 및 빌드시 상당한 시간을 소요하게 된다.

/bin/studio.vmoptions 파일을 Open 하여 다음과 같이 수정하면됩니다.

-Xms512m

-Xmx768m

-XX:MaxPermSize=350m

-XX:ReservedCodeCacheSize=96m

...

-Dfile.encoding=UTF-8


마지막 부분은 파일을 열때, 한글이 깨지지 않도록 처리하는 부분입니다.


환경 변수에 설정하고 싶다면, 다음과 같이 설정해주면 됩니다.

sudo vi /etc/bash.bashrc 와 같이 해당 파일을 Open한 후, 마지막 부분에 다음과 같은 명령어들을 추가해주면 됩니다.

 - export PATH=$PATH:/usr/share/android-studio/data/bin


혹시 부족하거나 잘못된 내용이 있다면, 많은 지적 부탁드릴게요 ^^

오늘도 즐거운 하루 되셔요.


안드로원의 커스텀 펌웨어 업그레이드 방법을 보고 오드로이드에 구글앱을 설치해 보니 잘 동작을 한다. +_+ 설치 방법은 다음과 같다.


1. 구글앱 패키지를 내려 받는다. 내려받아야 하는 파일은 다음과 같다.

http://http://goo-inside.me/google-apps/gapps-hdpi-20101114-signed.zip


2. 내려 받은 구글앱압축 파일을 오드로이드의 SD메모리에 저장한다.


3. 기본적으로 Rooting이 되어 있어야 하는데 오드로이드의 경우 최종릴리즈된 버전으로 업그레이드를 하면 기본적으로 루팅이 되어 있다.


4. 다음의 명령을 통하여 패키지를 설치 한다.

     adb shell

     unzip -o /mnt/sdcard/gapps-hdpi-20101114-signed.zip -x "META-INF*" -d /


5. 모든 작업이 완료되면 단말기를 재부팅후 사용하면 된다. 

<meta charset="utf-8">

출처 : http://blog.naver.com/PostView.nhn?blogId=seojongbeom&logNo=50105521215


Title.
넥서스 원 빌드에서 다운까지.
 
 
1. 넥서스 원 빌드를 위한 세팅.
 
넥서스 원 스크립트 실행
 
단말을 연결한 상태에서 WORKING_DIRECTORY 로 이동 후
cd ./device/htc/passion/
./extract-files.sh 
 
>> extract-files.sh 분석.
system/lib 에서 .so 파일들을 추출하여 플랫폼 소스에 복사.
system/etc 에서 기타 필요한 파일들을 복사함.
device-vendor-blobs.mk  빌드 옵션 추가함.
./setup-makefiles.sh 실행.
[출처] 넥서스 원 생강빵 입히기 3. 생강빵 입혀보기~|작성자 핫뜨이마

출처 : http://blog.naver.com/PostView.nhn?blogId=spreet&logNo=50114562613&parentCategoryNo=1&viewDate=&currentPage=1&listtype=0

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이라는 폴더를 생성 후

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

    감사합니다.


   




출처 : http://thdev.net/259

Source Build 방법 : http://source.android.com/source/downloading.html

Binary Driver : https://developers.google.com/android/nexus/drivers#grouperjop40c

Build Command : http://yatoyato.tistory.com/25

갤럭시 넥서스의 Factory Images를 이용하여 복원하는 방법을 설명하려고 합니다. 롬을 설치하고, 갑자기 부팅이 되지 않고, 부팅 로고가 멈추거나 하는 경우에는 해당 롬을 다시 올리면 되겠지만, AS를 가야 하거나, 정식버전의 롬이 출시되거나 하는 등의 경우에는 롬을 Factory Images를 이용하여 완전히 복원하는 방법을 사용하시면 좋을 듯 합니다.

 인터넷 검색을 해보면 많은 정보가 있습니다. 그런데 구글에서 직접 .sh 파일을 만들어서 쉽게 롬을 변경할 수 있게 해두었습니다. 그러니 명령어를 직접 입력하지 않아도 되고, 간단한 명령 입력만으로 공장 초기화로 돌릴 수 있습니다.

 그리고 저는 루팅을하고, 롬을 변경할 때 CWM 을 설치하지 않았습니다. 설치하지 않은 이유는 가끔 이용할 프로그램을 굳이 롬에 넣어둘 필요성을 못느꼈기 때문입니다. 만약 CWM을 설치하셨다면 검색을 하셔서 CWM 삭제하는 방법을 찾아보셔야 합니다.


필수 사항

 당연히 UNLOCK 상태이어야 합니다. LOCK 상태라면 아래 글을 먼저 참고하세요(아래 SDK 설치 USB 설치는 이 글을 읽어보시면 됩니다.) 아래 글로 가셔서 UNLOCK 까지만 하시면 됩니다. SUPER Path는 하지 않으셔도 됩니다.

  http://thdev.net/170


Android sdk를 다운 받아 준비해야 합니다. sdk는 아래 사이트로 접속하여 다운 받을 수 있습니다.

   http://developer.android.com/sdk/index.html

   Nexus S 윈도우 XP 드라이브 링크 : http://db.tt/1Pl7vHfg

더보기


갤럭시 넥서스, Nexus S 드라이브가 설치되어야 합니다.

Nexus S의 경우

 설치가 완료되었습니다. 이제 휴대폰을 재부팅하고, 안드로이드 root 권환을 획득하면 됩니다. 그전에 윈도우에서 USB드라이브를 잡아주셔야 합니다. 

 윈도우에서만 드라이브 잡아주시면 되니 아래글을 참고해 주세요.

더보기


갤럭시 넥서스

 갤럭시 넥서스의 경우 삼성에서 제공하는 Driver를 설치해주시면 됩니다.


 Factory Images를 다운 받습니다.

  http://bit.thdev.net/OQRoqD


참고 : sdk 설치가 어렵다고 하시는 분은 아래 파일만 다운 받으시면 됩니다. Android sdk 설치시에 나오는 플렛폼 툴 폴더를 압축해서 올려드립니다.

  http://db.tt/rDBA3oeY (C:\ 아래에 압축을 푸시는게 cmd에서 접근하기 가장 편합니다.)

Nexus S의 경우 USB 드라이브 설치가 안되어 있으시면 아래 드라이브를 다운 받으시면 됩니다.

  http://db.tt/zCd1EEDe


Factory Images 다운로드

 Factory Images 다운로드 홈페이지

   http://bit.thdev.net/OQRoqD

 구글에서 오픈 소스로 정식 운영하는 사이트입니다. 해당 사이트에 접속하면 아래와 같이 Factory Images를 다운 받을 수 있습니다. 그런데 코드명이 소주, 약주, 탁주 등... 익숙한 이름들이 보입니다. ㅋㅋ 넥서스 S 를 사용하신다면 이것 말고 위쪽에 korean 버전이 따로 있습니다. 이걸 다운 받으시면 됩니다. 갤럭시 넥서스의 경우에는 korean 버전이 따로 존재하지 않습니다.

 해외롬으로 적용할 경우 국내에 출시된 갤럭시 넥서스는 GSM/HSPA+ 버전을 다운 받으시면 됩니다. 구글 Wallet 버전도 있지만 국내에서는 구글 Wallet 사용이 안되니...

 현재까지 최신 버전은 갤럭시 넥서스 4.0.4, 넥서스 7은 정식버전인 4.1, 넥서스 S는 4.0.4 버전이 있습니다. 아쉽게도 넥서스 원의 이미지는 해당 페이지에는 없습니다.


넥서스 S는 아래와 같이 4개의 롬이 있습니다. 최신버전을 가장 빨리 받아보는 방법은 당연히 월드 버전을 다운 받아 설치하시면 됩니다. 한국 순정 버전은 Korea version, m200 버전을 다운 받으시면 됩니다.

[https://developers.google.com/android/nexus/images#mantarayjop40c]

 다운받은 Factory Images를 압축을 해제하시면 됩니다. 아래와 같이 5개의 파일이 제공됩니다. 이 중 flash-all.sh에 명령어들이 있습니다. 뭐 직접 열어서 하나하나 입력하시는것도 좋겠지만 이왕 만들어진 스크립트이니 편리하게 사용해야 겠죠?

 일단 아래의 파일들을 모두 android-sdk가 설치된 폴더로 복사합니다. 저는 편의상 C:\ 드라이브 아래에 android-sdk를 설치했습니다. android-sdk-windows\platform-tools\ 폴더에 복사합니다.



- 최근 Factory Images를 압축을 풀면 .bat파일도 함께 존재합니다. .sh.bat로 변경하지 않아도 됩니다.


 아래와 같이 복사를 했습니다. 이중 .sh 파일이 2개가 있습니다. 윈도우에서는 .sh가 동작하지 않습니다.

 이 중에 Factory 이미지 적용에 사용해야 할 .sh 파일은 flash-all.sh 입니다. flash-all.sh를 flash-all.bat 로 변경하는데 이는 윈도우에서 읽을 수 있는 bat 파일로 변환합니다. bat로 변환하면 cmd에서 읽을 수 있는 파일로 변경이 됩니다.

 참 고로 다운 받은 Factory Images를 압축해제하고 아래와 같이 복사한 이유는 platform-tools 폴더에 있는 adb, fastboot 등의 실행 파일이 필요하기 때문에 아래와 같이 복사했습니다. 단, 윈도우 환경 변수에 등록하셨다면 해당 작업은 필요치 않습니다. 그렇지 않으면 fastboot.exe파일만 있어도 됩니다.


Factory Images 설치

갤럭시 넥서스의 경우

 일단 휴대폰을 끄고, 전원 버튼과 볼륨 크게/작게 버튼을 동시에 누릅니다.(볼륨 버튼은 가운데를 누르면 됩니다.) 3개의 버튼을 동시에 눌러 대기모드로 전환하시면 됩니다. 이미 지난 루팅 및 젤리빈 설치 글을 보셨다면 드라이브가 설치되어 있을 것이라고 생각됩니다. 별도로 설명하진 않겠습니다.


넥서스 S의 경우

 일단 휴대폰을 종료하고, 볼륨 크게 + 전원 버튼을 동시에 누르시면 됩니다.

 USB가 연결되어 있다면 아래와 같이 Android 1.0 드라이브를 찾을 수 없다고 할 것입니다. 만약 설치되어 있다면 다음 부분으로 넘어가시면 됩니다.


찾을 수 없을 경우 아래 글을 열어서 참고하세요.

더보기


 휴대폰의 대기상태가 되었으면 이제 윈도우에서 작업을 하면 됩니다. cmd 를 실행합니다.(윈도우에서 실행 또는 명령어에 cmd를 입력하면 됩니다.)

 경로를 변경합니다. c:\ 아래에 android sdk를 설치했기에 아래와 같이 변경합니다.

 해당 폴더에는 flash-all.bat라는 파일이 포함되어 있습니다.

 아래와 같이 실행합니다. (아래쪽에서 flash-all.bat에 어떤 명령이 포함되어 있는지 살펴보겠습니다.)


참고

 진행중에 radio 버전 문제로 진행이 안되는 경우가 발생할 수 있습니다. 젤리빈의 Radio 버전과 ICS의 Radio 버전이 서로 다르기 때문에 발생하는 문제입니다. 이런 문제가 발생 할 경우에는 아래 명령어를 이용하여 radio 패치를 먼저 한 후 다시 진행하시면 됩니다.

  fastboot flash radio radio-maguro-파일명.img


 flash-all.bat를 실행하면 아래와 같이 명령어가 실행됩니다. sleep 5라는 명령어를 사용하는데 윈도우에서는 사용할 수 없는 명령어라 실행되지 않습니다. bat 파일에 저장된 라인 수대로 실행이 이루어집니다. 시간은 약 5분도 안걸리는 듯 합니다. 설치가 완료되고 나면 자동으로 재부팅까지 완료합니다. 이제 남은건 LOCK만 걸어주면 됩니다.


flash-all.bat(또는 flash-all.sh) 명령파일을 실행하면 아래와 같습니다. # 으로 주석이 걸려있는 명령어를 제외한 명령어를 직접 입력하셔도 rom 초기화 하는데에는 문제가 없습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
# Copyright (C) 2011 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 
#여기서 부터 명령입니다.
fastboot flash bootloader bootloader-maguro-primela03.img
fastboot reboot-bootloader
#sleep 5 /bin/sh 사용되는 명령이라서 사용이 되진 않습니다.
fastboot flash radio radio-maguro-i9250xxla02.img
fastboot reboot-bootloader
#sleep 5 /bin/sh 사용되는 명령이라서 사용이 되진 않습니다.
fastboot -w update image-yakju-imm76i.zip

재부팅을 했지만 아직 LOCK는 UNLOCK 모드입니다.

LOCK 걸어주기

  다시 휴대폰의 전원을 끕니다. 구글에서 제공해주는 명령어를 사용했기 때문에 폰이 자동으로 재부팅 됩니다. 강제로 종료하셔도 문제는 없습니다.

 전원 버튼과 볼륨 크게/작게 버튼을 동시에 누릅니다.(볼륨 버튼은 가운데를 누르면 됩니다.) 3개의 버튼을 동시에 눌러 대기모드로 전환하시면 됩니다.

 위에서 작업하던 cmd창을 열고 아래 명령을 입력합니다.

1
fastboot oem lock


이제 모든 초기화 및 LOCK 걸어주는 작업까지 끝이 났습니다. 갤넥에서 정상적으로 4.0.4 버전으로 돌아갔는지 확인해야 합니다.

설정에서 확인한 4.0.4 버전입니다.


설치된 앱들입니다.


루팅앱도 없고, ICS로 돌아왔네요.


마무리

 이렇게 순정롬으로 변경하는 작업을 진행했습니다. 추가로 어떤 명령어를 사용했는지에 대해서도 살펴봤습니다. 원래는 하나하나 명령어를 직접입력해주기도 합니다. 그런데 간단하게 스크립트를 지원하는데 굳이 하나하나 입력해야 할 필요는 없다고 생각됩니다. 그래서 간단하게 복원하는 방법을 살펴봤습니다.

 그런데 국내롬이 이걸로 해당되는지는 모르겠군요....

'기타' 카테고리의 다른 글

[Gerrit] 환경 구축  (0) 2020.04.15
[Hudson] 자동 빌드 설정 방법  (0) 2012.08.10
VPN  (0) 2011.05.03
SVN GUI TOOL[SVN Tool - RapidSVN 사용법]  (0) 2011.02.09
SVN  (0) 2011.02.09

http://code-rilla.blogspot.kr/2010/04/android-ndk-lib.html

안드로이드 에서 NDK를 이용한 JNI Header파일을 생성하기 위해서는


다음과 같은 명령어를 작성하면 정상적으로 생성이 된다.


javah -classpath ./classes/ -jni com.ace.hellojni.NativeCall


이전에 인터엣에서 있는 방법으로 classpath가 없는 형식으로 하게 되면 Class 파일을 찾을수 없다는 에러가 발생하게 된다.

[Android] adb를 이용해 터치 이벤트 생성하기.

출처 : http://dry-kiss.blogspot.kr/2012/03/android-adb.html
0. 배경 지식
안드로이드의 사용자 이벤트 처리 과정은 크게, H/W(device) > Linux kernel > Android input system 정도의 3단계로 나눠 볼 수 있다.

터치스크린, 키보드, 센서 등의 입력 기기는 사용자의 실제 입력을 받게 되고, 이는 각 기기의 드라이버를 통해 Linux 커널에게 Linux 표준 방식으로 자신의 이벤트를 알리게 된다.
Linux 커널의 표준 방식이란, 널리 알려진 대로 기기 자신을 커널의 파일 시스템 상에 존재하는 하나의 파일로 추상화 시키고, 해당 기기를 사용하고자 하는 사용자는 해당 파일을 open 하고, read / write / ioctl 과 같은 표준 방식으로 조작하는 방식이다. 이때, 사용되는 각 이벤트의 데이터 형식은 Linux 표준을 따른다.

안드로이드 input system 은 EventHub 라는 모듈이 직접 각 입력 기기의 device file 에 접근, 이벤트를 읽어들이고, 이는 InputReader 라는 모듈에게 Linux kernel 표준 이벤트 형태로 전달된다.
이 이벤트는 InputReader 에서 Android 에서 사용하는 형식의 이벤트로 다듬어지고, Input dispatcher 라는 모듈에게 전달된다. Input dispatcher 는 현재 시스템에서 이벤트를 받아야 할 윈도우에게 Android 에서 사용하는 형식의 이벤트를 던져 준다.

안드로이드 기기는 자신의 파일시스템 상에 getevent, sendevent 라는 native 프로그램을 내장하고 있으며, adb shell 명령을 이용해 안드로이드 기기의 shell 에 접근 하면 두 프로그램을 실행 할 수 있다.

getevent 는 위에서 말한 input device file 들의 내용을 실시간으로 읽어서 표시해 주는 일을 하고, sendevent 는 사용자가 전달한 인자를 가지고 이벤트를 만들어 input device file 에 넣어준다. 즉, 사용자가 의도한 이벤트를 발생시킨다.
때문에, getevent 를 가지고 end-user 의 입력이 어떤 모습으로 커널에 전달되는지 확인 할 수 있고, 이를 분석함으로써 얻은 구조에 대한 이해를 가지고 sendevent 로 원하는 이벤트를 발생 시킬 수 있다.


1. 터치 이벤트 분석하기
# adb shell getevent
를 입력하면, 현재 adb 에 연결된 기기 또는 에뮬레이터의 입력 기기 목록과 해당 기기들의 device file 경로가 나오고, 이후 몇몇 기기의 이벤트가 계속해서 실시간으로 화면에 나타날 것이다.
다음은 Nexus One 을 연결하고 getevent 했을 때의 출력 내용이다.


$ adb shell getevent
add device 1: /dev/input/event6
  name:     "mahimahi-nav"
add device 2: /dev/input/event5
  name:     "mahimahi-keypad"
add device 3: /dev/input/event4
  name:     "proximity"
add device 4: /dev/input/event3
  name:     "synaptics-rmi-touchscreen"
add device 5: /dev/input/event2
  name:     "compass"
add device 6: /dev/input/event1
  name:     "h2w headset"
add device 7: /dev/input/event0
  name:     "lightsensor-level"
/dev/input/event2: 0003 0001 fffffd3e
/dev/input/event2: 0003 0002 00000008
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0000 ffffffef
/dev/input/event2: 0003 0002 0000000b
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0000 ffffffec
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0000 ffffffe9
/dev/input/event2: 0003 0001 fffffd41
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0001 fffffd3e
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0002 00000008
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0000 ffffffec
/dev/input/event2: 0003 0001 fffffd3b
/dev/input/event2: 0000 0000 00000000
/dev/input/event2: 0003 0000 ffffffe9


아무짓도 하지 않고 있는데 계속 이벤트를 뿌려주는 입력 기기는 대부분 light sensor 등과 같은 센서들이다.
여기서 직접 화면에 손가락을 대서 터치 이벤트를 발생시키면, 그때만 이벤트를 뿌리는 device file 이 있을 것이다. 그게 터치스크린 device file 이다.
꼭 그러지 않더라도, 최초의 기기 목록의 이름을 가지고도 어느정도 짐작은 할 수 있다. 위의 출력 내용에서는 /dev/input/event3 가 터치스크린일 것임을 짐작 할 수 있다.

이벤트의 내용은 좌측부터 순서대로 device file path, type, code, value 이다.

위의 명령은 light sensor 등과 같은 필요치 않은 기기의 이벤트를 뿌려 정신을 산만하게 만드니까 grep 명령 등을 이용하면 좋다.

이제, getevent 를 통해 터치스크린의 이벤트에 집중하면서 짧게 화면을 터치해 보자.
다음과 같은 이벤트 내용을 얻을 수 있을 것이다.


$ adb shell getevent | grep event0
add device 7: /dev/input/event0
/dev/input/event0: 0003 0035 0000035d
/dev/input/event0: 0003 0036 000000e0
/dev/input/event0: 0003 003a 00000044
/dev/input/event0: 0003 0030 00000007
/dev/input/event0: 0003 0039 00000000
/dev/input/event0: 0000 0002 00000000
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0000 0002 00000000
/dev/input/event0: 0000 0000 00000000



이번엔 터치 위치를 좌우로 또는 아래로 약간 움직여 한번 더 터치해 보자.
여기선 x축 좌표는 거의 그대로 두고, 꽤 아래 쪽을 터치했다.

$ adb shell getevent | grep event0
add device 7: /dev/input/event0
/dev/input/event0: 0003 0035 0000035a
/dev/input/event0: 0003 0036 00000286
/dev/input/event0: 0003 003a 00000037
/dev/input/event0: 0003 0030 00000007
/dev/input/event0: 0003 0039 00000000
/dev/input/event0: 0000 0002 00000000
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0000 0002 00000000
/dev/input/event0: 0000 0000 00000000




참고로, getevent 가 표시해 주는 값들은 16진수다. 10진수로 바꿔주면 가지고 있는 기기의 해상도와 터치한 손가락의 위치를 바탕으로 보다 쉽게 어느 type / code 가 어느 값을 의미하는지 알 수 있다.
보면 중복되는 값들이 있고, x/y축의 이동을 생각해 보면, 최초 두개의 이벤트는 x/y 축을 의미하며, 세번째는 터치 압력을 의미한다. 나머지는 두 이벤트가 똑같다.

이제, 위와 같은 내용의 이벤트를 x / y 축의 값만 바꿔 입력하면, 원하는 위치에 터치 이벤트를 만들어 줄 수 있다.
setevent 는 10진수를 입력받으므로, 위의 값들은 10진수로 변환해야 한다.
파이썬을 사용한다면 다음과 같은 스크립트를 만들 수 있을 것이다.


os.system("adb shell sendevent /dev/input/event1 3 53 " + x_axis)
os.system("adb shell sendevent /dev/input/event1 3 54 " + y_axis)
os.system("adb shell sendevent /dev/input/event1 3 58 55")
os.system("adb shell sendevent /dev/input/event1 3 48 7")
os.system("adb shell sendevent /dev/input/event1 3 57 0")
os.system("adb shell sendevent /dev/input/event1 0 2 0")
os.system("adb shell sendevent /dev/input/event1 0 0 0")
os.system("adb shell sendevent /dev/input/event1 0 2 0")
os.system("adb shell sendevent /dev/input/event1 0 0 0")

추가 내용
http://source.android.com/tech/input/getevent.html

항상 최상위에 나오는 뷰 만들기2 (팝업 비디오 + Q슬라이드)

[출처 : http://blog.daum.net/mailss/35]

이전에 쓴 글 '항상 최상위에 나오는 뷰 만들기'는 뷰는 나오지만 터치 이벤트를 받지 못했다. 터치 이벤트를 받더라도 ACTION_OUTSIDE 이벤트만 받을 수 있었다.


이제는 그냥 최상위 뷰만 나오게 하는 것이 아니라 뷰를 최상위에 나오게 하면서 모든 터치 이벤트를 받아보자. 터치로 뷰를 이동해보고(갤럭시의 팝업 비디오 처럼) 투명도를 조절해보자!!(옵티머스의 Q슬라이드)


이전에 쓴 '항상 최상위에 나오는 뷰 만들기' 와 방식은 같다.

1. 최상위에 나오게 하기 위해서는 Window에 뷰는 넣는다.

2. 다른 화면에서도 나오게 하기위해서는 서비스에서 뷰를 생성하여야 한다.

3. 뷰에 들어오는 터치 이벤트를 OnTouchListener를 통해서 받는다.


1. 서비스 생성

자신의 앱이 종료된 후에도 항상 해당 뷰가 떠 있어야 한다. 그래서 Activity에서 뷰를 추가하는 것이 아니라 Service에서 뷰를 추가 해야 한다.


AlwaysOnTopService.java

public class AlwaysOnTopService extends Service {
    @Override
    public IBinder onBind(Intent arg0) { return null; }
    
    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }
}


2. 뷰 생성 및 최상위 윈도우에 추가

간단하게 텍스트뷰 하나 추가하는 코드이다.

    private TextView mPopupView;                            //항상 보이게 할 뷰
    private WindowManager.LayoutParams mParams;  //layout params 객체. 뷰의 위치 및 크기
    private WindowManager mWindowManager;          //윈도우 매니저

    @Override
    public void onCreate() {
        super.onCreate();

        mPopupView = new TextView(this);                                         //뷰 생성
        mPopupView.setText("이 뷰는 항상 위에 있다.");                        //텍스트 설정
        mPopupView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); //텍스트 크기 18sp
        mPopupView.setTextColor(Color.BLUE);                                  //글자 색상
        mPopupView.setBackgroundColor(Color.argb(127, 0, 255, 255)); //텍스트뷰 배경 색

        //최상위 윈도우에 넣기 위한 설정
        mParams = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,//항상 최 상위. 터치 이벤트 받을 수 있음.
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,  //포커스를 가지지 않음
            PixelFormat.TRANSLUCENT);                                        //투명
        mParams.gravity = Gravity.LEFT | Gravity.TOP;                   //왼쪽 상단에 위치하게 함.
        
        mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);  //윈도우 매니저
        mWindowManager.addView(mPopupView, mParams);      //윈도우에 뷰 넣기. permission 필요.
    }


 이전 글에서는 TYPE을 TYPE_SYSTEM_OVERLAY로 주었다. 이러면 화면 전체를 대상으로 뷰를 넣지만 터치 이벤트를 받지는 못한다.

 하지만 TYPE을 TYPE_PHONE으로 설정하면 터치 이벤트를 받을 수 있다. 하지만 Status bar 밑으로만 활용가능하고 뷰가 Focus를 가지고 있어 원래 의도대로 뷰 이외의 부분에 터치를 하면 다른 앱이 터치를 사용해야 하는데 이것이 불가능 하고 키 이벤트 까지 먹어 버린다.

 이것을 해결하기 위해 FLAG 값으로 FLAG_NOT_FOCUSABLE을 주면 뷰가 포커스를 가지지 않아 뷰 이외의 부분의 터치 이벤트와 키 이벤트를 먹지 않아서 자연스럽게 동작할 수 있게 된다.


3. 매니페스트에 퍼미션 설정

WinodwManager에 addView 메소드를 사용하려면 android.permission.SYSTEM_ALERT_WINDOW 퍼미션이 필요하다.


<manifest  ................ >
    <application ................ >
        <activity
           ................
        </activity>
        <service 
           ................
        </service>
    </application>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-sdk android:minSdkVersion="7" />
</manifest>


이전 글에는 service 태그 안에 퍼미션을 주라고 했지만 service에 주지 않아도 된다. 그냥 uses-permission을 주면 된다.


4. 터치 이벤트 받기

뷰에 터치 리스너를 등록하면 터치 이벤트를 받을 수 있다.


mPopupView.setOnTouchListener(mViewTouchListener);              //팝업뷰에 터치 리스너 등록


private OnTouchListener mViewTouchListener = new OnTouchListener() {
    @Override public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:                //사용자 터치 다운이면
                if(MAX_X == -1)
                    setMaxPosition();
                START_X = event.getRawX();                    //터치 시작 점
                START_Y = event.getRawY();                    //터치 시작 점
                PREV_X = mParams.x;                            //뷰의 시작 점
                PREV_Y = mParams.y;                            //뷰의 시작 점
                break;
            case MotionEvent.ACTION_MOVE:
                int x = (int)(event.getRawX() - START_X);    //이동한 거리
                int y = (int)(event.getRawY() - START_Y);    //이동한 거리
                
                //터치해서 이동한 만큼 이동 시킨다
                mParams.x = PREV_X + x;
                mParams.y = PREV_Y + y;
                
                optimizePosition();        //뷰의 위치 최적화
                mWindowManager.updateViewLayout(mPopupView, mParams);    //뷰 업데이트
                break;
        }
        
        return true;
    }
};


터치로 뷰를 이동하거나 크기 조절을 하려면 WindowManager.LayoutParams 객체의 값을 변경해 주면 된다. x, y는 뷰의 시작점 좌표이다. Q슬라이드 처럼 투명도 조절은alpha값을 변경하면 된다. 0~1사의 값을 넣어 주면 된다.

이렇게 WindowManager.LayoutParams의 값을 변경해준 다음 WindowManager의 updateViewLayout메소드를 사용하여 뷰의 변경사항을 적용한다.



5. 뷰 제거

서비스 종료시 뷰를 제거 해야 한다.

    @Override
    public void onDestroy() {
        if(mWindowManager != null) {        //서비스 종료시 뷰 제거. *중요 : 뷰를 꼭 제거 해야함.
            if(mPopupView != null) mWindowManager.removeView(mPopupView);
            if(mSeekBar != null) mWindowManager.removeView(mSeekBar);
        }
        super.onDestroy();
    }


6. 서비스 실행/중지 할 activity 만들기

AlwaysOnTopActivity.java


public class AlwaysOnTopActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        findViewById(R.id.start).setOnClickListener(this);        //시작버튼
        findViewById(R.id.end).setOnClickListener(this);            //중시버튼
    }
    
    @Override
    public void onClick(View v) {
        int view = v.getId();
        if(view == R.id.start)
            startService(new Intent(this, AlwaysOnTopService.class));    //서비스 시작
        else
            stopService(new Intent(this, AlwaysOnTopService.class));    //서비스 종료
    }
}


실행 결과


 앱 시작뷰 추가 바탕화면 (위치 이동)

 동영상 재생
 Dragon Flight 게임
인터넷 (투명값 변경)




 AlwaysOnTop.zip

전체 샘플 코드 첨부하였습니다.

1.     Multipart Message 종류

Message

정의

Mixed

다른 Content-type 헤더를 갖는 파일을 전송하는데 사용.

메일 클라이언트가 읽기 쉬운 포맷일 경우는 바로 표시고, 그렇지 않으면 첨부파일 형태로 표시.

메일 클라이언트에서 지원해야 할 MIME typetext/plain

Digest

하나 이상의 메시지 포워드시 사용

Message/rfc822

메일 클라이언트에서 지원해야 할 MIME type.

Alternative

동일한 내용을 다른 형식으로 표현 할 때 사용.

Related

상호 연관된 여러 개의 파트로 구성.

HTML 같은 문서에서 이미지 참조 할 때 뒤따르는 파트를 내부에서 참조.

Report

이 메시지 타입은 text/plain message/delivery-status로 나뉨.

Signed

본문과 서명 포함을 뜻함.

Encypted

메시지 타입 암호화

Application/octet-stream와 이를 풀기 위한 제어파트로 구분.

Form-data

파일, 비아스키, 데이터, 이진수 데이터 등을 전송할 때 사용.

 

2.     Content-type : multipart/form-data를 이용한 파일 전송.

장점 : GET POST 보다 더 많은 데이터를 전송할 수 있고, 여러 개의 파일을 한꺼번에 보낼 수 있음.

조건 : multipart/form-data로 전송할 시에는 boundary를 지정해 주어야 함.

      Boundary는 지정된 규칙은 존재하지 않음. 단지 맨 마지막 부분에 [Boundary ]—식으로 하이픈[-]

      두 개 넣어줘야 함.

헤더 구성

è  Content-type: multipart/form-data, boundary=12345 [Boundary ]

바디 구성

è  --12345 [Boundary]

è  Content-Diposition:form-data; name=”abc” [파라미터 이름]

è  0000 [파라미터 값]

è  --12345 [Boundary]

è  Content-Diposition:form-data; name=”attach_file_name” [파라미터 이름]; filename=”c:\test\123.jpg” [파일 경로]

è  Content-type: image/jpeg

è  Content-Transfer-Encoding : binary

è  ….[파일 바이너리]

è  --12345 [Boundary]--

 

Body에서의 각각의 파라미터에서의 Content-Disposition Content-type은 헤더 부분과 바디 부분으로 작게 나눠지게 됨.[헤더부분은 파라미터의 속성을 뜻하고, 바디 부분은 데이터의 유형을 나타냄.]

 

Content-Transfer-EncodingDefault Encoding(7BIT)과 일치하지 않으면 헤더에서 제공되어야 함.

종류 : 7bit, 8bit, binary, quoted-printable, base64, ietf-token, x-token

참조 : [RFC2045 http://www.ietf.org/rfc/rfc2045.txt]

 

Content-disposition : 컨텐트 타입의 옵션이기도 하면서, 실제로 지정된 파일명을 지정함으로써 더 자세한

 파일의 속성을 알려줄 수 있음.

disposition := "Content-Disposition" ":"

                    disposition-type

                    *(";" disposition-parm)

 

     disposition-type := "inline"

                       / "attachment"

                       / extension-token

                       ; values are not case-sensitive

 

     disposition-parm := filename-parm

                       / creation-date-parm

                       / modification-date-parm

                       / read-date-parm

                       / size-parm

                       / parameter

 

     filename-parm := "filename" "=" value

 

     creation-date-parm := "creation-date" "=" quoted-date-time

 

     modification-date-parm := "modification-date" "=" quoted-date-time

 

     read-date-parm := "read-date" "=" quoted-date-time

 

     size-parm := "size" "=" 1*DIGIT

 

     quoted-date-time := quoted-string

                      ; contents MUST be an RFC 822 `date-time'

                      ; numeric timezones (+HHMM or -HHMM) MUST be used

   Inline : 브라우저 인식 파일 확장자를 가진 파일들에 대해서는 웹브라우저 상에서 바로 파일을 자동으로

보여줄 수 있어서 의미상인 멀티파트 메시지를 표현하는데 있음.

그 외의 파일들에 대해서는 파일 다운로드 대화상자가 나타나도록 하는 헤더 속성임.

Attachment : 브라우저 인식 파일 확장자 구분 없이 모든 파일이 파일 다운로드 시 파일 다운로드

대화상자가 나타나도록 하는 헤더 속성 임.

참조 : [RFC2183 http://www.ietf.org/rfc/rfc2183.txt]

 

  


 

3.     Content-type/mixed

헤더 구성

è  Content-type: multipart/form-data, boundary=12345 [Boundary ]

바디 구성

è  --12345 [Boundary]

è  Content-Diposition:form-data; name=”abc” [파라미터 이름]

è  0000 [파라미터 값]

è  --12345 [Boundary]

è  Content-Diposition:form-data; name=”files”

è  Content-type:multipart/mixed; boundary=abcde [Boundary]

è  -- abcde [Boundary]

è  Content-Diposition: attachment; filename=”c:\test\123.jpg” [파일 경로]

è  Content-type: image/jpeg

è  ….[파일 바이너리]

è  -- abcde [Boundary]

è  Content-Diposition: attachment; filename=”c:\test\456.jpg” [파일 경로]

è  Content-type: image/jpeg

è  ….[파일 바이너리]

è  -- abcde [Boundary]--

è  --12345 [Boundary]--

 

# sudo apt-get update

Apache CouchDB 설치
쉽다 그냥 아래와 같이 치면 된다.
sudo aptitude install couchdb

But 그냥 되지 않는 사람도 있다. 아마도 aptitude가 없다는 에러 메시지를 보게 될 것이다.
그렇다면 아래와 같이 해주면 설치가 된다.
sudo apt-get install aptitude
sudo aptitude install couchdb


Apache CouchDB 설정
외부에서 접근하려면 Bind Address를 변경해 주어야 한다.
/etc/couchdb/couch.ini 파일의 BindAddress=127.0.0.1 부분을 아래와 같이 고쳐준다.
BindAddress=0.0.0.0


Apache CouchDB 시작
어떤 경우에는 설치가 끝나고 바로 시작시켜 준다.
하지만 아니라면 아래와 같이 명령어를 날려주면 된다.
sudo couchdb

http://localhost:5984/_utils/ 에서 확인 가능합니다.

+ Recent posts