ZenBrush(禅宗画笔)反编译后二次开发(电子签名_毛笔带笔锋的效果)

本文介绍了如何通过反编译ZenBrush应用,提取其毛笔笔锋效果的核心代码,并进行二次开发,应用于电子签名功能。作者详细阐述了从寻找合适的画笔效果,到反编译、注入log、分析关键参数,再到回编、签名、安装和调试的过程。最终,通过在自己的项目中复用这些核心代码,实现了带有毛笔效果的电子签名功能。
摘要由CSDN通过智能技术生成

最近POS机项目有个需求,电子签名,就是一个画板上签名。看了一些文章,把贝塞尔曲线算法用上了效果也

不怎么样,然后在Github上也找了些demo,有个brushes还不错,但没有毛笔笔锋那种效果,找啊找,终于找到

ZenBrush(中文名:禅宗画笔,好像是日本人开发的),的确做的非常好,但没有sdk,也没有开源。

想着能否通过反编译的方式,复用里面的核心代码!通过几天尝试可行,但是,如果二次开发的apk挂在了复用里

面的代码时,就没办法通过java代码修复了,只能通过smail修复了,这个需要反编译相关知识了。

来张毛笔带笔锋的效果图,没有书法功底别见笑。


现在分析下二次开发思路:

1. 写一个打log的文件ApktoolLog.java,方便在反编译的smail文件中注入代码(通常一行,根据需要在

ApktoolLog加函数,争取注入时只要一行代码),下面贴下ApktoolLog.java的简易代码(但很实用哦)

package com.example.helloworld;

import android.util.Log;

public class ApktoolLog {

    private static final String TAG = "ApktoolLog";

    public static void printStackTrace() {
        for (StackTraceElement i : Thread.currentThread().getStackTrace()) {
            Log.e(TAG, "" + i);
        }
    }

    public static void e(String info) {
        Log.e(TAG, "String:" + info);
    }

    public static void e(int info) {
        Log.e(TAG, "int:" + info);
    }

    public static void e(long info) {
        Log.e(TAG, "long:" + info);
    }

    public static void e(float info) {
        Log.e(TAG, "float:" + info);
    }

    public static void e(double info) {
        Log.e(TAG, "double:" + info);
    }

    public static void e(float paramFloat1, float paramFloat2,
            float paramFloat3, float paramFloat4, float paramFloat5,
            float paramFloat6, float paramFloat7, float paramFloat8) {
        Log.e(TAG, "paramFloat1:" + paramFloat1 + ", paramFloat2:"
                + paramFloat2 + ", paramFloat3:" + paramFloat3
                + ", paramFloat4:" + paramFloat4 + ", paramFloat5:"
                + paramFloat5 + ", paramFloat6:" + paramFloat6
                + ", paramFloat7:" + paramFloat7 + ", paramFloat8:"
                + paramFloat8);
    }

}
将它反编译成smail文件ApktoolLog.smali拷贝到对应目录。

2.反编译原始的ZenBrush.apk在smail中注入log代码,得到关键参数值,下面详解设置画笔样式的关键参数

$ grep -rn "setBrushType" ZenBrush
匹配到二进制文件 ZenBrush/build/apk/lib/armeabi-v7a/libZenBrushRenderer.so
匹配到二进制文件 ZenBrush/build/apk/lib/armeabi/libZenBrushRenderer.so
ZenBrush/smali/jp/co/psoft/zenbrushfree/library/a.smali:209:    invoke-virtual {v0, v1}, Ljp/co/psoft/ZenBrushLib/ZenBrushRenderer;->setBrushType(I)V
Ze
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值