环境

Docker:alpine:3.18.3@sha256:c5c5fda71656f28e49ac9c5416b3643eaa6a108a8093151d6d1afc9463be8e33

> apk update
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/community/x86_64/APKINDEX.tar.gz
v3.18.3-247-g11534630dd2 [https://dl-cdn.alpinelinux.org/alpine/v3.18/main]
v3.18.3-257-gc78192d5e42 [https://dl-cdn.alpinelinux.org/alpine/v3.18/community]
OK: 20066 distinct packages available
......

阅读全文

环境:Windos11 Hyper-V
CPU:i5-10400
GPU:AMD RX5500XT
RAM:32G

逍遥模拟器

配置:Android 9 x64 6C8G OpenGL

国内较早支持 Hyper-V 的,之前开发一直在用。

声音和画面都稍微卡顿。

MuMu 模拟器 12

配置:Android 12 x64 6C8G Vulkan

声音和画面明显卡顿,比逍遥还拉胯。

国际蓝叠5

配置:Android 9 x64 6C8G OpenGL 1920x1080 320DPI

安装后默认最高画质,个人觉得没有卡顿感觉。泰裤辣!

总结

蓝叠5 > 逍遥 > MuMu

用 DirectX 会闪退哦。

阅读全文

老是丢邮件,研究了一下,呜呜呜~

国内主流免费域名邮箱

腾讯企业邮箱

  • 需要绑定微信或手机
  • 绑定微信通知

网易免费域名邮箱

  • 未加密邮件

阿里云企业邮箱

  • 绑定钉钉通知
  • 官方电脑客户端会导致 PING 不稳定。

一个域名不要绑定多个域名邮箱平台

A 域名同时绑定腾讯和网易,解析记录为网易。
B 域名绑定腾讯。

B 向 A 发送邮件

理想:B -> 腾讯邮局 -> 网易邮局 -> A

现实:B -> 腾讯邮局 -> (A)?

B 向腾讯邮局发送一封邮件,腾讯邮局发现 A 在本邮局有绑定登记,就会直接把邮件送腾讯邮局的 A 账号下,而不会发给网易邮局。

阅读全文

XposedHelpers.findAndHookMethod(ClassLoader.class,
        "loadClass", String.class,
        new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                if ("com.example.MainActivity".equals(param.args[0])) {
                    param.setResult(getClass().getClassLoader()
                            .loadClass("com.example.TargetActivity"));
                }
            }
        });

阅读全文

摸索了一天,Method.invoke() 会无限套娃,不知道还有没有其他方法。

public class MainHook implements IXposedHookLoadPackage {

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {

        // 要 Hook 的子类
        Class<?> clazzActivity = XposedHelpers.findClassIfExists(
            "com.example.MainActivity",
            lpparam.classLoader
        );
        
        // 要 Hook 的父类
        Class<?> clazzSuperActivity = clazzActivity.getSuperclass();

        // Hook 父类方法
        XposedHelpers.findAndHookMethod(clazzSuperActivity,
                "onCreate", Bundle.class,
                new XC_MethodHook() {});

        // Hook 子类方法
        XposedHelpers.findAndHookMethod(clazzActivity,
                "onCreate", Bundle.class,
                new XC_MethodHook() {
                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        param.setResult(null);
                        Method method = clazzSuperActivity.getDeclaredMethod("onCreate", Bundle.class);
                        XposedBridge.invokeOriginalMethod(method, param.thisObject, param.args);
                    }
                });
       }
}

阅读全文