import{_ as s,o,c as e,a}from"./app.fb8271cf.js";const n={},p=a(`
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u8FD9\u662F
YukiHookAPI
\u7684\u65E5\u5FD7\u5C01\u88C5\u7C7B\uFF0C\u53EF\u5B9E\u73B0\u540C\u65F6\u5411Logcat
\u548CXposedBridge.log
\u6253\u5370\u65E5\u5FD7\u7684\u529F\u80FD\u3002
enum class LoggerType
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u9700\u8981\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\u3002
\u51B3\u5B9A\u4E8E\u6A21\u5757\u4E0E (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u7684\u6253\u5370\u65B9\u5F0F\u3002
LOGD
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4EC5\u4F7F\u7528
android.util.Log
\u3002
XPOSEDBRIDGE
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4EC5\u4F7F\u7528
XposedBridge.log
\u3002
\u7279\u522B\u6CE8\u610F
\u53EA\u80FD\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4E2D\u4F7F\u7528\uFF0C\u6A21\u5757\u73AF\u5883\u5C06\u4E0D\u751F\u6548\u3002
SCOPE
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5206\u533A\u4F7F\u7528\u3002
(Xposed) \u5BBF\u4E3B\u73AF\u5883\u4EC5\u4F7F\u7528 XPOSEDBRIDGE
\u3002
\u6A21\u5757\u73AF\u5883\u4EC5\u4F7F\u7528 LOGD
\u3002
BOTH
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u540C\u65F6\u4F7F\u7528\u3002
(Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528 LOGD
\u4E0E XPOSEDBRIDGE
\u3002
\u6A21\u5757\u73AF\u5883\u4EC5\u4F7F\u7528 LOGD
\u3002
object YukiHookLogger
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8C03\u8BD5\u65E5\u5FD7\u5B9E\u73B0\u7C7B\u3002
val contents: String
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u5F53\u524D\u65E5\u5FD7\u6587\u4EF6\u5185\u5BB9\u3002
\u5982\u679C\u5F53\u524D\u6CA1\u6709\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7\u4F1A\u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\u3002
fun clear()
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u6E05\u9664\u5168\u90E8\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7\u3002
fun saveToFile(fileName: String)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4FDD\u5B58\u5F53\u524D\u65E5\u5FD7\u5230\u6587\u4EF6\u3002
\u82E5\u5F53\u524D\u672A\u5F00\u542F Configs.isRecord
\u6216\u8BB0\u5F55\u4E3A\u7A7A\u5219\u4E0D\u4F1A\u8FDB\u884C\u4EFB\u4F55\u64CD\u4F5C\u3002
\u65E5\u5FD7\u6587\u4EF6\u4F1A\u8FFD\u52A0\u5230 fileName
\u7684\u6587\u4EF6\u7ED3\u5C3E\uFF0C\u82E5\u6587\u4EF6\u4E0D\u5B58\u5728\u4F1A\u81EA\u52A8\u521B\u5EFA\u3002
\u7279\u522B\u6CE8\u610F
\u6587\u4EF6\u8BFB\u5199\u6743\u9650\u53D6\u51B3\u4E8E\u5F53\u524D\u5BBF\u4E3B\u5DF2\u83B7\u53D6\u7684\u6743\u9650\u3002
object Configs
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u914D\u7F6E
YukiHookLogger
\u3002
const val TAG: Int
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u6807\u7B7E\u3002
const val PRIORITY: Int
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4F18\u5148\u7EA7\u3002
const val PACKAGE_NAME: Int
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D\u5BBF\u4E3B\u7684\u5305\u540D\u3002
const val USER_ID: Int
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D\u5BBF\u4E3B\u7684\u7528\u6237 ID (\u4E3B\u7528\u6237\u4E0D\u663E\u793A)\u3002
var isEnable: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528\u8C03\u8BD5\u65E5\u5FD7\u7684\u8F93\u51FA\u529F\u80FD\u3002
\u5173\u95ED\u540E\u5C06\u4F1A\u505C\u7528 YukiHookAPI
\u5BF9\u5168\u90E8\u65E5\u5FD7\u7684\u8F93\u51FA\u3002
\u4F46\u662F\u4E0D\u5F71\u54CD\u5F53\u4F60\u624B\u52A8\u8C03\u7528\u4E0B\u9762\u8FD9\u4E9B\u65B9\u6CD5\u8F93\u51FA\u65E5\u5FD7\u3002
loggerD
\u3001loggerI
\u3001loggerW
\u3001loggerE
\u3002
\u5F53 isEnable
\u5173\u95ED\u540E YukiHookAPI.Configs.isDebug
\u4E5F\u5C06\u540C\u65F6\u5173\u95ED\u3002
var isRecord: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u662F\u5426\u542F\u7528\u8C03\u8BD5\u65E5\u5FD7\u7684\u8BB0\u5F55\u529F\u80FD\u3002
\u5F00\u542F\u540E\u5C06\u4F1A\u5728\u5185\u5B58\u4E2D\u8BB0\u5F55\u5168\u90E8\u53EF\u7528\u7684\u65E5\u5FD7\u548C\u5F02\u5E38\u5806\u6808\u3002
\u9700\u8981\u540C\u65F6\u542F\u7528 isEnable \u624D\u80FD\u6709\u6548\u3002
\u7279\u522B\u6CE8\u610F
\u8FC7\u91CF\u7684\u65E5\u5FD7\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5BBF\u4E3B\u8FD0\u884C\u7F13\u6162\u6216\u9020\u6210\u9891\u7E41 GC\u3002
\u5F00\u542F\u540E\u4F60\u53EF\u4EE5\u8C03\u7528 YukiHookLogger.saveToFile \u5B9E\u65F6\u4FDD\u5B58\u65E5\u5FD7\u5230\u6587\u4EF6\u6216\u4F7F\u7528 YukiHookLogger.contents \u83B7\u53D6\u5B9E\u65F6\u65E5\u5FD7\u6587\u4EF6\u3002
var tag: String
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u8FD9\u662F\u4E00\u4E2A\u8C03\u8BD5\u65E5\u5FD7\u7684\u5168\u5C40\u6807\u8BC6\u3002
\u9ED8\u8BA4\u6587\u6848\u4E3A YukiHookAPI
\u3002
\u4F60\u53EF\u4EE5\u4FEE\u6539\u4E3A\u4F60\u81EA\u5DF1\u7684\u6587\u6848\u3002
fun elements(vararg item: Int)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u81EA\u5B9A\u4E49\u8C03\u8BD5\u65E5\u5FD7\u5BF9\u5916\u663E\u793A\u7684\u5143\u7D20\u3002
\u53EA\u5BF9\u65E5\u5FD7\u8BB0\u5F55\u548C XposedBridge.log
\u751F\u6548\u3002
\u65E5\u5FD7\u5143\u7D20\u7684\u6392\u5217\u5C06\u6309\u7167\u4F60\u5728 item
\u4E2D\u8BBE\u7F6E\u7684\u987A\u5E8F\u8FDB\u884C\u663E\u793A\u3002
\u4F60\u8FD8\u53EF\u4EE5\u7559\u7A7A item
\u4EE5\u4E0D\u663E\u793A\u9664\u65E5\u5FD7\u5185\u5BB9\u5916\u7684\u5168\u90E8\u5143\u7D20\u3002
\u53EF\u7528\u7684\u5143\u7D20\u6709\uFF1ATAG
\u3001PRIORITY
\u3001PACKAGE_NAME
\u3001USER_ID
\u3002
\u529F\u80FD\u793A\u4F8B
\u6253\u5370\u7684\u65E5\u5FD7\u6837\u5F0F\u5C06\u6309\u7167\u4F60\u8BBE\u7F6E\u7684\u6392\u5217\u987A\u5E8F\u548C\u5143\u7D20\u5185\u5BB9\u8FDB\u884C\u3002
\u793A\u4F8B\u5982\u4E0B
elements(TAG, PRIORITY, PACKAGE_NAME, USER_ID)
\u4EE5\u4E0A\u5185\u5BB9\u5B9A\u4E49\u7684\u65E5\u5FD7\u5C06\u663E\u793A\u4E3A\u5982\u4E0B\u6837\u5F0F\u3002
\u793A\u4F8B\u5982\u4E0B
[YukiHookAPI][D][com.demo.test][999]--> This is a log
\u5982\u679C\u6211\u4EEC\u8C03\u6574\u5143\u7D20\u987A\u5E8F\u4EE5\u53CA\u51CF\u5C11\u4E2A\u6570\uFF0C\u90A3\u4E48\u7ED3\u679C\u53C8\u4F1A\u4E0D\u4E00\u6837\u3002
\u793A\u4F8B\u5982\u4E0B
elements(PACKAGE_NAME, USER_ID, PRIORITY)
\u4EE5\u4E0A\u5185\u5BB9\u5B9A\u4E49\u7684\u65E5\u5FD7\u5C06\u663E\u793A\u4E3A\u5982\u4E0B\u6837\u5F0F\u3002
\u793A\u4F8B\u5982\u4E0B
[com.demo.test][999][D]--> This is a log
fun loggerD(tag: String, msg: String, type: LoggerType)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4FEE\u6539
\u65B0\u589E type
\u53C2\u6570
\u529F\u80FD\u63CF\u8FF0
\u5411
Logcat
\u548CXposedBridge
\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522BD
\u3002
tag
\u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag
\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002
fun loggerI(tag: String, msg: String, type: LoggerType)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4FEE\u6539
\u65B0\u589E type
\u53C2\u6570
\u529F\u80FD\u63CF\u8FF0
\u5411
Logcat
\u548CXposedBridge
\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522BI
\u3002
tag
\u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag
\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002
fun loggerW(tag: String, msg: String, type: LoggerType)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4FEE\u6539
\u65B0\u589E type
\u53C2\u6570
\u529F\u80FD\u63CF\u8FF0
\u5411
Logcat
\u548CXposedBridge
\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522BW
\u3002
tag
\u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag
\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002
fun loggerE(tag: String, msg: String, e: Throwable?, type: LoggerType)
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4FEE\u6539
\u65B0\u589E type
\u53C2\u6570
\u529F\u80FD\u63CF\u8FF0
\u5411
Logcat
\u548CXposedBridge
\u6253\u5370\u65E5\u5FD7\uFF0C\u7EA7\u522BE
\uFF0C\u53EF\u643A\u5E26e
\u5F02\u5E38\u4FE1\u606F\uFF0C\u5C06\u6253\u5370\u5F02\u5E38\u5806\u6808\u3002
tag
\u7684\u9ED8\u8BA4\u53C2\u6570\u4E3A YukiHookAPI.Configs.debugTag
\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u884C\u81EA\u5B9A\u4E49\u3002