크게 작게 인쇄

[테마/커스텀]커스텀셋팅 Ver2 타기기 이식 방법

- 기본적인 정보( 제작 전 필독사항 ) -

1. 커스텀셋팅은 진저브레드 오픈소스를 참고하였고,

제조기기는 현재 가지고 있는 갤럭시 종류를 기본으로 하여 제작하였습니다.

만약 제조사가 오픈된 소스에서 변경을 가하였다면 적용이 불가능 한 부분이 있을 수 있습니다.

※ 삼성 갤럭시 종류는 거의 다 된다고 보시며 됩니다.

2. 적용버전 : framework version 1.1.1 [ 버전 변경시 새로 작업해주세요. ]

3. 다른건 수정 안하도 상관없지만 framework.odex는 꼭 포함되어 있어야 다른것들이 정상적으로 작동합니다.

4. 내용 중 이해가 안가는 부분은 댓글로 질문해주세요.

5. 배포 전에 꼭 저에게 말씀하고 배포해주시길 부탁드립니다. ^^


 


제작전 기본적으로 습득하셔야 할 스킬 :

(1) odex 파일이 있으신 분들 : odex ↔ deodex 방법

§ 준비물

1. Xultimate ( 다운받으러 가기 ) [ 아무곳에 설치 ]

2. 적용툴 ( tools.zip ) [ c:adb 내에 설치 ]

3. 자바 ( 다운로드 사이트 )

4. busybox

 

2번의 파일중 dexopt-wrapper 는 폰의 /system/framework 폴더에 넣어주세요.

adb shell에서 chmod 777 /system/framework/dexopt-wrapper 해주시면 됩니다.

 


§ 시스템 상태 변경

 

Step1. CMD창에서 adb shell을 입력하여 폰 내부로 진입해주세요.

Step2. shell 입력상태에서 아래 명령어를 입력해주세요.

busybox mount -o remount,rw /

busybox mount -o remount,rw /system

End.... 시스템을 사용할수 있는 상태로 변경되어 있습니다.


 

 

§ odex -> Deodex

Step1. 준비물 1번 폴더에 들어있는 Main.exe 파일을 실행하세요.

Step2. 실행후 <1>, <2>, <3>, <4> 를 순서대로 눌러주세요.

End.... 모두 완료 후 파일은 done_app 혹은 done_frame 에 Deodex화되어 있습니다.

 

§ smali 파일 추출방법

Step1. Deodex화 시켯으면 done_app 혹은 done_frame 폴더안에 apk, jar 파일들이 보일것입니다.

이 파일을 압축프로그램을 이용하여 오픈하세요.

오픈시키면 classes.dex 라는 파일이 보일것입니다.

이 파일을 c:adb 폴더안에 넣어주세요.

Step2. CMD 창을 이용하여 c:adb 폴더로 이동하세요.

Step3. 아래 명령어를 입력해주세요.

java -jar baksmali.jar -o [classes.dex파일을 압축해제시킬 임의의 폴더명]classes.dex

다시 입력이 가능해질때까지 기다려주세요.

Step4. [classes.dex파일을 압축해제시킬 임의의 폴더명안에 압축해제후 나오는 파일들이 쭉 있습니다.

End..... smali 파일 수정하시면 됩니다.

 

§ Deodex -> odex

Step1. c:adb 폴더의 classes.dex 파일을 삭제해주세요.

Step2. [classes.dex파일을 압축해제시킬 임의의 폴더명] 안의 파일 수정이 완료되었다면

CMD창에 아래 명령어를 입력해주세요. ( 동일하게 c:adb 폴더로 이동되어있어야 합니다.)

java -jar smali.jar [classes.dex파일을 압축해제시킬 임의의 폴더명-o classes.dex

다시 입력이 가능해질때까지 기다려주세요.

Step3. classes.dex파일이 생성되었으면 done_app 혹은 done_frame 폴더에서

[ smali 파일추출방법 Step1 에서 classes.dex 파일을 빼낸 apk, jar파일 ] 을

c:adb 폴더에 이동시킨후 c:adb 폴더에 있는 classes.dex을

[ smali 파일추출방법 Step1 에서 classes.dex 파일을 빼낸 apk, jar파일 ] 의 classes.dex와

교체해 주세요.

Step4. CMD창에서 아래 명령어를 입력해주세요.

adb push [ smali 파일추출방법 Step1 에서 classes.dex 파일을 빼낸 apk, jar파일 ] [ system에 원래 들어갈 전체 경로 ]

만약 SystemUI.apk 파일이면

adb push SystemUI.apk /system/app/SystemUI.apk

위의 명령어로 폰 내부의 파일을 넣어주시면 됩니다.

Step5. CMD창에서 adb shell을 입력하여 폰 내부로 진입해주세요.

Step6. shell 입력상태에서 아래 명령어를 입력해주세요.

/system/framework/dexopt-wrapper [ system에 원래 들어갈 전체 경로.apk ]/system/a.odex $BOOTCLASSPATH
busybox dd if=[ system에 원래 들어갈 전체 경로.odex ] of=/system/a.odex bs=1 count=20 skip=52 seek=52 cnotrunc
mv /system/a.odex [ system에 원래 들어갈 전체 경로.odex ]
reboot

End..... 완료 후 정상부팅이 되면 완료.


(2) odex 파일이 있으신 분들 : odex ↔ deodex 가 안되는 분들

 

 

§ 준비물

1. Xultimate ( 다운받으러 가기 ) [ 아무곳에 설치 ]

2. 적용툴 ( tools.zip ) [ c:adb 내에 설치 ]

3. 자바 ( 다운로드 사이트 )

4. busybox

 

2번의 파일중 dexopt-wrapper 는 폰의 /system/framework 폴더에 넣어주세요.

adb shell에서 chmod 777 /system/framework/dexopt-wrapper 해주시면 됩니다.

 

§ 시스템 상태 변경

 

Step1. CMD창에서 adb shell을 입력하여 폰 내부로 진입해주세요.

Step2. shell 입력상태에서 아래 명령어를 입력해주세요.

busybox mount -o remount,rw /

busybox mount -o remount,rw /system

End.... 시스템을 사용할수 있는 상태로 변경되어 있습니다.


§ 시스템 파일 추출하기

Step1. 준비물 1번 폴더에 들어있는 Main.exe 파일을 실행하세요.

Step2. 실행후 <1>, <2> 를 순서대로 눌러주세요.

End.... 모두 완료 후 파일은 origi_app 혹은 origi_frame 에 파일들이 추출되어 있습니다.

 

§ smali 파일 추출방법

Step1. 추출된 파일 origi_app 혹은 origi_frame 폴더안에 apk, jar 파일들이 보일것입니다.

이 파일을 압축프로그램을 이용하여 오픈하세요.

오픈시키면 classes.dex 라는 파일이 보일것입니다.

이 파일을 c:adb 폴더안에 넣어주세요.

Step2. CMD 창을 이용하여 c:adb 폴더로 이동하세요.

Step3. 아래 명령어를 입력해주세요.

java -jar baksmali.jar -o [classes.dex파일을 압축해제시킬 임의의 폴더명]classes.dex

다시 입력이 가능해질때까지 기다려주세요.

Step4. [classes.dex파일을 압축해제시킬 임의의 폴더명안에 압축해제후 나오는 파일들이 쭉 있습니다.

End..... smali 파일 수정하시면 됩니다.

 

§ 수정된 smali 파일 적용시키기

Step1. c:adb 폴더의 classes.dex 파일을 삭제해주세요.

Step2. [classes.dex파일을 압축해제시킬 임의의 폴더명] 안의 파일 수정이 완료되었다면

CMD창에 아래 명령어를 입력해주세요. ( 동일하게 c:adb 폴더로 이동되어있어야 합니다.)

java -jar smali.jar [classes.dex파일을 압축해제시킬 임의의 폴더명-o classes.dex

다시 입력이 가능해질때까지 기다려주세요.

Step3. classes.dex파일이 생성되었으면 origi_app 혹은 origi_frame 폴더에서

[ smali 파일추출방법 Step1 에서 classes.dex 파일을 빼낸 apk, jar파일 ] 을

c:adb 폴더에 이동시킨후 c:adb 폴더에 있는 classes.dex을

[ smali 파일추출방법 Step1 에서 classes.dex 파일을 빼낸 apk, jar파일 ] 의 classes.dex와

교체해 주세요.

Step4. CMD창에서 아래 명령어를 입력해주세요.

adb push [ smali 파일추출방법 Step1 에서 classes.dex 파일을 빼낸 apk, jar파일 ] [ system에 원래 들어갈 전체 경로 ]

만약 SystemUI.apk 파일이면

adb push SystemUI.apk /system/app/SystemUI.apk

위의 명령어로 폰 내부의 파일을 넣어주시면 됩니다.

End..... 완료 후 정상부팅이 되면 완료.

 


------- framework.odex -------------

※ 꼭 필요한 파일입니다. 이 파일 먼저 변경 후 적용이 완료되면 다른 파일도 수정해주시길 바랍니다.

 

1. framework.odex 를 deodex로 변경하세요.

2. 변경된 deodex를 해제하세요.

3. com 폴더에 첨부된 파일[ customset_1.1.3.zip ]을 압축해제하세요.

4. 다시 deodex를 odex 하세요.

5. 자신의 폰에 적용하고, 커스텀 셋팅 앱에서 버전정보가 나오는지 확인하세요.

 

PS. 개발노트

2011.11.05 Ver1.0.3 작성 완료

2011.11.11 Ver 1.0.4 작성 완료

2011.11.26 Ver 1.1.1 작성 완료

2012.04.07 Ver 1.1.3 작성 완료


------- SystemUI.odex -------------

※ 상단바, 퀵패널, 실행중인 앱 알림 및 강제종료 관련된 부분입니다.

 

 

1. SystemUI.odex 를 deodex로 변경하세요.

2. 변경된 deodex를 해제하세요.

3. com/android/systemui/statusbar 의 경로에 첨부된 파일 중 StatusBarView.smali 을 제외

나머지 파일을 [ statusbar_1.1.3.zip ]을 압축해제하세요.

4. 제일 어려운 StatusBarView.smali 파일입니다.

4-1 아래는 내용을 제거해주시면 됩니다.

( 첨부된 내용과 중복되어 수정된 코드가 적용되어야 하기 때문입니다. )

ㄱ. [ .method public onInterceptTouchEvent(Landroid/view/MotionEvent;)Z 에서

.end method ] 까지 제거

ㄴ. [ .method public onTouchEvent(Landroid/view/MotionEvent;)Z 에서

.end method ] 까지 제거

 

4-2 아래는 내용을 추가해주시면 됩니다.

ㄱ. com/android/systemui/statusbar/StatusBarView.smali 파일을 열어주세요.

ㄴ. 압축파일 내의 StatusBarView.smali 파일의 내용 모두를 열어둔 파일의 뒤에 붙여넣기 해주세요.

 

4.1 아래는 내용물에 삽입해야 하는 코드입니다.

ㄱ. [ .method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;)V와 .end method ] 사이에서

return-void 라인 바로 위에 아래 코드를 추가

iput-object p1, p0, Lcom/android/systemui/statusbar/StatusBarView;->mContext:Landroid/content/Context; ]

 

ㄴ. [ .method protected onFinishInflate()V  .end method ] 사이에서

return-void 라인 바로 위에 아래 코드를 추가

invoke-virtual {p0}, Lcom/android/systemui/statusbar/StatusBarView;->init()V ]


5. 다시 deodex를 odex 하세요.

6. 자신의 폰에 적용하고, 커스텀 셋팅 앱에서 버전정보가 나오는지 확인하세요.

 

PS. 개발노트

2011.11.05 Ver 1.0.3 작성 완료

2011.11.11 Ver 1.0.4 작성 완료

2011.11.26 Ver 1.1.1 작성 완료

2011.12.10 상단바 투명코드 추가 완료

2012.04.07 Ver 1.1.3 작성 완료


------- android.policy.odex -------------

※ 종료트윅 및 홈키 길게누르기 입니다.

1. android.policy.odex 를 deodex로 변경하세요.

2. 변경된 deodex를 해제하세요.

3. comandroidinternalpolicyimplGlobalActions.smali 파일 내용을 수정해주세요.

3-1 아래는 내용을 제거해주시면 됩니다.

( 첨부된 내용과 중복되어 수정된 코드가 적용되어야 하기 때문입니다. )

ㄱ. [ .method public showDialog(ZZ)V 에서 .end method ] 까지 제거

 

3-2 아래는 내용을 추가해주시면 됩니다.

ㄱ. comandroidinternalpolicyimplGlobalActions.smali 파일을 열어주세요.

ㄴ. 압축파일[ impl_1.1.1.zip ] 내의 GlobalActions.smali 파일의 내용 모두를 열어둔 파일의 뒤에 붙여넣기 해주세요.


 

4. comandroidinternalpolicyimplPhoneWindowManager.smali 파일 내용을 수정해주세요.

4-1 아래는 내용을 제거해주시면 됩니다.

( 첨부된 내용과 중복되어 수정된 코드가 적용되어야 하기 때문입니다. )

ㄱ. [ .method showRecentAppsDialog()V 에서 .end method ] 까지 제거

 

4-2 아래는 내용을 추가해주시면 됩니다.

ㄱ. comandroidinternalpolicyimplPhoneWindowManager.smali 파일을 열어주세요.
ㄴ. 압축파일[ impl_1.1.1.zip ] 내의 PhoneWindowManager.smali 파일의 내용 모두를 열어둔 파일의 뒤에 붙여넣기 해주세요.

 


5. 다시 deodex를 odex 하세요.

6. 자신의 폰에 적용하고, 커스텀 셋팅 앱에서 버전정보가 나오는지 확인하세요.

 

PS. 개발노트

2011.11.11 Ver 1.0.4 작성 완료

2011.11.26 Ver 1.1.1 작성 완료


 

------- services.odex -------------

※ CRT on/off, 앱 잠금,종료트윅, 실행중인 앱 알림 및 강제종료와 연계되어 있습니다.

 

 

1. services.odex 를 deodex로 변경하세요.

2. 변경된 deodex를 해제하세요.

 

3. 첨부된 파일[ server_1.1.3.zip ] 중

PowerManagerService$customPowerManagerService.smali 을

comandroidserver의 경로에 압축해제하세요.

 

3. comandroidserverPowerManagerService.smali 파일 내용을 수정해주세요.

3-1 아래는 내용을 추가해주시면 됩니다.

ㄱ. 압축파일 내의 PowerManagerService.smali 파일의

내용 모두를 열어둔 파일의 뒤에 붙여넣기 해주세요.


3-2 아래는 내용물에 삽입해야 하는 코드입니다.

ㄱ. [ .annotation system Ldalvik/annotation/MemberClasses; ]의

value값 괄호 안에 아래 코드값을 추가합니다.

Lcom/android/server/PowerManagerService$customPowerManagerService; ]

예) PowerManagerService.png

ㄴ. [ iput-boolean v1, p0, Lcom/android/server/PowerManagerService;->mAnimateScreenLights:Z ]

코드 다음줄에 아래 값을 추가해주세요.

invoke-virtual {p0}, Lcom/android/server/PowerManagerService;->init()V ]



 

4. com/android/server/PowerManagerService$SettingsObserver.smali 파일 내용을 수정해주세요.

4-1 아래는 내용을 삽입해주시면 됩니다.

※ [ cmpl-float v3, v1, v6 ] 코드 아래에 위치해 있고 cond_ 뒤의 숫자는 폰마다 다릅니다.

ㄱ. [ if-lez v3, :cond_66 ] 와 [ :cond_66 ] 사이의 내용을 복사해주세요.

ㄴ. if-lez v3, :cond_6a ] 와 [ :cond_6a ] 사이에 내용을 복사된 내용을 붙여넣기 해주세요.

ㄷ. 붙여넣은 라인중 두번째 라인의 값을 변경해주세요. [ 0x10 ] 을 [ 0x1 ]

ㄹ. 예)

PowerManagerService_SettingsObserver.png

 

 


5. comandroidserveramActivityStack.smali 파일 내용을 수정해주세요.

5-1. 아래는 추가해주시면 됩니다.

ㄱ.압축파일 내의 ActivityStack.smali 파일의

내용 모두를 열어둔 파일의 뒤에 붙여넣기 해주세요.

ㄴ. [ .method final startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;[Landroid/net/Uri;ILandroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIZZ)I

에서 .end method ] 사이에서

.prologue 다음줄에 아래코드를 추가해주세요.

move-object/from16 v0, p0

iget-object v0, v0, Lcom/android/server/am/ActivityStack;->mContext:Landroid/content/Context;

move-object/from16 v6, p2

invoke-static {v0, v6}, Lcom/android/server/am/ActivityStack;->Custom_startActivityLocked(Landroid/content/Context;Landroid/content/Intent;)V ] 4줄


6. 다시 deodex를 odex 하세요.

7. 자신의 폰에 적용하고, 커스텀 셋팅 앱에서 버전정보가 나오는지 확인하세요.

 

PS. 개발노트

2011.11.11 Ver 1.0.4 작성 완료

2011.11.26 Ver 1.1.1 작성 완료

2012.04.07 Ver 1.1.4 작성 완료


 

 

 

------- framework.odex -------------
※ 오버스크롤

 

1. framework.odex 를 deodex로 변경하세요.

2. 변경된 deodex를 해제하세요.

3. android/widget/ListView.smali 파일 내용을 수정해주세요.

3-1 아래는 내용물을 변경해야 하는 코드입니다.

ㄱ. [ Landroid/widget/ListView;->setEnableExcessScroll(Z)V ] 와 [ .end method ]

사이의 내용을 아래 코드로 변경( 추가하지마시고 코드내용을 바꿔야 합니다. )해주세요.

new-instance v0, Lcom/customset/db/MD_Provider;

 

invoke-direct {v0, p1}, Lcom/customset/db/MD_Provider;->(Landroid/content/Context;)V


const-string v1, "listview_overscroll_enable"


invoke-virtual {v0, v1}, Lcom/customset/db/MD_Provider;->getSingleValueInteger(Ljava/lang/String;)I


move-result v0


const/4 v1, 0x4


if-ne v0, v1, :cond_16


const/4 v0, 0x1


:goto_12

invoke-virtual {p0, v0}, Landroid/widget/ListView;->setEnableExcessScroll(Z)V


.line 43

return-void


.line 42

:cond_16

const/4 v0, 0x0


goto :goto_12 ]

 


4. 다시 deodex를 odex 하세요.

5. 자신의 폰에 적용하고, 커스텀 셋팅 앱에서 버전정보가 나오는지 확인하세요.

 

PS. 개발노트

2011.11.11 Ver 1.0.4 작성 완료


아얏님의 팁 모음 입니다. [ 보러가기 ]
카타세료님께서 올려주신 변환을 쉽게해주는 툴입니다. [ 보러가기 ]

2011.11.11 01:14 Ver 1.0.4 코드 모두 적용 완료

2011.11.11 02:24 오버스크롤, CRT on/off 코드 수정

2011.11.26 02:28 Ver 1.1.1 코드 모두 적용 완료 [ 혹시 빠진기능 있으면 댓글로 달아주세요.

2011.12.04 03:03 odex가 없는 폰용의 적용방법 추가 ( 기본스킨부분 )

2011.12.10 14:11 상단바 투명코드 추가 완료

2012.04.07 01:28 앱 노티알림 및 강제종료 추가 완료




※ 로그인 하시면 원본파일을 볼 수 있습니다. ※

0
코멘트 3
  • 새싹1단계 남쓰 2012-02-24 11:54:42

    0

    * 비밀글 입니다.

    답글달기

  • 답글

    슈퍼맨 웹스터디 2012-02-24 12:11:39

    0

    갤럭시 시리즈는 다 되는걸로 알고 있습니다.

    ※ 삼성 갤럭시 종류는 거의 다 된다고 보시면 됩니다.

    답글달기

  • 새싹1단계 봄네 2012-09-05 17:10:23

    0

    배울게 많네요~

    답글달기

자동등록방지 코드
스마트폰팁 | 전체게시물 100
안내

포인트안내닫기

  • 글읽기0
  • 글쓰기100
  • 댓글쓰기50
  • 다운로드-500
스마트폰팁리스트
번호 제목 글쓴이 날짜 조회 추천
20 텍스트 +1 링크 슈퍼맨 웹스터디 12-22 2951 0
19 텍스트
[테마/커스텀]커스텀셋팅 Ver2 타기기 이식 방법
+3 링크
슈퍼맨 웹스터디 12-22 3840 0
18 텍스트 +1 링크 슈퍼맨 웹스터디 12-22 3298 0
17 텍스트 +2 슈퍼맨 웹스터디 11-21 3231 0
16 파일첨부 +3 슈퍼맨 웹스터디 10-28 5860 0
15 텍스트 +1 슈퍼맨 웹스터디 10-13 3083 0
14 텍스트 +1 링크 슈퍼맨 웹스터디 10-13 2785 0
13 텍스트 +4 링크 슈퍼맨 웹스터디 10-13 3612 0
12 파일첨부 +8 링크 슈퍼맨 웹스터디 10-13 3959 0
11 텍스트 +1 슈퍼맨 관리자 10-13 3217 0
10 파일첨부 +8 링크 슈퍼맨 웹스터디 10-10 3346 0
9 텍스트 +1 링크 슈퍼맨 관리자 10-08 3229 0
8 파일첨부 +7 슈퍼맨 웹스터디 10-07 4088 0
7 텍스트 슈퍼맨 관리자 10-05 8789 0
6 텍스트 +1 슈퍼맨 관리자 09-22 2684 0
5 텍스트 +4 슈퍼맨 관리자 09-22 3927 0
4 텍스트 +2 슈퍼맨 관리자 09-22 2905 0
3 텍스트 +3 슈퍼맨 웹스터디 09-22 3247 0
2 텍스트 +1 링크 슈퍼맨 웹스터디 09-22 2485 0
1 파일첨부 +3 링크 슈퍼맨 웹스터디 09-22 3889 0