336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

제가 아직 모르는 게 많다는 걸 또 느낍니다. '복사방지'를 걸어놓고서 복사 후 붙여넣기를 하라고 한참을 설명했으니 쯧쯧...

 

복사방지 해제하였습니다. 불편을 끼쳐드려 죄송합니다.

 

****************

 

 

언제나 여러 고수님들의 주옥같은 게시글과 지식을 스폰지처럼 흡수하여 다른 초수님들에게 지식의 징검다리 역할을 하는 느티나무입니다.

 

7월 23일자로 모토로이 루팅에 대한 사실이 알려지면서 게시판이 들끓고 있는데도 저 역시도 글을 읽으면서 흥분을 감출수가 없네요. 그래서...

 

게시판 글들을 하나씩 소화하면서 루팅을 시도합니다. 동시에 이 글을 써나가면서 저보다 나중에 루팅에 뛰어든 분들에게 조금이라도 도움을 드리고자 합니다.

 

각설하고, 시작해 볼까요?

 

 

 

 I. 루팅이 뭔가요?

 

 

1. 안드로이드폰의 루팅이란

 

   안드로이드는 리눅스 기반으로 사용자의 권한도 리눅스 시스템의 정책을 따릅니다. 리눅스에 있어서 루트라는 것은 유닉스 기반 시스템에서 최고권한을 갖는 사용자를 지칭하는 것으로 루트 권한을 획득하면 일반 사용자에 금지된 조작을 수행하는 것도 가능합니다.

 

   따라서 안드로이드 폰을 루팅할 경우 일반적으로 금지된 조작 - 특히 하드웨어에 직접 접근하는 조작들이 가능해집니다. 대표적인 예로 오버클럭킹을 통한 속도의 향상, 시스템에 설치된 기본어플의 삭제 등... 이외에도 지금까지 상상할 수 없었던 여러가지 일들을 할 수 있습니다.
 
  다만 루팅을 위해서는 부트로더를 Unlock하게 되는데, 이는 추후 커스톰 롬을 설치하는 방법으로까지 발전할 가능성이 있다고 합니다. 이 경우 거의 폰 제작자의 손아귀를 벗어나는 탈주범이 되는 것으로 이해됩니다.

2. 루팅... 위험하지 않나요?
 
   루팅에 대해서 혹시라도 나중에 정상적인 업데이트나 A/S가 불가능하므로 하지 말라고 하시는 분들도 많습니다. 저도 약간 두려운 마음이 듭니다.
 
   그러나 일부 안드로이드폰은 이미 루팅이 가능한데도 불구하고 루팅때문에 큰 문제가 생겼다는 소식은 듣지 못했습니다. 
 
   또한 아래 글을 읽고나니 크게 문제가 될 것도 없다는 생각이 드는데 이건 비전문가인 저의 만용인지도 모르겠습니다. 하여튼 저는 Go!입니다. http://hacker.or.kr/34
 
3. 루팅했다가 다시 제자리로 돌릴 수 있나요?
 
   소위 언루팅하는 방법에 대한 게시글은 없네요. 제가 들은 얘기와 짐작으로는 모토로라 홈페이지가서 다시 펌웨어 업그레이드를 하면 문제가 없을 것 같은데... 고수님들의 조언 바랍니다.
 
4. 루팅을 하다가 벽돌이 되는 경우 폰을 못쓰게 되지는 않나요?
 
  이 부분도 제가 당해보지 않아서 분명히 말씀드릴 수는 없지만 게시판을 찾아보니 RSD lite와 같은 복구프로그램이 있다고 하네요.
 
☆ 이상의 내용은 논란의 여지가 많다고 느낍니다. 제가 잘 모르는 분야라서 자세한 근거와 친절한 설명으로 비전문가인 저에게 한수 가르쳐 주실 고수님들의 건설적인 조언을 기대합니다. (다만, 성의없는 비판은 사양합니다.) 
 
결론적으로 루팅을 하느냐 마느냐의 개개인의 판단에 달린 일입니다. 그러나 저는 무식하고 용감하게 자유를 향하여 돌진하렵니다.

 

 

 

 II. 루팅권한의 획득

 

이 작업의 가장 기초가 되는 Superuser로서의 권한을 획득하는 방법입니다. 이 소스를 만드신 분은 얼마나 많은 날밤을 새웠을까요? 그러나 우리는 이미 파악된 방법을 이용하므로 아주 간단합니다.

 

게시글은 토토로얌님의 http://cafe.naver.com/androiders/177514과 메이스님의 http://cafe.naver.com/androiders/177874을 참조하였습니다. 특히 제가 영어에 자신이 없어서 메이스님의 글을 거의 전적으로 따라했습니다.

 

 

1. 먼저 컴퓨터에 드라이버가 설치되어 있어야 합니다. 혹시 설치되어 있지 않은 분들을 위하여 서비스...


 

1) 모토로라 다운로드센터로 갑니다. 요기 http://www.mymotorola.co.kr/product/PrdDownProduct.aspx?id=0045. 다음 그림이 뜹니다.


2)1번: 모델명 선택에서 Motoroi(xt720)을 선택하고 엔터를 치고

 

3) 2번: 자신의 컴퓨터에 맞는 Usb Driver를 골라 클릭합니다. (저의 경우는 32bit인데 윈7을 쓰시는 분들은 64bit용을 받아야 하는 것 같습니다.)

 

4) 압축파일이 다운되면 알집 등을 이용하여 압축을 풀어줍니다. 32bit를 사용하시는 분은

Motorola_End_User_Driver_Installation_4.5.0 라는 파일이 생길겁니다.(첨부 #1)

 

5) 이 파일을 클릭하면 설치마법사가 설치를 진행... 필요한 부분에서 'I agree'를 선택하면 설치완료

 

*** 주의 : 드라이버를 설치할 때 반드시 폰과 컴퓨터의 연결을 해지한 상태에서 하세요. 요것땜에 문제가 생기는 분들이 많더군요.(제대로 깔렸는지는 내컴퓨터-속성-장치관리자에 들어가서 확인하시면 됩니다.)

 

 

2. 자신의 모토로이로 가서 필요한 준비작업을 합니다.

   1) <메뉴-설정-무선 및 네트워크>로 가서 'Wi-Fi'와 'Bluetooth'의 체크를 해제합니다.

   2) <메뉴-설정-계정 및 동기화>로 가서 '자동 동기화'의 체크를 해제합니다.

   *** 아예 '비행모드'로 설정하면 된다고 어떤분이 올리셨는데 그렇게 하면 위의 사항이 전부 먹통이 되니까 더 간단할 것 같습니다.

   3) <메뉴-설정-응용프로그램-개발>로 가서 'USB 디버깅'에 체크합니다.

   4) 중간에 폰화면이 꺼져서 화면잠금이 되면 잘 안될 수 있으니<메뉴-설정-소리 및 디스플레이>로 가서 화면시간 제한을 넉넉하게(10분 또는 30분) 잡아주세요.

 

 


3. 케이블을 사용하여 컴퓨터와 모토로이를 연결하면 알림창에 '삼지창'이 보입니다. 이것을 끌어내려 'USB연결'을 누르고 4개 중에서 맨 위의 '모토로라 휴대전화 도구'를 선택합니다.

4. 이제 컴퓨터로 갑니다. 첨부 #2 파일을 다운받아서 압축을 풉니다. 이 때 <내컴퓨터-C:\>로 간 후 아래쪽의 '새폴더'를 누른 후 아래 왼쪽 그림처럼 새로운 폴더명에 'adb'라고 입력합니다. 확인을 누르고 진행하면 아래 오른쪽 그림처럼 압축이 완료되며 C:\adb에 8개의 파일이 생성된 것을 볼 수 있습니다.(앗! 나의 실수...새폴더를 만드실 필요 없습니다. C:\에서 곧바로 압축을 풀면 곧바로 'adb'라는 폴더가 생깁니다.)




*** 요 부분부터 메이스님의 가르쳐 주신대로 진행하겠습니다.

 

5. 컴퓨터 왼쪽 아래에 '시작'을 누르고 바로 위의 '실행'을 누르면 아래의 창이 뜨네요. 'cmd'라고 입력하고 확인을 누릅니다. 그러면 그 아래그림처럼 도스창이 떴습니다.(앗! 내가 있는 PC방 이름이...)

 


 


6.도스창에 다음의 명령어를 차례대로 입력하였습니다.

 

   1) 실제로는 다음 글을 복사(Ctrl+C)하여 도스창에 붙여 넣었습니다. 붙여넣는 방법은 도스창에서 바로 위 그림처럼 마우스 오른쪽 클릭하여 붙여넣기를 선택하면 됩니다.(직접 입력하실 분은 띄어쓰기 대/소문자에 유의하세요.)


cd C:\adb
adb push Superuser.apk /sdcard/Superuser.apk
adb push su /sdcard/su
adb push busybox /sdcard/busybox
adb push exploid /sqlite_stmt_journals/exploid
adb shell

cd sqlite_stmt_journals
chmod 755 exploid
./exploid
rootshell

 


 

   2) 암호입력을 요구하면 "secretlol"을 입력하였습니다.

 

   3) 이어서 아래 글을 역시 복사하여 도스창에 붙여 넣었습니다.


cp /sdcard/Superuser.apk /system/app/Superuser.apk
cp /sdcard/su /system/bin/su
cp /sdcard/busybox /system/bin/busybox
chmod 4755 /system/bin/su
chmod 4755 /system/bin/busybox
rm /system/bin/rootshell
exit
exit

 

아래 그림은 위에서부터 입력한 과정 전체를 보여줍니다. 성공했을까요? 기대가 되네요. 


*** 참고로 저는 비밀번호 입력시에 승인거부를 몇 번 당해서 폰을 재부팅 시킨 후에 진행했더니 승인이 떨어지더군요.

 

7. 제대로 일이 진행되었는지 확인해 봅시다.

 

   1) 도스창에 다음을 역시 복사하여 붙여넣기합니다.

 

adb shell

su

 

   2) 모토로이의 화면에, "Superuser Request"라고 해서 root계정에 접근하려 한다는 메시지와 함께 허용할것이냐고 묻는 메시지가 뜨네요. 메이스님의 말씀대로 정말로 신속 과감하게 "Allow"를 눌렀습니다.

 

   3) 메이스님 말씀에 따르면 "Allow를 늦게 누르거나, 루팅이 제대로 되지않았다면 도스창에 Permission Denied 라는 메시지가 뜰 것이고, 성공했다면 도스창에 보이던  $ 모양이었던 커맨드라인 맨 앞 글자가 #로 바뀝니다."라고 했는데 제 화면에는 이렇게 뜨네요.


 

저는 과연 성공한 걸까요? "exitadb: permission denied"라는 걸 보면 실패한 것 같고, 맨 아래의 "#"표시를 보면 성공한 것 같기도 하고...??????????????????????

 

*** 커서 앞부분이 #으로 변했으면 성공한 게 맞는군요. 또한 성공했는지 여부는 폰의 바탕화면으로 가서 Drawer(런처프로의 경우 Dock의 가운데, 순정 홈의 경우 가운데에 있는 ▲ 표시)를 누르면 보이는 여러가지 어플 중에 "Superuser Permissions"라는 어플이 보이면 성공한 것입니다.

 

*** 런처프로보다 순정홈에서 루팅을 하면 더 성공확률이 높다는 의견들도 있네요.  

 

 

 III. 성공여부 확인을 위해 오버클럭킹을 해봅시다.

 

 

일단 폰이 상당히 버벅거린다는 느낌입니다. 하지만 아마 루팅을 하는 과정에 이것 저것 만진 탓으로 생각하고 일단 오버클럭킹을 해보고 제대로 되면 성공한 거겠죠? 

 

   1) 아래 메시아님의 게시물을 참조하여 Milestone Over clock이라는 프로그램을 다운 받았습니다.

       http://cafe.naver.com/androiders/178674

 

   2) 실행을 시키니 "load module"이라는 단추가 보이네요 누룹니다.

 

   3) 앞에서 떴던 "Superuser Request"가 뜨네요. 반사적으로 "Allow"를 누룹니다.

 

   4) 가로로 긴 바가 뜨고 그 위에 "Selected frequency : 550 MHz, 56vsel(Default)라고 뜨네요. 이것이 현재의 상태인가 봅니다. 두근 두근~~~

 

   5) 바에 손을 대고 오른쪽으로 끌어봅니다. 위의 selected frequency의 수치가 변합니다. 600-800-1000-1200... 최대치까지 올려봅니다. 1200MHz, 80vsel까지 높일 수가 있군요. 얼마가 적당할까? 1/3지점의 800MHz, 66vsel에 맞추고 "Apply"를 누룹니다. 응! 아무 변화가 없네...

 

   6) 홈으로 가서 몇 가지 어플을 작동시켜보니 빨라진 느낌이 드네요. 그래도 다시 한번... 이번에는 1000으로 올려봅니다. 그리고 다시 어플을 돌려봅니다. 아 빠릅니다. 성공한 듯합니다.

 

 

*** 얼마나 속도가 빨라졌을까요? Setcpu, Quadrant Standard와 같은 어플을 깔아서 측정이 가능하다고 하는데, 저는 이런 모니터링 어플을 설치하지 않아서측정해 보지는 못했습니다. 대신 건매니아라는 분의 블로그에서 관련 글을 링크하니 참고하세요. http://www.gunmania.co.cc/tc/157

 

*** 어느정도까지 오버클럭킹을 하는 것이 적당할까요? 이 문제에 대해서는 eveismine님의 다음 조언을 참고하심이 현명하실 것으로 생각합니다. http://cafe.naver.com/androiders/180815 

 

 

 

 IV. 기본어플을 삭제해봅시다.

 

후후... 제가 의심이 좀 많은가요? 오버클럭킹에 따른 속도향상은 속도측정 어플을 안 깔아놔서 숫자로 확인할 수가 없네요. 그래서 이번에는 평소에 눈에 가시같았던 기본 어플 중 하나를 지워보겠습니다. 이건 확실하게 눈으로 확인할 수 있겠죠?

걸리기만 해봐라. 확 지워버릴테니 하고 드로어를 뒤지다가... 아참 나는 초보지...하고 그냥 카페의 모토로E님이 보여주신대로 YouTube를 선택했습니다. 모토로E님의 게시글은 아래에 있습니다.

http://cafe.naver.com/androiders/179617

 

1) 일단 케이블로 폰과 컴퓨터를 연결하였습니다. '모토로라 휴대전화 도구'를 선택합니다.

 

2) 좀 전에 작업하느라 C:\에 adb폴더 만들어 두었었죠. 곧바로 <시작-실행>을 눌러 'cmd'를 입력합니다.

 

3) 다음은 아래 명령어를 복사하여 붙여 도스창에 붙여 넣습니다.(마우스 오른쪽 사용하는 것 아시죠?) 

 

cd c:\adb

adb shell

su

mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

cd /system/app

ls

 

4) 이런 창이 뜹니다. 내 폰에 깔린 모든 어플인데... 정말 많군요.


 

5) 주욱~ 내려가다 보니 드디어 찾았습니다. YouTube.apk! 보이시죠?


 

   6) 그냥 화악~ 지워버리고 싶지만 만일의 경우를 대비하여 백업부터 합니다(모토로E님! 이 개념이 맞나요?)

       *** 사실 sdcard/backups/apps라는 폴더에 가보면 이미 YouTube가 백업되어 있습니다. 제 생각에 별도의 백업이 필요할까 싶긴 하지만 배우는 입장에서 그대로 따라합니다.(backup이 아니라 backups입니다.) 

 

   - 먼저 폰으로 가서 파일관리자(전 Astro)를 열고 sdcard/backups/apps로 갑니다.

   - <메뉴-새폴더-디렉토리>를 선택하고 폴더이름에 'systemapp'라고 입력한 후 확인하면 폴더가 만들어졌네요.

   - 제가 지우고 싶은 파일은 폰 내장메모리의 /system/app라는 폴더에 들어있습니다. 이 녀석을 조금 전에 만든 SD카드의 폴더로 백업을 합니다. 아래 명령어를 컴퓨터의 도스창에 입력하고 엔터...(모토로E님 명령어에 's'를 더 붙였습니다.)

 

cp /system/app/YouTube.apk /sdcard/backups/systemapp/YouTube.apk

 

 - 폰으로 가서 새로 만든 폴더를 살펴보니 YouTube가 들어와 있군요. 일단 백업 성공

 

   7) 이제 보기 싫은 녀석을 없애버립시다. 아래 명령어를 입력합니다.

 

rm YouTube.apk

 

   8) 이제 확인사살... 'ls'라고 치면 아까 앞에서처럼 모든 어플 목록이 뜹니다. 그 중에 살펴보면 유투브가 없을 겁니다. 또는 아래 명령어를 입력하시면 "No such file or directory"라고 뜰겁니다. 성공이군요.

 

ls YouTube.apk

 

  9) 그래도 의심많은 저는 기어이 다시한번 총을 쏩니다.

 

   - 먼저 컴퓨터의 도스창에 reboot를 칩니다. 저절로 재부팅이 됩니다.

   - 어플들이 모여있는 Drawer로 갑니다. 아무리 찾아도 유투브는 없네요. 사망하셨습니다. 명복을 빕니다.

 


<<< 기본어플 삭제에 관한 몇 가지 팁들>>>

 

*** 1. 어떤 어플들은 지워도 문제가 없는지, 또 어떤 어플들은 지우면 안되는지에 대해서는 Kyuuu님이 올려주신 http://cafe.naver.com/androiders/179997 게시물을 참고하셔서, 위 3)번 명령어를 주고나서 지우고 싶은 어플 이름을 정확히 적어둔 후에 위 7)번과정의 rm(한칸 띄고)어플이름을 입력 후 엔터치면 싹 지워집니다. 만일을 위하여 백업을 해 두시려면 위 6)번 과정을 미리 거치시면 되구요.

 

*** 2. 기본어플을 지우는 더 쉬운 방법도 있습니다. 바로 Root Explorer라는 어플을 사용하는 방법인데(유료어플로 2.55달러... 카페 검색하면 나오는데 마치 Astro와 같은 필수어플입니다.) 이것을 작동시킨 후 기본어플이 깔려있는 /system/app이라는 폴더로 가서 오른쪽 위에 보이는 'Mount r/o'를 눌러 'Mount r/w'로 변경 후(아마도 read only, read/write를 의미하는 듯...) 해당 파일을 길게 누르고 'Delete' 할 수 있습니다.

 

*** 3. 또한 내장메모리 확보 목적이 아니라면 해당파일을 길게 누른 상태에서 'Rename'을 선택하여 이름을 바꾸어도 Drawer에서는 없어집니다.(파일확장자를.bak로 바꾸어서 백업파일로 활용하는 기가막힌 방법에 대해서 iruka41님께서 http://cafe.naver.com/androiders/182267에서 제안해 주셨습니다.)

 

*** 4. 이왕 시작한 김에 한가지 더... 해당파일을 백업하려면 지우기 전에 해당 파일을 길게 눌러 'Copy'한 후 백업할 위치(예, sdcard/backups/systemapp)로 이동하여 아래쪽에 있는 'paste'를 누르면 되구요.

 

  

 

 V. 루팅후기

 

여러 고수님들의 도움으로 루팅에 성공했습니다. 트로로얌님, 메이스님,  메시아님, 모토로E님 진심으로 감사드립니다.

 

제가 글을 쓰다보니 다른 분들의 지식을 훔친듯한 느낌이 들어서 약간 찜찜합니다. 제가 이 글을 쓴 목적은 초보인 제가 초보분들에게는 더 쉽게 설명이 가능할 것 같아서 저도 루팅을 시도 해 볼겸 글을 작성하게 된 것이니 넓은 마음으로 이해하여 주시길 바랍니다.

 

혹시라도 본인의 글을 제가 잘못 인용하였다고 생각되시면 즉시 지적하여 주십시오. 게시물 자삭 등 모든 필요한 조치를 취하겠습니다.

 

수고하세요. 끝.


[출처] 네이버 안드로이드 스마트폰 공식 사용자모임 카페의 느티나무 님의 글 입니다.

블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

루팅시 발생할 수 있는 제(벽돌... A/S불가)에 대해서는 글쓴이는 책임지지 않습니다!!!

누구든 얘기하지만 자기가 책임질수 있으면 하는겁니다. 저한테 뭐라 탓하지 마세요.

 

이 글 설명에 앞서 출처는 http://www.androidpub.com/phone_sirius/578769 GOTOFBI님 게시글입니다. 제가 알아낸것 아닙니다.

또한 카페의 M16요원님께서도 많은 정보 주셨습니다. 감사합니다.

 

 

 

가장 기초!!! 컴퓨터에 Usb 드라이버는 깔려있어야 하고, 연결 해 놓으시는것 아시죠?

 

두번째!! 핸드폰의 설정 - 응용프로그램 - 개발 에서 USB 디버깅에 체크해주시고

 

세번째!! 핸드폰의 화면 조명 설정을 30분으로 해주세요!!!(제 기분상 이렇게 하는게 편하겟더라구요 막 뜨는거 없나 살펴볼라고)

 

여기까지 준비가 되셨으면 먼저 제가 첨부한 압축파일을 다운받아 c:드라이브에 저장합니다.

(C드라이브에 들어가면 adb폴더가 있어야 합니다. 물론 다른곳도 괜찮지만 편의를 위해 저는 이곳을 정하겠습니다.)

 

그리고 실행 - cmd를 치시고 C드라이브 adb 폴더안에 들어갑니다.

 

이때, 하위 폴더로 가고자 할때는 cd.. 이 명령어를 치고 엔터를 치다보면

 

C드라이브로 가게됩니다.

 

이때 cd adb 이 명령어를 치시면 adb폴더로 들어가게되는데, 여기서부터 아래 명령어를 차례대로 써주시면 됩니다.

 

한줄씩 작성하시고, 반응이 없을때 써주세요. 그냥 주구장창 타자치기도 힘들지만 그렇게 하면 안됩니다.

 

 

 

adb push Superuser.apk /sdcard/Superuser.apk


adb push su /sdcard/su


adb push busybox /sdcard/busybox


adb push exploid /sqlite_stmt_journals/exploid

 

adb push busybox /sqlite_stmt_journals/busybox

 

adb shell

 

(여기서부터 $가 나옵니다.)


cd sqlite_stmt_journals


chmod 755 exploid


chmod 755 busybox

 

다음단계를 하기전에 설정에서 wifi를 바로 켜고/끌 수 있는상태로 핸드폰을 세팅해놓음

 

./exploid

 

위 단계를 실행 하자마자 wifi를 켜기/끄기 실행(켜진걸 꺼따가 다시 켜시거나, 꺼진걸 켰다가 다시 끄시면 됩니다.

 

rootshell

 

secretlol

 

(여기서부터 #이 나옵니다)

 

./busybox cp /sdcard/Superuser.apk /system/app/Superuser.apk


./busybox cp /sdcard/su /system/bin/su


./busybox cp /sdcard/busybox /system/bin/busybox


chmod 4755 /system/bin/su


chmod 4755 /system/bin/busybox


rm /system/bin/rootshell

 

(다음 중요합니다)

 

su

 

이렇게 쳤을때 #이 나오면 루팅 성공입니다.

 

 

제가 캡쳐한 그림을 보시고 고대로 따라하셔도 됩니다. 여기서 exit명령은 나가겠다는 뜻입니다.

 

그리고 마지막에보시면 adb shell 명령을 다시 주었는데 이는 제대로 되었는지 확인해 보려고 한 겁니다.

 

마찬가지고 su명령을 내리니 #이 뜨게됩니다. 성공이지요.

 

근데 인터넷 검색해보니깐 안되는 사람들도 있는것 같습니다. 그부분에대해서는 잘 모르겠습니다.

 

이 방법만 잘 따라온다면 별 문제 없을거라 예측됩니다.

 

루팅이 되었는지 확방법은 많습니다. 어플 목록이 있는곳에 Superuser Permissions라는 어플이 깔려있을 것이고

 

제가 확인한 방법으로는 Root Explorer 설치,

 

Quick App Clean Cache에서 Clear all caches 버튼이 있는데 이 버튼이 root권한이 없으면 실행이 안됬었는데 실행되는군요.

 

하는 중간에 핸드폰에 llow 무슨 창이 뜰수잇는데 그때 allow버튼을 눌러주셔야 합니다.

 

여기까지가 루트권한을 얻는 방법이고 뭐 이후에 오버클럭이나 skaf삭제는 취향것 하시면 될것 같습니다.

 

인터넷 검색이 짱입니다요. 많이 있으니까 찾아보시길 바랍니다.

 

아마 많은 분들께서 하신다면 그에 따른 유용한 방법들이 나오겠지요!!

 

이상입니다. 수고하셨습니다.

 

 

 

 

아,,, 그리고 루팅 후 펌업하면 복구됩니다. 확인했습니다.(장담은 아닙니다)

블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안드로이드의 경우 리눅스 운영체제를 기반으로 만들어졌기 때문에, 여타 오픈소스 운영체제와 비슷하게,

최고운영자, 슈퍼유저, 일반유저등등으로 계정이 나뉩니다.

ex)윈도우 키시면 administrator(최고운영자), 일반사용자 등으로 나뉘는것과 같습니다.

 

시리우스의 경우 최고운영자가(이하 root) '일반유저는 시스템설정, 기계변경등을 할 수 없도록' 설정을 해 놓은 상태이고.

지금 시리우스를 만지시는 여러분들은 '일반유저'입니다.

 

루팅(rooting)이라 함은 폰 출시될 때 정해진 '일반유저'의 권한에서 root의 권한으로 갈아타는 과정을 말하는것이지요.

아스트로 등으로 sd카드폴더에서 상위폴더로 한번 가보면, sys폴더, system폴더 등등 여러가지 폴더가 있는데

이러한 폴더들을 수정하려치면 '권한이 없습니다' 라고 나오실겁니다.

이러한 시스템폴더 혹은 디바이스(하드웨어 드라이브등등)은 'root'만 만질 수 있게 설정이 되어 있기때문에

일반유저로 시리우스를 사용하는 유저들은 손을댈 수 없는것이지요.

 

root를 얻게됨으로서 발생하는 여러 장점과 단점들 중 몇가지씩만 열거해보겠습니다.

 


장점 1. 순정어플(지메일, 오브젯, 캘린더, 모닝콜등등)을 삭제할 수 있다.

             - 시리우스 개봉하면 기본적으로 설치되있는 벨소리, 모닝콜, 문자알림음, 프로그램등등을 삭제할 수 있습니다.

             - 그에따라 기본용량을 확보할 수 있고 무게를 줄일 수 있지요.

 

         2. 직접적으로 시작프로그램, 램 상주프로그램등을 관리할 수 있다.

             - 윈도우즈를 부팅할 때 자동으로 실행되는 수많은 프로그램, 서비스들처럼 시리우스도 부팅 시

             - 같이 실행되는 프로그램들이 많은데요, 이러한 것들을 사용자 임의로 편집할 수 있으며, 백그라운드에서

             - 실행되는 보이지 않는 프로그램들을 제어할 수 있습니다.

 

          3. 프로세스에 직접적으로 관여해 오버클록이 가능하다.

             - PC와 비슷한원리로 시리우스의 CPU를 베터리 전압에 맞춰 오버클록함을써 폰의 속도향상을 가능케합니다.

 

          4. 윈도우즈의 레지스트리 변경과같은 세부사항까지 직접 사용자의 임의로 변경 가능하다.

             - 시리우스 켤 때 나오는 동영상, 시작음, 사진촬영 셔터음등을 포함해 모든것들에 대해 수정이 가능합니다.

 

          5. 베터리 소모량을 대량 축소시킬 수 있다.

             - 램에 상주하는 프로세서들을 직접 죽임으로서 폰이 놀고있을 때 소모되는 베터리를 최적화 할 수 있습니당.

             - 표준형(작은배터리) 베터리로 이틀정도 대기가능하네용.

 


단점 : 1. 차후 AS불가능

             - 출시때 정해진 사용자의 이용권한에 있어 직접적으로 월권을 하게되니 차후AS에있어 

             - 무상수리가 불가능(기계적손상은제외)

 

         2.  각종악성소프트웨에 노출되거나 시스템이 먹통이 될 수 있는등 여러가지 위험요소 존재

             - 이건뭐...

 

 

단점이 적어보이긴하나, 첫번째 단점으로 적은 내용의 포스만으로도 제가 열거한 몇안되는 장점을 누그러뜨릴만하네요;


루팅을통해 속도향상및 배터리지속시간 연장을직접체험한 한 사용자로서 주관적의견을빌어 한마디덛붙이자면 

상당히만족스러우며,루팅방법역시 향후 프로요업데이트이후에도 지속적으로발달될걸로 보이네요. 

지금역시 루팅후 관리자권한으로 잘못된 설정방법으로인해 폰이 망가졌을때(소위 벽돌이되었을 때)의 대처법이 

나오고있는점등을 비춰볼때 사용자가 선택의기로에서 충분히 고민할만하다고 생각합니다.

이상 루티에 관한 장단점 및 제 주관적 의견이었으며, 이상열거한 내용에대해 확실히 이해가되신분 중

루팅을 하실 의향이있으신분이 있으시다면, 자세한 방법과 루트의 권한으로 사용가능한 여러 어플들을 함께 올리겠습니당~


블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
일반적으로 어플리케이션에서 자료를 저장할 때 데이터베이스를 주로 사용합니다. 그런데, 한 어플리케이션 내에 저장되어 있는 데이터베이스에는 해당 어플리케이션 외에 다른 어플리케이션이 접근하는 것이 불가능합니다. 그렇다면, 다른 어플리케이션의 데이터에 접근할 수 있는 방법은 아예 없는 것일까요? 그렇지 않습니다. 만약 이렇게 데이터베이스 공유가 "완전히" 불가능할 경우 엄청난 재앙(?)이 발생합니다.

다른 어플리케이션에서 특정 어플리케이션의 데이터베이스에 직접 접근하는 것은 불가능합니다.


주소록 어플리케이션은 주소록 데이터를 데이터베이스에 저장하게 되는데, 이 주소록 데이터베이스에 주소록 어플리케이션만 접근 가능하고 다른 어플리케이션에서는 접근이 불가능하다면 주소록 정보를 이용하여 다른 서비스를 연동하는 것은 불가능하겠지요? 자칭 "경계가 없는 어플리케이션"을 추구하고 있는 안드로이드에서 기본적인 데이터 공유도 되지 않는다면 그건 말도 안되는 일이겠지요..

이 문제를 종합해보자면, 외부 어플리케이션이 마음대로 내 데이터베이스에 접근하지는 못하게 함과 동시에 내가 가진 데이터베이스 중 원하는 것들만 공유할 수 있도록 해주는 수단이 필요합니다. 안드로이드에서는 이런 역할을 컨텐트 프로바이더(Content Provider)라는 녀석이 해주게 됩니다.

컨텐트 프로바이더는 어플리케이션 내의 데이터베이스를 다른 어플리케이션이 사용할 수 있는 "통로"를 제공해줍니다. 이 과정에서 컨텐트 프로바이더를 통해 외부 어플리케이션이 접근할 수 있는 범위를 정해줄 수 있어, "공유할 것만 공유하는" 것이 가능합니다.

컨텐트 프로바이더와 컨텐트 리졸버

컨텐트 프로바이더를 사용하여 안드로이드 시스템의 각종 설정값이나 SD카드 내의 미디어 등에 접근하는 것이 가능합니다. 컨텐트 프로바이더에 접근하기 위해서는 해당 컨텐트 프로바이더의 주소가 필요합니다. 

컨텐트 프로바이더에 접근할 때는 컨텐트 프로바이더의 주소와 컨텐트 리졸버(Content Resolver)가 필요합니다. 컨텐트 리졸버는 컨텐트 프로바이더의 주소를 통해 해당 컨텐트 프로바이더에 접근하여 컨텐트 프로바이더의 데이터에 접근할 수 있도록 해주는 역할을 합니다.

컨텐트 리졸버는 액티비티 클래스 내의 getContentResolver()메소드를 통해 인스턴스를 받아올 수 있습니다. 일단 컨텐트 리졸버의 인스턴스를 받아온 후에는 query, insert 등의 메소드을 통해 데이터를 받거나 입력, 수정하고 싶은 컨텐트 프로바이더의 URI(Uniform Resource Identifier)를 넘겨주면 해당 컨텐트 프로바이더에 접근하여 요청한 작업을 수행할 수 있습니다. 

컨텐트 리졸버 및 컨텐트 프로바이더를 통한 데이터베이스 접근



컨텐트 프로바이더의 주소 구성

컨텐트 프로바이더의 주소는 컨텐트 프로바이더를 생성할 때 지정하며, URI(Uniform Resource Identifier) 형식으로 구성되어 있습니다. URI라는 단어 자체가 좀 생소할지도 모르겠습니다. 하지만 어렵게 생각할 것은 없습니다. URI는 우리가 인터넷 상의 자원의 주소를 표시할 때 쓰는 URL(Uniform Resource Identifier)의 상위 개념으로, 어떠한 자원의 위치를 표기하기 위한 형식입니다.

컨텐트 프로바이더의 주소(URI)는 일반적으로 아래와 같은 모습을 하고 있습니다.

content://AUTHORITY/PATH

인터넷 주소가 http:// 로 시작하는 것처럼, 컨텐트 프로바이더는 content://로 시작하는 주소를 가지고 있습니다. URI에서 http, content 등을 스키마(Scheme)라 합니다.

다음으로, AUTHORITY 부분입니다. AUTHORITY는 컨텐트 프로바이더의 고유 주소로, 뒤에 붙에 될 PATH와 함께 다른 어플리케이션에서 해당 컨텐트 프로바이더에 접근하기 위한 주소를 구성합니다. AUTHORITY는 다른 어플리케이션과 중복되면 안되므로, 일반적으로 자바 패키지 이름을  짓는 방식을 따라 이름을 지어줍니다. (예 : com.androidhuman.example) 인터넷 주소(URL)으로 치자면 사이트의 주소 (예:www.google.com) 부분이라 보시면 됩니다.

마지막으로 PATH(경로)는 즉 해당 프로바이더에서 제공하는 구체적인 데이터의 위치를 나타냅니다. 인터넷 주소로 치자면 세부 주소 (예: www.google.com/phone에서 phone 부분)라 할 수 있습니다.


컨텐트 프로바이더에서 제공하는 자료의 유형 구분

컨텐트 리졸버와 컨텐트 프로바이더의 주소를 통해 컨텐트 프로바이더에서 제공받는 데이터는 하나의 데이터일 수도 있고, 어떤 유형의 데이터 목록일 수도 있습니다. 이는 일반적으로 컨텐트 프로바이더의 주소를 통해 구분할 수 있지만, 좀 더 명확하게 해주기 위해 타입(MIME Type)을 지정해줍니다.

만약, 아래와 같은 컨텐트 프로바이더의 주소가 있다고 가정해봅시다.

contents://com.androidhuman.phoneprovider/phones

위의 컨텐트 프로바이더는 휴대폰 정보를 제공하는 컨텐트 프로바이더라 가정해보겠습니다. 위의 컨텐트 프로바이더의 AUTHORITY는 com.androidhuman.provider이고, Path는 phones 임을 알 수 있습니다. 위와 같은 형태의 주소는 일반적으로 어떤 항목에 해당하는 모든 데이터를 반환합니다. 위와 같은 경우는 모든 휴대폰 번호를 반환할 것이라 예측할 수 있죠.

Path는 컨텐트 프로바이더에 따라 여러 구조를 가질 수 있습니다. 아래와 같이 제조사별 휴대폰 목록을 제공하는 컨텐트 프로바이더가 있을 수도 있지요.

contents://com.androidhuman.phoneprovider/phones/lg
contents://com.androidhuman.phoneprovider/phones/samsung
contents://com.androidhuman.phoneprovider/phones/htc
contents://com.androidhuman.phoneprovider/phones/motorola

이런 식으로 "여러 개의 데이터"를 반환하는 컨텐트 프로바이더 주소(URI)는 타입으로 아래와 같은 형식을 갖습니다.

vnd.android.cursor.dir/vnd._CUSTOM_NAME_

위의 휴대폰 정보를 제공하는 컨텐트 프로바이더에서 휴대폰 목록을 제공하는 URI의 타임은 아래와 같이 지정할 수 있겠죠.

vnd.android.cursor.dir/vnd.androidhuman.phone

위와 같이 여러 개의 자료가 아닌, 딱 하나의 자료를 가리키는 컨텐트 프로바이더의 주소도 있습니다. 일반적으로 아래와 같은 형태를 하고 있지요.

contents://com.androidhuman.phoneprovider/phones/lg/1
contents://com.androidhuman.phoneprovider/phones/samsung/3

하나의 데이터를 가리키는 컨텐트 프로바이더의 URI는 위와 같이 뒤에 해당 데이터의 ID를 붙인 형태를 띕니다. 이러한 컨텐트 프로바이더 URI는 타입으로 아래와 같은 형태를 갖습니다.

vnd.android.cursor.item/vnd._CUSTOM_NAME

위의 컨텐트 프로바이더에서 휴대폰 하나를 가리키는 URI의 타입은 아래와 같이 표현할 수 있겠죠.

vnd.android.cursor.item/vnd.androidhuman.phone


컨텐트 프로바이더 URI 정리

컨텐트 프로바이더 URI에 대해 다시 한번 정리해보도록 합시다.



1. 컨텐트 프로바이더에 의해 제공되는 데이터임을 알립니다. 이 부분은 변하지 않습니다.
2. 컨텐트 프로바이더의 authority부분입니다. 각 컨텐트 프로바이더의 고유 이름입니다.
3. 컨텐트 프로바이더의 Path 부분이며, 어떤 데이터를 반환할지를 이 부분을 통해 지정합니다. 
4. 3번 부분의 Path 하위의 데이터 중 하나를 가리키는 것으로, 해당 데이터의 ID를 나타냅니다.


컨텐트 프로바이더는 일반적으로 아래와 같은 구조를 가집니다.

  • 어플리케이션의 컨텐트 프로바이더의 고유 주소 (AUTHORITY)
  • URI 필터링을 위한 UriMatcher객체 및 컨텐트 프로바이더가 처리할 수 있는 URI들
  • URI에 따른 Type을 반환하는 메소드
  • insert, update, delete, query 메소드
  • 어플리케이션 데이터베이스 정의부

[출처] http://androidhuman.tistory.com/279

블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
요즘 Motorola, LG 에서도 안드로이드 폰을 국내에서 출시하며,
IPhone 대항마의 역할로써 안드로이드 폰이 어느 정도 자리를 잡아가고 있는 것 같습니다.
TV만 보고 있어도 하루에도 여러 번씩 SKT 안드로이드 폰 광고를 볼 수도 있기도 하구요.
때문에 오늘은 안드로이드에 대한 재밌는 상식 하나를 소개할까 합니다.

아시는 분도 계시겠지만, Android 플랫폼의 버젼명은 디저트 종류 음식 이름을 애칭으로 가지고 있습니다.
최초 버젼인 1.5 는 Cupcake(컵케익), 1.6 은 Donut(도넛), 최근의 2.0 버젼이후 2.1까지는 Eclair(이클레어) 라고 불리고 있죠.
2010년 5월경 출시될 다음버젼 이름은 Froyo(프로요 : Frozen Yogurt)가 확정된 상태입니다.


Froyo 의 다음 버젼은 Gingerbread(진저브레드)라는 것도 거의 확정인 상태 이지요.

 

딱 보고 감이 오시나요?

Cupcake
Donut
Eclair
Froyo
Gingerbread

Cupcake 을 시작으로 Android Version 닉네임의 제일 첫 글자는 알파벳 순서로 증가하고 있습니다.
아마 Gingerbread 다음 버젼은 H 로 시작하는 디저트 이름이 닉네임으로 붙게 되겠지요? H 로 시작하는 디저트가 뭐가 있을까요? 
H 로 시작하는 음식 이름도 Hotdog, Hamburger 를 제외하면 딱히 생각이 안나는 군요... ^^
여러분들이 한 번 맞춰 보도록 하세요~

아래는 구글의 PM 인 Ryan Gibson 이 라디오 방송에서 얘기한 Andorid Version 에 대한 이야기 입니다.

Q: How did Android versions come to be named after desserts?
A: We wanted an alphabetical naming scheme that would also provide a fun theme for our small release celebrations.  We considered predatory animals, and stomach viruses but they are a lot less fun to have at a party.

Q: What were the "A" and "B" desserts? Apple crumb? Babka?
A: There actually were no "A" and "B" software updates named after a dessert. It just started with Cupcake.

Q: Who determines the dessert names?
A: It's a collaborative effort from the entire team, company, spouses, Google chefs, random passer-bys and the Android development community all throwing out ideas and recipes.  My office door is festooned with suggestions for the future.  It is very motivational to look up from work and see pictures of tasty treats.

Q: Are the desserts actually served at the Google cafeteria at any point?
A: Absolutely!

Q: Have you determined any desserts past "F"?
A: The discussion is as heated as an oven full of cupcakes  We would like to have a Gingerbread House, but that depends a lot on what happens with the housing market by then. 

 

※ 일반적으로 Phone의 버젼명에 의미 없는 숫자나 날짜를 기반으로 한 버젼명을 사용하는데요. 
힘든 개발 환경속에서의 이런 사소한 잔 재미를 찾고 만들어 실행하는 것이 구글의 창의적인 결과물의 원동력의 일부라고 봐도 되겠지요??

※ 이런식의 작명법은 Ubuntu 의 Project가 원조라고 하네요.



블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Android 에서 EditText 에 문자를 입력하다보면 특정 키에 대한 처리를 하고싶을 때가 있다.
예를 들면,

아이디와 비밀번호 등을 입력한뒤 Enter 키의 입력시 한줄 내려쓰가 된다
이것을 처리하는 코드를 간단하게 작성해봤다.


onKey 이벤트를 catch하여 입력된 keyCodeevent.KEYCODE를 비교하여 해당 key입력 시 특정 처리를 할수 있다.

return true; 대신 구현하고싶은 코드를 작성하면 된다.
블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
계속 속썩여온 비율 문제...
아이폰은 가로 세로 사이즈라도 고정되어 있지만..
안드롱은 지 맘대로니..어떻게 해서든 비율 문제를 풀어야 했다.
계속 끙끙거리다 드디어 정리됨 -_-;;

리스트의 한 로우는 2줄로 구성되어 있다.
첫번째 줄은 3칸, 두번째 줄은 1칸이고 첫번째 줄으니 비율은 1:1:2 이다.
이 에 대한 코드는 다음과 같다.

 
 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        
        <TextView android:id="@+id/wordlist_row_level"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#66CCFF"
            android:textSize="20px"            
            android:gravity="center"/>
    
        <TextView android:id="@+id/wordlist_row_word"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#FF9900"
            android:textSize="20px"/>
            
        <TextView android:id="@+id/wordlist_row_date"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:background="#FFCCFF"
            android:textSize="20px"
            android:gravity="center"/>            
    </LinearLayout>
        
    <TextView android:id="@+id/wordlist_row_meaning"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#00FF00"
        android:textSize="20px"
        android:gravity="center"/>        
</LinearLayout>

android:layout_width를 fill_parent나 wrap_content로 주면 안된다.
반드시 "0dp" 로 정해주자.
그리고 비율은 android:layout_weight 로 정해주면 된다.

[출처] [Android] layout 비율|작성자 로사


블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    프로젝트 export(내보내기)

     

  1. 내보내고자 하는 프로젝트 package에서 마우스오른쪽 버튼 export 클릭

  2. General > Archive File 클릭

  3. 해당 프로젝트를 체크하고 To archive file Borwse 버튼 클릭

  4. 내보내기 폴더위치에서 파일명 입력 저장

  5. Finish 완료

  6. 해당 경로에 내보낸 파일 확인 pullpase.zip

  7. 프로젝트 import(가져오기)


    1.가져오고자하는 export(내보내기)파일 PullPase.zip


    2.File > import 클릭


    3.General > Existing Projects into Workspace 클릭


    4.Select archive file Browse 버튼을 통해 해당 프로젝트.zip 파일 열기


    5.Finish 완료


    6.왼쪽 Package 리스트에 해당 프로젝트 PullParser 추가된걸 확인할수 있다.


       

     

블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

http://java.sun.com
: 여긴 꼭 가셔야 합니다.. 자바를 하신다면... 자주 들르세요.

http://www.javastudy.co.kr : 자바 문서,강좌,QnA,등.. 총 집합

http://www.javaservice.net : 이원영님(자바의 현자) 께서 운영하시는 말이 필요 없는 사이트

http://www.javaland.co.kr : 위 2사이트와 쟁쟁하며, 정말 많은 QnA가 있습니다.

http://www.javanuri.com : 강좌와, 자바의 포탈로 보여지는 훌륭한 사이트

http://www.jspschool.com : JSP를 배우고 싶다면 여기를 꼭 가보세요

http://www.j2eeschool.com : J2EE 관련 유일 무이한 내용

http://50001.com : 정말 오만가지가 다 있는 자바 전문 사이트

http://www.mobilejava.co.kr : 모바일 프로그래밍은 여기서 시작

http://www.pro-java.com : 자격증을 준비하신다면...

http://www.forcert.com/sun/sun.html : 자격증을 취득하고 싶다면..

[출처] http://dptablo.tistory.com/
블로그 이미지

By훈트

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

열거타입 (enum)

 

열거타입도 하나의 클래스 처럼 인식한다.

'enum' 키워드를 삽입해야 하며, String 타입의 필드를 선언해야 한다.

이 때 final private 키워드를 붙여서 선언해야 한다.

열거 타입은 클래스 형식과 유사하다.

다만, 열거 타입의 열거 값은 상수 필드로 만들어 진다. (열거 값은 대문자로 선언)

또한, 열거타입은 클래스처럼 객체 생성이 불가능하다.



 enum Season
{
 SPRING("봄"), SUMMER("여름"), FALL("가을"), WINTER("겨울");
 final private String name;

 Season(String part) {
  name = part;
 }

 String returnName() {                         // name 변수가 private이기 때문에 리턴시켜야 함
  return name;
 }
}

  

class Test
{
 public static void main(String ar[]) {
  show(Season.SPRING);
  show(Season.WINTER);
 }

 static void show(Season season) {
  System.out.println(season.returnName());
 }
}

    

블로그 이미지

By훈트

,