본문 바로가기

일반강좌/중급

[All Device] 롬을 포팅해보자!

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

롬을 포팅해봅시다!

롬을 포팅하는 방법은 2가지가 있는데 그중에 한방법인 복붙 포팅을 시작하겠습니다.

이 강좌는 복붙 포팅에 관한 강좌입니다.

사람들은 복붙 보다 빌드롬을 선호하죠.. 왜냐하면 복붙롬은 빌드롬보다 버그가 많기 때문이죠 그러기에 버그 픽스만 하면 빌드롬 못지않은, 실사할 수 있는 롬을 만들 수 있습니다.

 이제 시작합니다.

 

( 이 강좌는 안드로이드 강좌입니다. )

 

준비물 : 알집, NotePad ++, 컴퓨터

 

1. 먼저 포팅하고 싶은 롬의 안드로이드 버전이 무엇인지확인합니다. ( ex. 안드로이드 4.4.2(될지는몰라요),4.1.2 , 4.0.4)

 

2. 자신의 폰에 포팅된 같은 안드로이드 버전의 기반 롬이 있어야 합니다. ( ex. CM10, CM9, AOKP)

 

3. 이제 두개의 롬을 준비합니다. 1번의 롬은 다른 기종에서 포팅된 롬을 가져옵니다. (해상도와 cpu 가 같으면 좋겠지만 꼭 같지 않아도 상관없습니다.)

 

4. 1번의 포팅할 롬은 이제부터 'A' 라고 하겠습니다. 2번의 자신의 기종에 이미 있는 롬은 'B' 라고 하겠습니다.

 

5. A와 B를 압축을 풀어줍니다.

 

6. B에서 /system 폴더에 들어갑니다.

 

7. app, fonts, framework, media 폴더를 삭제 합니다.

 

8. A의 /system 에서 app, fonts, framework, media 폴더를 옮겨옵니다.

 

9. A의 /system/etc/permission 폴더에 가서 features.xml 과 handheld_core_hardware.xml, platform.xml 이 세 문서를 뺀 모든 문서를 B의 /system/etc/permission 에 옮겨옵니다. ( 복사 합니다. )

 

10. A의 /system/etc/init.d 폴더에 가서 00baner 이라는 것 빼고 다 B의 /system/etc/init.d 에 옮겨옵니다.

 

11. A의 /system/lib 폴더에 들어가서 libandroid_runtime.so와 libandroid_servers.so, libmedia_jni.so 를 B의 /system/lib 에 있는 libandroid_runtime.so와 libandroid_servers.so, libmedia_jni.so를 교체해줍니다.

 

12. A의 system/xbin 안의 su 파일을 B의 system/xbin 에 넣어주세요. 그래야 루트권한이 제대로 작동합니다.

 

13. A의 system/build.prop 을 NotPad ++ 로 열어주고 build.prop 안의 

         ro.config.ringtone=
         ro.config.notification_sound=
         ro.config.alarm_alert=

를 복사하여 B의 system/build.prop 안의 저 구문을 교체해 줍니다.

 

14. 알집으로 압축합니다.

 

15. 롬을 올려봅니다.

 

16. 부팅이 되면 환호 합니다. 

[출처] #1 롬 포팅 (포팅하기)|작성자 NeD



#1 과 #2를 통해 부팅이 되었을 겁니다. 

그러면 이제 오류를 픽스해서 더욱 완벽한 롬으로 만들어봅시다. 

자잘한 버그보다 큰 버그를 중심적으로 다룹니다. 

 

준비물: 디컴파일 할 수 있는 툴 (예: apktool), 알집, 백스말리 툴 (예: bsmanager) 

 

Ⅰ. 저장소 관련 오류 fix

 1. system/framework 에서 framework-res.apk 를 포팅한 롬에서 추출합니다.

  

 2.자신의 기기에 포팅된 저장소 오류가 없는 롬(순정롬도 됩니다) 의 system/framework안에 있는 framework-res.apk 를 추출합니다.  

  

 3. 두 파일(framework-res.apk 2개)의 확장자를 .zip으로 바꿔줍니다. 

  

 4. 두 파일을 모두 압축을 풀어줍니다. 

  

 5. 오류가 없는 framework-res 안에서 res/xml 안의 storage_list.xml를 오류가 있는 frmaeowork-res/res/xml 안의 storage_list.xml와 교체해줍니다.  

 

Ⅱ. 통신 관련 오류 fix 

 1. framework.jar을 백스말리 해서 framework.jar/com/android/internal/telephony 폴더에 가서 RIL.smali, Ril~.smali, SkyQualcommRIL.smali, SkyQualcommRIL~.smali (회사명).smali (samsung 기기면 SamsungRIL.smali, kttech 기기면 kttech***Ril.smali) 을 옮겨줍니다. 

  

 2. 스말리 합니다. 

  

 3. 롬에 넣어줍니다.  

 

Ⅲ. 진동 관련 오류 fix 

 1. services.jar을 백스말리 한다.

 

 2. com/android/server 에 가서 VibratorService.smali 를 기존 빌드롬의 것으로 교체해 줍니다.

 

 3. 스말리 합니다. 

 

 4. 롬에 넣어줍니다.

 

Ⅳ. 배터리 최적화 

 1. framework-res.apk 디컴파일해서 res/xml 폴더 가서 power_profile.xml 을 옮겨줍니다. 

  

 2. 디컴파일 합니다.  

  

 3. 롬에 넣어줍니다. 

 

Ⅴ. 그래픽 부분 최적화

 

  1. framework.jar을 디컴파일 한다.

 

  2. 아래 파일을 기존 빌드롬에서 교체해 준다.

 

  3. smali\smali\android\os

 

   Environment

   SystemProperties

   smali\smali\android\view

   HardwareCanvas

   HardwareRenderer$Gl20Renderer

   HardwareRenderer$GlRenderer

   HardwareRenderer 

 
  4. 스말리 해준다.
  5. 롬에 넣어준다. 
 
이상으로 롬 포팅에 관한 강좌가 끝났네요 ㅎㅎ
이 방법으로 픽스까지 하면 거의 완벽해질 겁니다.
감사합니다.
+ Pa기반 롬들은 etc안의 paranoid 폴더를 옮겨주시고 update-script 에 paranoid의 스크립트 구문을 이식하시면 됩니다.(http://jins4218.blog.me/180394389)

출처 : 네드의 블로그