import{_ as s,o,c as a,a as e}from"./app.7900f22c.js";const n={},p=e(`
\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
\u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\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
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
v1.1.5
\u4F5C\u5E9F
\u8BF7\u8F6C\u79FB\u5230 XPOSED_ENVIRONMENT
XPOSED_ENVIRONMENT
\u53D8\u66F4\u8BB0\u5F55
v1.1.5
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u4EC5\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\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 XPOSED_ENVIRONMENT
\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 XPOSED_ENVIRONMENT
\u3002
\u6A21\u5757\u73AF\u5883\u4EC5\u4F7F\u7528 LOGD
\u3002
data class YukiLoggerData internal constructor(
var timestamp: Long,
var time: String,
var tag: String,
var priority: String,
var packageName: String,
var userId: Int,
var msg: String,
var throwable: Throwable?
) : Serializable
\u53D8\u66F4\u8BB0\u5F55
v1.1.2
\u65B0\u589E
v1.1.4
\u4FEE\u6539
\u5B9E\u73B0 Serializable
\u63A5\u53E3\u5E76\u6807\u8BC6\u4E3A data class
\u529F\u80FD\u63CF\u8FF0
\u8C03\u8BD5\u65E5\u5FD7\u6570\u636E\u5B9E\u73B0\u7C7B\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 inMemoryData: ArrayList<YukiLoggerData>
\u53D8\u66F4\u8BB0\u5F55
v1.1.2
\u65B0\u589E
v1.1.4
\u4FEE\u6539
\u7C7B\u578B\u7531 HashSet
\u4FEE\u6539\u4E3A ArrayList
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D\u5168\u90E8\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7\u6570\u636E\u3002
\u7279\u522B\u6CE8\u610F
\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\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
\u7279\u522B\u6CE8\u610F
\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\u3002
fun contents(data: ArrayList<YukiLoggerData>): String
\u53D8\u66F4\u8BB0\u5F55
v1.1.5
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u83B7\u53D6\u3001\u683C\u5F0F\u5316\u5F53\u524D\u65E5\u5FD7\u6587\u4EF6\u5185\u5BB9\u3002
\u5982\u679C\u5F53\u524D\u6CA1\u6709\u5DF2\u8BB0\u5F55\u7684\u65E5\u5FD7 (data
\u4E3A\u7A7A) \u4F1A\u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\u3002
\u7279\u522B\u6CE8\u610F
\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\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
\u4F60\u4E5F\u53EF\u4EE5\u76F4\u63A5\u83B7\u53D6 inMemoryData \u6765\u6E05\u9664\u3002
\u7279\u522B\u6CE8\u610F
\u83B7\u53D6\u5230\u7684\u65E5\u5FD7\u6570\u636E\u5728 Hook APP (\u5BBF\u4E3B) \u53CA\u6A21\u5757\u8FDB\u7A0B\u4E2D\u662F\u76F8\u4E92\u9694\u79BB\u7684\u3002
fun saveToFile(fileName: String, data: ArrayList<YukiLoggerData>)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
v1.1.5
\u4FEE\u6539
\u65B0\u589E data
\u53C2\u6570
\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\u3001\u6A21\u5757\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 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u7684\u65E5\u5FD7\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
\u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\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
\u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\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
\u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\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
\u548C (Xposed) \u5BBF\u4E3B\u73AF\u5883\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