<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shan987的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/shan987</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shan987]]></copyright><item><title><![CDATA[怎样从user版本中提取应用数据]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/52386902</link><guid>https://blog.youkuaiyun.com/shan987/article/details/52386902</guid><author>shan987</author><pubDate>Wed, 31 Aug 2016 17:13:06 +0800</pubDate><description><![CDATA[1、备份应用数据：adb backup -noapk packageName
2、下载adbextractor： http://sourceforge.net/projects/adbextractor/
3、解开备份文件： java -jar abe.jar unpack ./backup.ab backup.tar
4、从 backup.tar里找想看的数据，经过测试，db、files都]]></description><category></category></item><item><title><![CDATA[计时替代gettimeofday，更轻、更精确]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/52386773</link><guid>https://blog.youkuaiyun.com/shan987/article/details/52386773</guid><author>shan987</author><pubDate>Wed, 31 Aug 2016 17:02:24 +0800</pubDate><description><![CDATA[inline uint64_t rdtsc() {
    uint32_t lo, hi;
    __asm__ __volatile__ (
      "xorl %%eax, %%eax\n"
      "cpuid\n"
      "rdtsc\n"
      : "=a" (lo), "=d" (hi)
      :
      : "%ebx", "%ecx]]></description><category></category></item><item><title><![CDATA[关于Xposed​]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/51752292</link><guid>https://blog.youkuaiyun.com/shan987/article/details/51752292</guid><author>shan987</author><pubDate>Fri, 24 Jun 2016 14:06:24 +0800</pubDate><description><![CDATA[Xposed（一）框架入门  转自：http://my.oschina.net/wisedream/blog/471292
Xposed（二）深入Module 转自：http://my.oschina.net/wisedream/blog/476147

原理

Xposed替换了/system/bin/app_process可执行文件，在启动Zygote时加载额外的jar文件（/dat]]></description><category></category></item><item><title><![CDATA[Android应用层View绘制流程]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/51745002</link><guid>https://blog.youkuaiyun.com/shan987/article/details/51745002</guid><author>shan987</author><pubDate>Thu, 23 Jun 2016 16:58:53 +0800</pubDate><description><![CDATA[父视图提供尺寸大小的一个能力，子视图最终尺寸与父视图能力、子视图期望的关系如下：







父视图能力尺寸



子视图期望尺寸



子视图最终允许尺寸




EXACTLY + Size1


EXACTLY + Size2


EXACTLY + Size2




EXACTLY + Size1


fill_pa]]></description><category></category></item><item><title><![CDATA[Android NavigationDrawer实现]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/51735754</link><guid>https://blog.youkuaiyun.com/shan987/article/details/51735754</guid><author>shan987</author><pubDate>Wed, 22 Jun 2016 17:17:03 +0800</pubDate><description><![CDATA[官方文档Creating a Navigation Drawer: https://developer.android.com/training/implementing-navigation/nav-drawer.html



转自：http://www.codeceo.com/article/android-navigationdrawer.html#0-tsina-1-32796-]]></description><category></category></item><item><title><![CDATA[关于android中matrix变换]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/51720532</link><guid>https://blog.youkuaiyun.com/shan987/article/details/51720532</guid><author>shan987</author><pubDate>Mon, 20 Jun 2016 14:34:39 +0800</pubDate><description><![CDATA[转自：http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html





Android Matrix





Matrix的数学原理

平移变换

旋转变换

缩放变换

错切变换

对称变换

代码验证

 

Matrix的数学原理

在Android中，如果你用M]]></description><category></category></item><item><title><![CDATA[关于android instrumentation的理解、使用]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/50511439</link><guid>https://blog.youkuaiyun.com/shan987/article/details/50511439</guid><author>shan987</author><pubDate>Wed, 13 Jan 2016 16:09:47 +0800</pubDate><description><![CDATA[一般的应用不太会用到instrumentation，所以网上对其介绍也比较少。
但因其强大的跟踪application及activity生命周期的功能，在一些android 应用测试框架中被做为基类使用。
instrumentation的官方文档：http://developer.android.com/intl/zh-cn/reference/android/app/Instrumentat]]></description><category></category></item><item><title><![CDATA[读classloader笔记]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/50476962</link><guid>https://blog.youkuaiyun.com/shan987/article/details/50476962</guid><author>shan987</author><pubDate>Thu, 07 Jan 2016 15:57:17 +0800</pubDate><description><![CDATA[原文章： http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html


1、class loader 组成了层次链条结构。当前class loader加载class时，首先交给其parent class loader加载，如果parent class loader无法加载则依次往父加载器的]]></description><category></category></item><item><title><![CDATA[统计dex或jar文件中的方法]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/50330969</link><guid>https://blog.youkuaiyun.com/shan987/article/details/50330969</guid><author>shan987</author><pubDate>Wed, 16 Dec 2015 17:45:09 +0800</pubDate><description><![CDATA[apk改后缀为zip解压。
1、对于dex文件：cat xxx.dex | head -c 92 | tail -c 4 | hexdump -e '1/4 "%d\n"' 输出方法总数
2、对于jar文件：
查看所有类jar -t xxx.jar; 
转成dex文件后按1中方法：
        $ANDROID_HOME/sdk/build-tools/android-4.3.1/d]]></description><category></category></item><item><title><![CDATA[android 进程自杀再重启的方法]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/50237575</link><guid>https://blog.youkuaiyun.com/shan987/article/details/50237575</guid><author>shan987</author><pubDate>Wed, 09 Dec 2015 16:04:59 +0800</pubDate><description><![CDATA[PendingIntent restartIntent = PendingIntent.getActivity(mContext, -1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager almgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);]]></description><category></category></item><item><title><![CDATA[一些挺有用的git命令]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/50145497</link><guid>https://blog.youkuaiyun.com/shan987/article/details/50145497</guid><author>shan987</author><pubDate>Wed, 02 Dec 2015 11:07:13 +0800</pubDate><description><![CDATA[git reset ${file} 从cache区取消，回到修改状态]]></description><category></category></item><item><title><![CDATA[利用tcpdump+wireshark对android进行抓包分析]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/47667073</link><guid>https://blog.youkuaiyun.com/shan987/article/details/47667073</guid><author>shan987</author><pubDate>Fri, 14 Aug 2015 20:12:07 +0800</pubDate><description><![CDATA[集成一个第三方jar包后，每次启动应用流量消耗就有20~30k。不知道为什么会需要这么多，总在后台随意的启动http请求，实在是太不负责任了。
那么就看看到底发了哪些请求吧！
首先准备工具：
1、下载tcpdump : http://www.androidtcpdump.com/
2、将tcpdump推送到手机（手机需要已root），adb push tcpdump /system/xbi]]></description><category></category></item><item><title><![CDATA[关于android 5.0报错:dlopen failed: couldn't map ... Permission denied]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/47004781</link><guid>https://blog.youkuaiyun.com/shan987/article/details/47004781</guid><author>shan987</author><pubDate>Wed, 22 Jul 2015 15:57:13 +0800</pubDate><description><![CDATA[这应该是一个极少应用能遇到问题，既然被我碰到了，而且为此排查折腾了好几天，跟人约好打球都没去成，还是在这里写一下。如果有后来者也同样遇到，或许可以省些力气。
我的应用当中集成了一个安全相关的sdk，而这个sdk中使用的so是加过壳的。
它加载native so的方式是：java System.loadLibrary ——> native so 壳 ——> 内存中脱壳 ——> 写到/data/d]]></description><category></category></item><item><title><![CDATA[android中定时任务的两种实现]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/46831689</link><guid>https://blog.youkuaiyun.com/shan987/article/details/46831689</guid><author>shan987</author><pubDate>Fri, 10 Jul 2015 15:44:00 +0800</pubDate><description><![CDATA[目前有两种方式参考：
1、使用AlarmManager，reboot之后定时任务被清除
如：
        AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(Constant.ServiceNam]]></description><category></category></item><item><title><![CDATA[tomcat报"The servlets named [x] and [y] are both mapped to the url-pattern[z] which is not permitted"]]></title><link>https://blog.youkuaiyun.com/shan987/article/details/9787133</link><guid>https://blog.youkuaiyun.com/shan987/article/details/9787133</guid><author>shan987</author><pubDate>Tue, 06 Aug 2013 10:20:07 +0800</pubDate><description><![CDATA[原因总结：
1、在web.xml中或者用annotation配置了同一个url-pattern映射， 属于重复配置；
2、做项目的过程中遇到这种情况，最开始使用annotation配置servlet，后来因为还要加一些其他配置就统一改到web.xml中去配置servlet了。用maven命令打包后部署，总是报如上的错误，查了很久终于发现在webapp/WEB-INF/classes目录下有一些]]></description><category></category></item></channel></rss>