使用此方法,你可以
1.将4.5版本的X卡相机移植到任意机型
2.开启你自己5.0版本的原相机的X卡模式
书接上回,思路跟K40的5.0版移植基本相同。就是在dex文件的“com/mi/device”目录下用二分法不断将Mix Fold 2的“Zizhan.java”的配置方法替换进我K40的“Alioth.java”内,最后找到开启X卡的方法名,然后向上搜索找到调用位置,替换。
下面是修改方法。
注:4.5版本的混淆形如“invoke-virtual {v0}, LOooO0OO/OooO0oO/OooO00o/OooO0OO;->o00o0Oo0()Z”,5.0版本的混淆形如“invoke-virtual {v0}, Ld/i/a/b;->a5()Z”。
0.(找到支持X卡相机的安装包)辨别方法:在安装包“resources.arsc”文件的“string”目录下的“string-zh-rCN”下搜索“徕卡”,能搜到的相机都支持。否则不支持。之后打开安装包内的dex文件。
1.(开启X卡界面)搜索“MiThemeCompat.java”,应该在目录“Lcom/android/camera2/compat/theme/MiThemeCompat”下。搜索构造方法“clinit”,找到该方法下第一个形如“invoke-virtual {v0}, LOooO0OO/OooO0oO/OooO00o/OooO0OO;->o0O0OOO0()Z
”,进入之后的目录,把方法的返回值替换为1。
2.(开启X卡框架)还是在刚才的“MiThemeCompat.java”下,搜索方法“getImpl”,找到该方法下第一个形如“invoke-virtual {v0}, LOooO0OO/OooO0oO/OooO00o/OooO0OO;->o000OOo0()Ljava/lang/String;”(可能位置比较靠后),进入之后的目录,把方法的返回值替换为"cv.MiThemeCompatCV"。
3.(开启X卡水印)搜索“Leica.java”,应该在目录“Lcom/android/camera2/compat/theme/custom/cv/cvwatermark/type/Leica”下。搜索方法“isEnabled”,找到该方法下第一个形如“invoke-virtual {v0}, LOooO0OO/OooO0oO/OooO00o/OooO0OO;->Ooooo0o()I
”,进入之后的目录,把方法的返回值替换为0。
4.(开启切换X卡模式入口)搜索“CameraSettings.java”,应该在“Lcom/android/camera/CameraSettings”下。搜索方法“getCvType”,或者第一个有字段“key = "isSupportCvType"”的方法,找到该方法下第一个形如“invoke-virtual {v0}, LOooO0OO/OooO0oO/OooO00o/OooO0OO;->o00o0Oo0()Z”,进入之后的目录,把方法的返回值替换为1。
5.(开启X卡算法)搜索“MiThemeOperationFilterCv.java”,应该在“com/android/camera2/compat/theme/custom/cv/filter/MiThemeOperationFilterCv”下。搜索方法“setCvStyleEffect”,找到该方法下第一个形如“invoke-virtual {p0}, LOooO0OO/OooO0oO/OooO00o/OooO0OO;->o00o0OOo()Z”,进入之后的目录,把方法的返回值替换为1。
6.(加入X卡滤镜和可乐标)在有X卡相机的系统的“system/product/overlay”目录下,提取“MiuiCameraOverlayLeicaing.apk”的apk文件。把这个apk做成模块刷到你的“system/product/overlay”目录下,或者解包手工合入你的安装包内。
7.(适配机型)如果在“com/mi/device”目录或者根目录下有你的机型的配置文件“XXX.java”(“XXX”是你提取相机的机型的代号,如13Ultra是“ishtar”),且你的相机能正常进入,则可跳过此步。如果你的相机提示无法连接,则需要修改。但是修改后依然不能保证你的相机全部功能正常使用。搜索“sget-object v0, Landroid/os/Build;->DEVICE:Ljava/lang/String;”全部替换为“const-string v0, "XXX"”。
至此X卡相机修改完成。感谢你的支持。