{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":258964898,"defaultBranch":"master","name":"pine","ownerLogin":"canyie","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-04-26T07:13:21.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/31466456?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1587885988.0","currentOid":""},"activityList":{"items":[{"before":"c6316906997f07f6101429035612a75bbfc4c85f","after":"533500f532c6f9582f485273e7b5d0babfb1194d","ref":"refs/heads/master","pushedAt":"2024-07-31T08:12:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Publish core 0.3.0 & enhances 0.1.0 & xposed 0.2.0\n\nTest: manual","shortMessageHtmlLink":"Publish core 0.3.0 & enhances 0.1.0 & xposed 0.2.0"}},{"before":"203bbf9c4d28826fb69e50e77af0b6bc62150bd4","after":"c6316906997f07f6101429035612a75bbfc4c85f","ref":"refs/heads/master","pushedAt":"2024-07-30T14:53:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"STW before performing inline hooks in enhances library","shortMessageHtmlLink":"STW before performing inline hooks in enhances library"}},{"before":"ed094f1ecc628ed9b362f3493daca07018b03302","after":"203bbf9c4d28826fb69e50e77af0b6bc62150bd4","ref":"refs/heads/master","pushedAt":"2024-07-27T08:58:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[enhances] Build our own Dobby","shortMessageHtmlLink":"[enhances] Build our own Dobby"}},{"before":"886c64d0721dfb12f3605161f1182e28e5edc2f8","after":"ed094f1ecc628ed9b362f3493daca07018b03302","ref":"refs/heads/master","pushedAt":"2024-07-22T09:33:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[enhances] UpdateMethodsCodeImpl is inlined on Android 15\n\nTest: manual","shortMessageHtmlLink":"[enhances] UpdateMethodsCodeImpl is inlined on Android 15"}},{"before":"fe304084906c4a86f7a4d17d8c89bfabf94f979a","after":"886c64d0721dfb12f3605161f1182e28e5edc2f8","ref":"refs/heads/master","pushedAt":"2024-07-21T06:05:49.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Support Android S builds with SmallLrtAllocator\n\nFix #68\n事实证明,人总是会在同一个地方掉两次坑。两年啊,两年……\n\nTest: automated","shortMessageHtmlLink":"[core] Support Android S builds with SmallLrtAllocator"}},{"before":"e2a9353d3887891e23db50059f9e78bef1d6641a","after":"fe304084906c4a86f7a4d17d8c89bfabf94f979a","ref":"refs/heads/master","pushedAt":"2024-06-15T03:55:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Reconcile Thumb-2 LDR primitive\n\nCommit 5261124 introduced a new hook-replace primitive which requires a new trampoline. We added it in both arm64 and thumb-2 architectures, the tests passed on arm64 however we never ran it on arm32 before. The trampoline was copied from arm64.S, however we forgot to change the usage of LDVAR to the direct LDR instruction. This cause a compile error because LDVAR does not exist in thumb2.S. In order to fix the error while making it conform to the existing code, we use LDR instead of creating the LDVAR macro.\n\nThanks @wj2008 for triaging and reporting the bug and sending the initial pull request. Fix #70, close #71.\n\nTest: manual, build succeeded and all tests passed on arm32","shortMessageHtmlLink":"[core] Reconcile Thumb-2 LDR primitive"}},{"before":"07d98115c781c8adb10bd25522ef866e75379174","after":"e2a9353d3887891e23db50059f9e78bef1d6641a","ref":"refs/heads/master","pushedAt":"2024-05-02T11:56:57.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[app] Take basic Xposed hooking APIs into tests\n\nTest: XposedHookTest passed","shortMessageHtmlLink":"[app] Take basic Xposed hooking APIs into tests"}},{"before":"ede7312c4cbbe76cab48dc19fc851ec3587b5bfc","after":"07d98115c781c8adb10bd25522ef866e75379174","ref":"refs/heads/master","pushedAt":"2024-05-02T04:02:59.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Refactor ELF parser\n\n- Give it a full life, rename it from ElfImg to ElfImage\n- Use separated fields to store sections from debugdata, prevent real .symtab and .strtab sections from being overridden\n- Fix a calculation error when reading .strtab section from debugdata\n- Remove useless fields and logs\n\nTest: automated\n- Passed on Android 14 QPR2 (libart.so contains both .symtab and debugdata) google/bluejay/bluejay:14/AP1A.240405.002/11480754:user/release-keys\n- Passed on OnePlus/PJE110/OP5CF9L1:14/TP1A.220905.001/U.1616f40-1-2:user/release-keys (libart.so contains both .symtab and debugdata)\n- Passed on Xiaomi/vince/vince:12/SP1A.210805.016/eng.srinan.20211013.182737:eng/test-keys (libart.so contains both .symtab and debugdata, libart-compiler.so contains only a corrupted debugdata)\n- Passed on Android 15 DP1 (libart.so contains only debugdata) google/bluejay_beta/bluejay:VanillaIceCream/AP31.240119.016/11414567:user/release-keys","shortMessageHtmlLink":"[core] Refactor ELF parser"}},{"before":"6d82d78964c6b95704f91c1c68ecb4d8438cade9","after":"ede7312c4cbbe76cab48dc19fc851ec3587b5bfc","ref":"refs/heads/master","pushedAt":"2024-04-27T13:01:14.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Rewrite pending hook implemenation\n\nIn the previous implemenation, we defer hooking until class initialization is complete, which relies on FixupStaticTrampolines hooks to monitor class initializations. However, on newer Android versions, instead of using art_quick_resolution_trampoline, class initializations can be triggered by interpreter, which already holds execution info at that time. After initialization completed, it directly uses known info to execute the method, ignoring our method entry, thus our hooks won't be invoked.\nIn this CL, we introduce a new implementation: don't postpone hooking, instead we install the hook immediately, but rely on FixupStaticTrampolines hooks to restore our hook every time it gets overrode.\nThis new flow only supports replacement mode, as inline mode will cause the trampoline to be written into art trampolines (art_quick_resolution_trampoline).\n\nTest: Manual and automated tests passed. Tested devices:\n- google/bluejay/bluejay:14/AP1A.240405.002/11480754:user/release-keys\n- OnePlus/PJE110/OP5CF9L1:14/TP1A.220905.001/U.1616f40-1-2:user/release-keys\n- google/blueline/blueline:10/QQ3A.200605.001/6392402:user/release-keys\n- Redmi/gauguinpro/gauguinpro:11/RKQ1.200826.002/V12.5.7.0.RJSCNXM:user/release-keys\n- xiaomi/whyred/whyred:9/PKQ1.180904.001/V11.0.2.0.PEICNXM:user/release-keys\n- Xiaomi/vince/vince:12/SP1A.210805.016/eng.srinan.20211013.182737:eng/test-keys\n- samsung/j3ltectc/j3ltectc:5.1.1/LMY47X/J3109KES1ARG1:user/release-keys","shortMessageHtmlLink":"Rewrite pending hook implemenation"}},{"before":"f65b03270cd2acb6f106f10f6ae05755dfae7a2d","after":"6d82d78964c6b95704f91c1c68ecb4d8438cade9","ref":"refs/heads/master","pushedAt":"2024-04-26T07:50:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Support parsing .gnu_debugdata\n\nlibart.so is now stripped on Android 14 QPR2 & Android 15. Previously I thought Google will revert related changes so I didn't implement it, but they didn't :(\nI really want to keep it zero-dependency, but .gnu_debugdata is xz-compressed. So, added xz-embedded as submodule. Thanks to its developers for bring us such a good project!\n\nTest: Remove AndroidHiddenApiBypass, AccessHiddenApiTest still passed on Android 14 QPR2 devices. Pine no longer complains about related missing symbols in logcat.","shortMessageHtmlLink":"[core] Support parsing .gnu_debugdata"}},{"before":"2361b14d2465b63e470bcb1e0f35c1d08538ed97","after":"f65b03270cd2acb6f106f10f6ae05755dfae7a2d","ref":"refs/heads/master","pushedAt":"2024-04-26T05:41:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[xposed] Don't use new threads to load XSharedPref by default\n\nUsing new threads to load file can crash the runtime. I think it's an art bug from AOSP but workarounding it is the only thing we can do.\nAdd a new API `setLoader` so users can opt-in the old behavior.\n\nTest: build ok","shortMessageHtmlLink":"[xposed] Don't use new threads to load XSharedPref by default"}},{"before":"c5b30cf43e048de939f9b361799c04ec3281bab8","after":"2361b14d2465b63e470bcb1e0f35c1d08538ed97","ref":"refs/heads/master","pushedAt":"2024-03-25T11:00:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Publish 0.2.9","shortMessageHtmlLink":"[core] Publish 0.2.9"}},{"before":"c5c96c372a0eed0fb145cf94c68620a4b29833b9","after":"c5b30cf43e048de939f9b361799c04ec3281bab8","ref":"refs/heads/master","pushedAt":"2024-03-09T06:13:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Exclude unwanted bits when parsing boolean\n\nWhen getting arguments from the stack, we take every argument as uint64_t which is 8 bytes, thus the value may contain unneeded bits belonging to the next argument. We already exclude unwanted bits when parsing other types of parameters, but we forgot to do so for boolean whose size is 4 bytes (aligned upward from 1 bit). Also add a new test to cover this edge case.\n\nFix #63","shortMessageHtmlLink":"[core] Exclude unwanted bits when parsing boolean"}},{"before":"c25261e3a306b85f949eae84956770b5623a5567","after":"c5c96c372a0eed0fb145cf94c68620a4b29833b9","ref":"refs/heads/master","pushedAt":"2024-02-17T02:03:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Initial Android 15 (VanillaIceCream) DP1 support\n\nKnown issues: libart.so is now stripped so many symbols cannot be found.","shortMessageHtmlLink":"[core] Initial Android 15 (VanillaIceCream) DP1 support"}},{"before":"96550c8eb7ce26630e372ab557f50106430258c5","after":"c25261e3a306b85f949eae84956770b5623a5567","ref":"refs/heads/master","pushedAt":"2024-02-05T13:36:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[xposed] Relaese 0.1.0 with XposedBridge.deoptimizeMethod added\n\nSome modules need this method to work","shortMessageHtmlLink":"[xposed] Relaese 0.1.0 with XposedBridge.deoptimizeMethod added"}},{"before":"d320896aab197362bb1752db604780a166dbc14d","after":"96550c8eb7ce26630e372ab557f50106430258c5","ref":"refs/heads/master","pushedAt":"2024-02-03T05:27:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Add proguard rules","shortMessageHtmlLink":"Add proguard rules"}},{"before":"21c2db0343aaab8c6ad9abfb60ef6f2e91e4149d","after":"d320896aab197362bb1752db604780a166dbc14d","ref":"refs/heads/master","pushedAt":"2024-01-05T07:45:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Publish core 0.2.8 & enhances 0.0.4\n\nFix #49","shortMessageHtmlLink":"Publish core 0.2.8 & enhances 0.0.4"}},{"before":"fd829ccd359604e0f0f14147cd6eb7c8b411c31c","after":"21c2db0343aaab8c6ad9abfb60ef6f2e91e4149d","ref":"refs/heads/master","pushedAt":"2024-01-05T07:40:36.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Publish core 0.2.8 & enhances 0.0.4","shortMessageHtmlLink":"Publish core 0.2.8 & enhances 0.0.4"}},{"before":"5baf8256b5ea907c8ddf04d9803d67bfd2327986","after":"fd829ccd359604e0f0f14147cd6eb7c8b411c31c","ref":"refs/heads/master","pushedAt":"2023-12-10T03:30:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Fix unpredictable usage of STREX\n\nInstruction format: STREX , , [{, #imm}]\n\nHowever, this instruction requires (Rd != Rt && Rd != Rn), otherwise its behavior is unpredictable. Check ARM DDI 0406C.b, A8.8.213. for more info. (What an amazing design, love come from China...)\n\nThis means if we want to use this instruction, we must find 3 registers available. We know that R0 and IP (R12) are available, so we need to find another register for use. In AAPCS/ATPCS, R0-R3 are caller-save registers, but R1-R3 is used to pass arguments. If we use R1-R3, the arguments will be clobbered. R4-R11 are callee-save, IP (R12) is already used, and making use of R13-R15 is impossible and also unpredictable.\nAfter the above analysis, we can determine that we must choose a register in R4-R11 to use. In normal programs, the usual approach is to push the register we use onto stack and later restore it from stack. But in art, I'm not sure if changing SP will affect CC (Concurrect Copying Garbage Collector). In ART, R4 is neither managed callee-save, nor argument register, althrough it is native callee-save but the value coming from managed code can be clobbered. But I'm also not sure if clobbering it is safe. Anywhy, better safe than sorry.\nHow can we backup a register without pushing it onto the stack? Well, the stack is allocated when the thread being created, and when allocating space on the stack, we just decrease SP by the size we allocate, and then [SP+size]~[SP] is available for use. Because the stack grows downward, [STACK END]~[SP] can never be occupied. We (ab)use the un-allocated space on the stack to store R4. Because we do not call any function, and ART always call sigaltstack() that makes sure signal handlers use another stack, no function calls will happen between storing and restoring, so it's safe to use un-allocated stack space.\n\nFix #36, fix #37","shortMessageHtmlLink":"[core] Fix unpredictable usage of STREX"}},{"before":"66725401ad131bd225ae239f2bc9fa27b20de44a","after":"5baf8256b5ea907c8ddf04d9803d67bfd2327986","ref":"refs/heads/master","pushedAt":"2023-12-09T15:10:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Update Android Studio\n\nNDK is stuck at r25.2 because we want to keep Android 4.4 support.\n\nBefore, targetSdk was intentionally set to 27 because more strict SELinux rules apply to apps with targetSdk >= 28, which prevent me from making crash tombstones world-readable. When I wrote the code, I only had a old Android Lolipop device with a broken USB tail plug, and when I connected it to PC, it always disconnects immediately, making it almost impossible for me to program. At that time, the only way to debug my project was to make the crash tombstones world-readable so I can use a file manager to view them and find the cause。。。You can imagine how helpless a junior high school student without any money feels。。。\nTo make sure we can find if any new changes affect us on time, set it to the latest Android version.","shortMessageHtmlLink":"Update Android Studio"}},{"before":"f772373ba0558c9f5de7e0c6a7c378b39005d7e0","after":"66725401ad131bd225ae239f2bc9fa27b20de44a","ref":"refs/heads/master","pushedAt":"2023-12-02T10:26:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[app] Test hidden api policy as well","shortMessageHtmlLink":"[app] Test hidden api policy as well"}},{"before":"535834429e3f8e75494889a92bb3ad6b4559f72d","after":"f772373ba0558c9f5de7e0c6a7c378b39005d7e0","ref":"refs/heads/master","pushedAt":"2023-12-02T10:01:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Don’t proactively trigger JIT by default\n\nFix #51","shortMessageHtmlLink":"[core] Don’t proactively trigger JIT by default"}},{"before":"d8f0896279dc672fede15e19cc6944547417d27c","after":"535834429e3f8e75494889a92bb3ad6b4559f72d","ref":"refs/heads/master","pushedAt":"2023-12-01T12:18:06.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[doc] Add warnings about an ART bug\n\ntiann/FreeReflection#60","shortMessageHtmlLink":"[doc] Add warnings about an ART bug"}},{"before":"77603c4ab1e3a834aecaef4de9462fe8a9ac41d2","after":"d8f0896279dc672fede15e19cc6944547417d27c","ref":"refs/heads/master","pushedAt":"2023-11-22T10:53:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Tested Android 14 support","shortMessageHtmlLink":"Tested Android 14 support"}},{"before":"1f0d3b1afd275f3f297449dc3559a910034d92b2","after":"77603c4ab1e3a834aecaef4de9462fe8a9ac41d2","ref":"refs/heads/master","pushedAt":"2023-10-27T12:21:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Hooking UpdateMethodsCode only for Android < 7 (#53)\n\nCo-authored-by: Simon Lardinois ","shortMessageHtmlLink":"Hooking UpdateMethodsCode only for Android < 7 (#53)"}},{"before":"c4311796e8be8128c0e9e39ebed8a3366399528b","after":"1f0d3b1afd275f3f297449dc3559a910034d92b2","ref":"refs/heads/master","pushedAt":"2023-09-11T06:59:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Publish core 0.2.7 & enhances 0.0.3\n\nThere are still some issues with pending hook, which are planned to be resolved in the next release","shortMessageHtmlLink":"Publish core 0.2.7 & enhances 0.0.3"}},{"before":"72e025d620500a52fa08a747be3a779ff0564c6e","after":"c4311796e8be8128c0e9e39ebed8a3366399528b","ref":"refs/heads/master","pushedAt":"2023-09-10T14:54:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[enhances] Attempt to hook all functions that might update methods' entry\n\nJust commit some random changes from my local changes :(\nPending hook needs a huge refactor to make it completely work on Android 12+","shortMessageHtmlLink":"[enhances] Attempt to hook all functions that might update methods' e…"}},{"before":"cf5335c00256b5c429db14372e51d6992203908e","after":"72e025d620500a52fa08a747be3a779ff0564c6e","ref":"refs/heads/master","pushedAt":"2023-09-10T11:37:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"Update compiling toolchains\n\nThe latest Android Studio Canary refuses to work with NDK r23.1.\n\nWanna go back to work on this project, but there are some unresolved issues and I'm just so tired to do anything :(\nWish antidepressants would work faster and better","shortMessageHtmlLink":"Update compiling toolchains"}},{"before":"6eccbf1668bd5b2c883239db488523e4ad7c35a6","after":"cf5335c00256b5c429db14372e51d6992203908e","ref":"refs/heads/master","pushedAt":"2023-07-12T12:59:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Add missing parameters in Ruler.m1 (#41)","shortMessageHtmlLink":"[core] Add missing parameters in Ruler.m1 (#41)"}},{"before":"405929e8a8dcad687729c71c52595895322c2eab","after":"6eccbf1668bd5b2c883239db488523e4ad7c35a6","ref":"refs/heads/master","pushedAt":"2023-07-08T09:06:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"canyie","name":"残页","path":"/canyie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31466456?s=80&v=4"},"commit":{"message":"[core] Prevent nterp flags being applied to ruler method\n\nWe expect access flags of the ruler method is kAccPrivate|kAccStatic|kAccNative|kAccPublicApi. However, on Android 12+, class linker may add addition access flags to a method if nterp can handle it. In which case, we will fail to search access_flags_ from ArtMethod structure if we fails to get its access flags by reflection.\nAccording to source code, class linker will skip this step for a method if its parameter list contains floating point type or long integer type. So we add a float to its parameters.","shortMessageHtmlLink":"[core] Prevent nterp flags being applied to ruler method"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEjcud6gA","startCursor":null,"endCursor":null}},"title":"Activity · canyie/pine"}