
android
激荡数十年
17年专职软件研发,喜欢使用的语言有:python, c, java, go
展开
-
蛋疼的android抓屏处理
蛋疼一:framebuffer里面frame尺寸和屏幕显示尺寸不一致解决: int bpp = vinfo.bits_per_pixel/8;int tmpStrip = finfo.line_length/bpp; 蛋疼二:framebuffer里面双缓冲,起始位置不固定解决: offset = vinfo.xoffset * vinfo.bits_per原创 2011-10-31 15:45:51 · 1320 阅读 · 0 评论 -
大型android应用基础模块划分
•主推MVC框架–模块进行依赖关系拆解,分拆为若干mvc类,不同类不可混–保留Activity,service基础组件,采用聚合方式,并入自己的业务控制逻辑–推广Contentprovider作为重要的标准化数据接口–界面调用采用intent和url两种方式•业务采用插件模式解耦–每个插件实现本身也采用mvc框架,Mvc调用方式遵循mvc设计规范–使用annotatio原创 2015-03-02 21:34:12 · 1410 阅读 · 0 评论 -
自画方式实现TimeLine效果
花了一个星期,完成的TimeLine控件因为产品重新定义,被废弃了,有些不舍,特将半成品贴于此处,希望对类似开发同学有所启发原创 2015-03-20 09:10:51 · 996 阅读 · 0 评论 -
扩展speia特效,支持任意RGB颜色变换矩阵,原理很简单,不解释
private void speiaHack(EffectFactory effectFactory, float [] weights) { mEffect = effectFactory.createEffect( EffectFactory.EFFECT_SEPIA); try { Fiel原创 2015-04-02 10:45:51 · 944 阅读 · 0 评论 -
多国语言strings.xml与excel表格互相转换
翻译只熟悉excel表格,因此做了互转的工具#-*- coding=utf-8 -*-import xml.etree.ElementTreeimport sysdef fetchMap(path): strmap={} for line in file(path): line=line.strip() if '<string' in原创 2015-05-09 08:16:36 · 2829 阅读 · 0 评论 -
android 锁屏破解
import hashlib,itertoolsdest="\x6d\x6b\xe9\xc4\xb3\x32\x1b\xd4\xec\xd4\x40\x96\x36\xc5\xb7\xb0\xe4\x16\xc0\x70"def drawpoint(items): fig=". . .\n. . .\n. . .\n" for i in items: pos=(原创 2015-05-06 00:38:07 · 992 阅读 · 0 评论 -
GPUImage与ffmpeg整合
bool VideoPlayer::DecodeVideoPacket(AVPacket* packet, JNIEnv* env, bool updateTime){ int frameFinished = 0; AVCodecContext* codec_ctx = m_stream_ctx[m_video_stream].codec_ctx; AVStream *stream = m原创 2015-05-06 08:39:56 · 2421 阅读 · 0 评论 -
解决MenuBuilder找不到的问题
每天差不多有千分之一的崩溃率,成为应用崩溃的最大组成,崩溃信息如下:java.lang.NoClassDefFoundError: android.support.v7.view.menu.MenuBuilder at android.support.v7.widget.ActionMenuView.getMenu(ActionMenuView.java:642) at android.sup原创 2017-01-12 17:27:44 · 935 阅读 · 0 评论 -
输入法技术指标拆解
原创 2017-11-05 21:10:32 · 578 阅读 · 0 评论 -
android APM 实现手记
APM(应用性能管理)实现关键点:1,主要由4个子项目组成:1), apm lib:作为agent,app的公共库,实现apm客户端的主要业务逻辑,如汇总,封装,发送;该库必须要在android编译环境下生成,然后对内部引用的第三方库做移包处理,解决被跟踪api的版本兼容问题。2),agent:利用java规范提供的动态或静态插入代码的机制,实现对关键代码的hook,进而触发汇总,上报原创 2017-11-28 02:14:39 · 1512 阅读 · 0 评论 -
改良EventBus
EventBus给工程师带来了统一的生产消费设计模式,大大提升了模块解耦能力,但不同模块间任然存在编译依赖,对应更大型的工程,如不同插件(运行依赖)则支持有限,在此基础上,设计了一套全解耦的消息驱动模型,解决了模块的编译依赖。将EventBus接口分装,做成消息驱动,简化接口package com.jd.mall.data;import java.util.HashMap;impor原创 2015-02-27 18:44:45 · 792 阅读 · 0 评论 -
ColorMatrix计算器
工作需要,开发此工具,算法实现过程如下:用matlab演算矩阵,由于有20个待定系数,意外着有至少20个确定关系需要给出,每个颜色值有4个数值,因此5对颜色则可以唯一定位出一个完整的变换矩阵。用sym进行演算,得出公式,再用wtl开发ui,将公式套入其中。待完善:真正使用场合,往往变换点不到五个,需要凑出新的点; 存在矛盾点,需要将个别边界点的R,G,B,A调整到0~255之外原创 2011-11-22 16:35:32 · 954 阅读 · 0 评论 -
手机功耗分析:比对安捷伦电源数据
import structbinf=file("A new-3g-qq.bin","rb")binf.seek(0x7c)binf2=file("A OLD-3g-QQ.bin","rb")fileheader=binf2.read(0x7c)binf2.seek(0x7c)checkpos=5threhold=0.01avergelen=5def原创 2012-03-23 22:23:09 · 1591 阅读 · 0 评论 -
AxmlParserPY对framework-res.apk反编译失败的修正
AXmlPrinter2中存在一样的问题,原因是framework内的xml编译的时候采用宽字符方式生成字符串表,修正如下:#stringblock.py def getRaw(self, idx): if idx = len(self.m_stringOffsets): return None off原创 2012-10-14 10:23:31 · 1286 阅读 · 0 评论 -
自动注册工厂实例
网络监控项目,初始化时需要对多个任务类注册到类工厂,方便工厂反射,但根据classloader规则,无法初始化与入口类无关的类,因此需要遍历类名,强制加载:public class TaskRunnableFactory { public static abstract class TaskRunnable { protected RunStat runStat = RunStat.原创 2014-01-08 09:23:07 · 865 阅读 · 0 评论 -
apktool反编译资源时出现CastException的一则解决方法
package brut.androlib.res.data.value;public class ResStyleValue extends ResBagValue implements ResValuesXmlSerializable {@Override public void serializeToResValuesXml(XmlSerializer serializ原创 2014-02-18 01:07:56 · 956 阅读 · 0 评论 -
修正apk里面的dex校验信息
dex前端有两重校验,如果校验值不对,会导致安装时出现INSTALL_FAILED_DEXOPT,修正如下:import hashlib,zlib,structdef fixdex(fn): with open(fn,"rb") as f: fdata=f.read() shaf=hashlib.sha1() shaf.update(fda原创 2014-04-22 02:32:14 · 1285 阅读 · 0 评论 -
android数独游戏机器人
import os,sys,timeimport Imageimport sysposinfo0={(0,0):8, (2,1):3,(3,1):6, (1,2):7,(4,2):9,(6,2):2, (1,3):5,(5,3):7, (4,4):4,(5,4):5,(6,4):7, (3,5):1,原创 2014-08-14 15:15:24 · 993 阅读 · 0 评论 -
android应用动态补丁实现新思路
常见补丁做法有:1,对可能变化的类定义出接口,采用java反射技术,动态加载补丁包,完成实例化,但如果补丁实现和host存在交叉依赖,则会因为类名重名导致jvm报错,安全的需要,对模块解耦设计要求很高,使用范围有限2,自定义新的classloader替代context里面原有的classloader,对发生变化的类使用新创建的classloader,此方案一般仅对未加载的activity对原创 2014-11-26 23:13:22 · 1091 阅读 · 0 评论 -
gradle cache转为local Maven库,解决gradle编译依赖包时常被墙
import glob,os,shutilimport distutils.dir_util,distutils.file_utildef mvtoparent(d): for dpath,dnames,fnames in os.walk(d): for fname in fnames: if os.path.splitext(fname)[原创 2015-01-21 11:01:28 · 3876 阅读 · 0 评论 -
解决华为手机EMUI 9之后,GMS无法使用问题
chrome,goolgle play,youtube 这几个经常用的app,在我某一天升级我的华为手机到emui9之后突然用不了了,一直试图解决,找了一堆gms安装器,都不好使。又不想破解boot loader,不愿重刷系统。于是此后装了UC,但天天各种垃圾推送搞得好烦,卸载了。然后用了官方浏览器,但总是觉得别扭。直到今天突发奇想,chrome,google play等gms应用无法启动的原因无...原创 2019-08-19 22:56:58 · 11937 阅读 · 0 评论