Enjoy Development

지식관리, 메모장, 기억저장소, 참고자료, ...

Android SuperSU v1.65 패키지명 변경

2014.02.12 09:40 | 조회 수 : 243145

패키지명 변경 작업 요약

  1. APK Decompile
  2. AndroidManifest.xml 파일에서 패키지명 변경
  3. 변경 할 패키지명에 맞게 smali 폴더 하위의 폴더명 변경
  4. smali 파일들(*.smali)에서 패키지명 관련 텍스트(Java 소스) 일괄 변경
  5. APK Compile & Sign
  6. 테스트

     

패키지명 변경 참고

Try1) "eu.chainfire.supersu" => "eu.chainfir2.supersu" --- 실패

처음에는 패키지명 중간("chainfir2")을 로 바꾸는 걸로 시도했었는데 smali 파일들에서 바꿔야 할 것/바꾸지 말아야 할 것 구분이 어렵다는 점과 supersu.arm.png, supersu.x86.png 2개 파일을 헥사 에디터로 수정해야하는데 자리수가 다르다는 것 때문에 실패했다.

Try2) "eu.chainfire.supersu" => "eu.chainfire.sup2rsu" --- 성공

supersu.arm.png, supersu.x86.png 2개 파일 수정을 위해서는 변경 전/후 길이가 같아야 한다는 조건으로 "supersu"를 "sup2rsu"로 변경하는 방법으로 시도했다. 결과는 성공이다.

     

사전 준비

  • Java + ADB 기본 실행 환경 (PC에 설치되어있는 Java 버전은 1.6.0.30)
  • SuperSU_1.65.apk
  • ApkManager v5.1
  • apktool.jar 파일 업데이트 ---> Compile에서 에러나는 몇 가지 apktool.jar 바꾸니까 사라짐

     

패키지명 변경 작업 진행 (eu.chainfire.supersu => eu.chainfir.sup2rsu)

1) APK Manager의 프로젝트 폴더에 APK 파일 복사

- place-apk-here-for-modding 폴더에 SuperSU_1.65.apk 파일 복사

     

2) APK Decompile

- "9 Decompile apk" 실행

- 에러 발생하면 로그 확인 후 아래 Troubleshooting 등을 참고해서 해결한다.

     

3) 수정하지 않은 상태로 다시 컴파일한 APK로 정상 실행 확인

- "11 Compile apk" > "12 Sign apk" > "13 Install apk" 순서대로 실행

     

[참고] "supersu" 문자열을 포함하는 파일 리스트 (대소문자 구분)

- \AndroidManifest.xml

- \apktool.yml

- \assets\99-supersu.sh

- \assets\supersu.arm.png

- \assets\supersu.x86.png

- \res\...\* - 55개 파일

- \smali\...\*.smali - 175개 파일

     

4) 패키지명 변경

1. 디렉토리명 변경

- smali/eu/chainfire/supersu => smali/eu/chainfire/sup2rsu

     

2. 소스 파일에서 패키지명 변경

- *.xml, *.yml, *.smali, *.sh 파일들에서 텍스트 "supersu"를 "sup2rsu"로 변경 (대소문자 구분)

=> UTF-8 제대로 지원하는 텍스트 에디터를 이용해서 일괄 변경한다. 그렇지 않으면 strings.xml 글자가 깨져서 컴파일 안된다.

     

3. 앱 이름 변경

- res 하위 폴더들의 strings.xml 파일 변경

<string name="app_name">SuperSU</string>

=> <string name="app_name">Sup2rSU</string>

     

4. Binary 파일 수정

- assets\supersu.arm.png, assets\supersu.x86.png 2개 파일을 헥사 에디터로 수정

=> 각 파일내에서 바꿔야할 부분이 여러군데 있다. 모두 바꾼다.

     

5. 파일명 모두 "supersu"를 "sup2rsu"로 변경 (대소문자 구분 총 8개)

     

5) 패키지명 변경해서 컴파일한 APK로 정상 실행 확인

- "11 Compile apk" > "12 Sign apk" > "13 Install apk" 순서대로 실행

- 반드시!! 루트 권한을 요구하는 앱을 실행해서 SuperSU가 정상 작동하는지 확인한다.

- 패키지명 변경 작업이 잘못된 경우 SuperSU가 묻지도 않고 무조건 ROOT 권한을 준다.

     

Troubleshooting

  • Decompile 에러 - "Integer types not allowed (at 'layoutDirection' with value '3')"
    • ApkManager v5.1에 포함된 apktool.jar 버전이 낮아서 발생하는 문제임. apktool.jar 파일 업그레이드
  • Decompile 에러 - apktool.jar 파일 업그레이드해도 여전히 에러 발생
    • 에러 로그 등을 통해 1.apk (ex. "apktool\framework\1.apk") 파일을 찾아 지우고 다시한다.
  • Compile 에러 - "Integer types not allowed (at 'layoutDirection' with value '3')"
    • 에러 파일(prompt_v14.xml)에서 android:layoutDirection="3" 이거를 android:layoutDirection="locale" 변경
  • Compile 에러 - strings.xml 관련
    • 해당 strings.xml 파일을 메모장으로 열어서 글자가 깨졌는지 확인한다.
    • UTF-8 제대로 지원하는 텍스트 에디터로 수정해야 한다.
Powered by EnjoyDev | Xpress Engine | DNS Powered by DNSEver.com