더 이상 고민하지 않고 시작하겠습니다 ..!
STEP — 1 : Android Studio 열기
If 없는 경우 여기에서 다운로드 할 수 있습니다. 링크.
STEP — 2 : 활동 선택
새 Android 스튜디오 프로젝트를 만듭니다. (아래 이미지 참조)
이 자습서는 간단하게 유지하고 있습니다. 상태 표시 줄의 시계 색상 만 변경하기 때문에 활동을 만들 필요가 없습니다.
활동 없음을 선택하고 다음으로 이동합니다.
STEP — 3 : 프로젝트 구성
애플리케이션의 이름과 패키지 이름을 지정합니다. 언어를 Java로 유지하십시오. Kotlin에 익숙하다면 그대로 사용하십시오. 이것은 일종의 ‘hello-world’앱 / 모듈 개발이므로 하드 코딩이 많지 않을 것입니다.
최소 API를 유지하고 있습니다. 레벨 15.
그런 다음 마침 버튼을 누르십시오.
STEP — 4 : build.gradle (앱) 수정 & 아래 종속성 추가 :
그런 다음 프로젝트를 동기화합니다.
STEP — 5 : manifest.xml 파일을 수정합니다.
애플리케이션 태그 안에 아래 메타 데이터 태그를 추가합니다.
이름은 xposedmodule
이고 값은 true
여야합니다. 리소스를 비워 둡니다. 그런 다음 xposedminversion
(이전 단계의 API 버전) 및 xposeddescription
(모듈에 대한 매우 간단한 설명)에 대해 동일한 작업을 반복합니다.
STEP — 6 : 클래스 만들기 :
package com.myfirstxposedmodule;
public class MyModule {
}
이것은 향후 수정할 클래스입니다.
STEP — 7 : xposed_init 파일 생성 및 수정 :
디렉토리보기를 프로젝트보기로 변경합니다. 앱 > src > 기본으로 이동합니다. main을 마우스 오른쪽 버튼으로 클릭하고 새 > 디렉토리를 선택합니다.
이름 : assets
오른쪽 클릭 최근 생성 된 assets
디렉토리에서 새 > 파일을 선택합니다.
이름 : xposed_init
(파일 형식을 묻는 경우 text
선택)
xposed_init
파일에 전체 이름을 추가합니다. 자바 클래스의. 즉, 우리의 경우는 다음과 같습니다.
com.myfirstxposedmodule.MyModule
Xposed 프레임 워크가 모듈을 식별하고 부팅시로드하는 방법입니다. 이 파일은로드 할 클래스를 프레임 워크에 알려주며 로그에서도 볼 수 있습니다.
STEP — 8 : MyModule 클래스 수정 :
package com.myfirstxposedmodule;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import de.robv.android.xposed.XposedBridge;
public class MyModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
}
}
IXposedHookLoadPackage
위에 표시된대로 handleLoadPackage
메소드를 구현하고 구현합니다.
이제 사용해 보겠습니다. handleLoadPackage
메소드에 로그 함수를 넣습니다.
XposedBridge.log("Loaded app: " + lpparam.packageName);
이렇게하면로드 된 모듈이 인쇄됩니다. 일반적으로 이러한 로그는 다음 파일에 기록됩니다. /data/data/de.robv.android.exposed.installer/log/debug.log
(Xposed 설치 프로그램을 통해 쉽게 액세스 할 수 있음)
STEP — 9 : 코드 실행 :
직접 시도하는 경우 Android 스튜디오에서 실행하면이 오류가 발생합니다. 지금은 활동이 없기 때문에 괜찮습니다.
어쨌든 걱정하지 마세요. 해결책이 있습니다. 실행 구성을 편집하고 시작 옵션을 기본 활동에서 없음으로 변경하고 확인을 선택하면됩니다.
이제 다시 실행 해보십시오 (Windows : Shift + F10).
기기에서 성공적으로 실행되면 Xposed Installer 앱의 모듈 목록에서이 모듈을 볼 수 있습니다. 아래 이미지와 같이 매니페스트 파일에 입력 한 설명 텍스트도 볼 수 있습니다.
상자를 선택하여 해당 모듈을 활성화하고 기기를 재부팅하세요.재부팅 후 Xposed Installer 응용 프로그램을 열고 로그를 엽니 다 (경로 위에서 언급 한 로그 파일을 열 수도 있음). 다음과 같은 줄이 표시됩니다.
Xposed 모듈을 만들고 실행하는 방법을 알았으니 이제 상태 표시 줄의 코드를 살펴보고 자체 구현을 적용 할 수 있습니다.
p>
STEP — 10 : 상태 표시 줄 코드 살펴보기 :
이제 패키지). 아시다시피 Android는 오픈 소스 운영 소스이므로 코드의 내부 내용을 볼 수 있습니다. 이 링크에서 안드로이드의 소스 코드를 다운로드 할 수 있습니다. Android 버전 및 ROM에 따라 약간의 변경이있을 수 있습니다. 현재로서는 시계의 코드를 찾는 데에만 관심이 있습니다. com.android.systemui
패키지 어딘가에 Clock.java
클래스가 있으며이 클래스는 TextView
를 확장합니다. 이를 TextView처럼 유사하게 처리 할 수 있습니다. 이것은 그 클래스에 대한 링크입니다. 이름이 updateClock()
인 상태 표시 줄의 시간을 업데이트하는 한 가지 방법이 있습니다. 아래 스 니펫을보십시오.
자, 우리가 원하는 것은 무엇입니까? 이 메서드가 실행될 때마다 코드를 실행하려고합니다. 다음 단계에서는 메소드 후킹이라고도합니다.
STEP — 11 : 메소드 후킹 :
XposedHelper
는 몇 가지 도우미 메서드를 제공하는 클래스입니다. 필요한 도우미 메서드 중 하나는 String
클래스 로더에서 전체 클래스 이름을 가져 오는 findAndHookMethod
입니다 (XC_LoadPackage.LoadPackageParam
from handleLoadPackage
), 추적하려는 메서드 이름 (이 경우 updateClock
) String
및 XC_MethodHook
콜백 (단순한 콜백)에서. 아래는 우리의 코드입니다
위의 코드에서 iv id는 XC_MethodHook
인 익명 클래스 XC_MethodHook
에 구현 한 두 가지 메서드가 있음을 알 수 있습니다. = “e43a7ee976″>
및 afterHookedMethod
. 이름에서 알 수 있듯이 첫 번째는 hooked 메서드보다 먼저 실행되고 후자는 hooked 메서드 (이 경우 updateClock
) 후에 실행됩니다. 인수 및 반환 유형에 대한 매개 변수는 MethodHookParam
인수로 처리됩니다. 하지만 지금은 상태 표시 줄의 시계 색상 만 변경하고 싶습니다. afterHookedMethod
만 있으면됩니다.
TextView
개체, param.thisObject
에서 가져올 수 있습니다.이 개체는 서 this
키워드와 동일합니다. div id = “41633a64c2″>
클래스. 그런 다음 TextView
로 캐스트 한 다음 해당 TextView
개체의 색상을 변경하고 내가 한 것처럼 텍스트를 수정할 수도 있습니다. :
STEP — 12 : 모듈 실행 :
코드를 실행하고 기기를 다시 재부팅합니다. 시계가 빨간색으로 표시되고 추가 한 그림 이모티콘 텍스트가 표시됩니다.
그게 다입니다 !! 재부팅이 안된다는 걸 알아! 하지만 당신은 자신 만의 Xposed 모듈을 만들었습니다. 좋지 않나요 ?? !!