adb获取手机里安装的apk

操作步骤 手机用数据线连上电脑,开启USB调试 运行你要拷贝的APK,并使用adb获取包名 # MAC || Linux adb shell dumpsys activity | grep "top-activity" # Window adb shell dumpsys activity | find "top-activity" 获取包名位置 adb shell pm path com.apkfuns.demo 取出包名 adb pull /data/app/com.apkfuns.demo-1.apk <桌面上路径> 注意事项 如果apk是直接运行进去手机的,直接安装会报错: Failure [INSTALLFAILEDTEST_ONLY: installPackageLI] 方法1: adb push

阅读全文...

android手机调试看不到部分logcat日志

看不到logcat的原因是部分手机默认关闭了Log.v(),Log.d(),Log.i()显示,日志毕竟要输出要文件,对性能还是有影响的,对普通用户而已日志没有任何作用,当然这就苦了开发者了,下面提供部分手机的解决方案,欢迎大家补充。 华为手机解决方案 进入手机拨号界面 输入*#*#2846579#*#* 输入完毕后自动跳转到测试界面 依次选择ProjectMenu–>后台设置–>LOG设置–>在此可以看见一些列关于LOG的设置(打开或关闭) 按照自己的需求设置LOG开关 奇酷手机解决方案 在桌面点击拨号,在拨号盘输入“*20121220#”,进入工程模式 找到日志输出等级,点击进入 点击“Log print enable”,选择“Enable” 点击“Java log level”,选择“LOGV

阅读全文...

让gradle task可以执行多次

在开发中遇到这个需求,google也没能找到答案,最后自己解决了,分享出来给大家参考参考。 默认情况下gradle的task都是只能执行一次的,如下面的代码 task a { println("execute function a !!!!!!!!!!!!!!!!!!"); } a.execute() a.execute() a.execute() 运行后发现task a仅仅执行了一次,为啥只执行一次呢,开始分析通过查看 AbstractTask::execute()方法如下 public final void execute() { this.getExecuter().execute(this, this.state, new DefaultTaskExecutionContext()); this.state.rethrowFailure(); } 通过观察发现是the.state的问题,state的类型是TaskStateInternal,里面记录了task当前的状态,executing正在执行,executed执行完成等等 知道这个状态影响了task多次执行,但是我们还是没有解决我们的问题,再来看看TaskExecuter类,TaskExecuter是一个接口,

阅读全文...

java.lang.IllegalArgumentException: Illegal character (d83d)

在使用XmlSerializer过程中遇到了下面这个错误 java.lang.IllegalArgumentException: Illegal character (d83d) at org.kxml2.io.KXmlSerializer.reportInvalidCharacter(KXmlSerializer.java:144) at org.kxml2.io.KXmlSerializer.writeEscaped(KXmlSerializer.java:130) at org.kxml2.io.KXmlSerializer.attribute(KXmlSerializer.java:465) 这是安卓4.4及以下系统的bug,XmlSerializer类不支持emoji表情,google在android4.4以上已经修复了这个问题 崩溃的具体原因目前不是很清楚,网上说是XmlSerializer忽略utf-16编码情况,具体也不是很了解,等后续再来研究一下。 支持4.4以下解决方案如下 将XmlSerializer serializer = Xml.newSerializer(); 替换成XmlSerializer

阅读全文...

Intellij Idea输出可运行jar包

在开发中经常可以看到可以执行的jar包,如paros.jar,双击运行就可以出现界面,而且是跨平台的,只要安装了jdk的设置都可以运行,那这样的jar包是怎么打包的呢? 这得说起我一个apk重签名的工具,一个利用java awt开发的可视化小工具,想把它打包成一个jar包供其他用户使用,我是用的开发工具是intellij idea,像eclipse不在讨论范围,android studio和这个操作一致。 开始上图了,选择右上角项目菜单 选择Artifaces,然后点击+号添加JAR 选择程序入口Main方法 如果你的项目仅仅只有代码,没有起亚资源文件需要打入包中,那你可以直接Apply,然后ok了,跳过下面添加图片这一步。 我的项目中包括了一张图片,resigner.png,而且在res目录下 我要怎么把图片文件打包到jar文件中呢 创建一个文件夹,名字和你包含图片的文件夹一直,我这里叫res 再在这个res目录中包含进去我们项目中的图片, 选择add cope of 选择File,会弹出提示框让我们选择文件 选择resigner.png图片 然后Apply ok就完成配置了 想打包的话,选择Build -> Build Artifacts就好了

阅读全文...

android gradle统计并输出各task耗时

在build.gradle添加一下代码,编程完成后会输出耗时>100ms的任务 public class BuildTimeListener implements TaskExecutionListener, BuildListener { private Clock clock private times = [] @Override void buildStarted(Gradle gradle) { } @Override void settingsEvaluated(Settings settings) { } @Override void projectsLoaded(Gradle gradle) { } @Override void projectsEvaluated(Gradle gradle) { } @Override void buildFinished(BuildResult result) { println "Task spend time:" for (time in times) { if (time[

阅读全文...

解决CollapsingToolbarLayout和ViewPager滚动矛盾

参考文档:https://gist.github.com/iPaulPro/1468510f046cb10c51ea 项目用用到了CollapsingToolbarLayout和ViewPager,ViewPager中又包含一个ListView, 类似上图中效果,但是做完的效果是ListView不能推动CollapsingToolbarLayout滚动,困扰了我好久,解决方案请参考上述链接,我贴出我解决问题用的布局 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"

阅读全文...

使用charles抓取https请求

这里就不介绍charles怎么抓取http请求了,相信看这篇文章的读者都是冲着https来的。我也在网上看了很多教程,都说去http://www.charlesproxy.com/ssl.zip 下载证书,but这个网址根本访问不了啊,翻墙也访问不了,都是骗纸。最后东拼西凑终于搞定了https的抓取,分享出来给大家。 1.设置charles 在Proxy setting中选择SSL选项,选中Enable SSL proxying,点击Add添加host * 、 port  443 在help中选择Install Charles CA SSL Certificate 载入证书 会弹出提示让输入密码,输入完密码会跳转到钥匙串界面 看到一个没认证charles的证书,双击这个证书,选择始终信任,关闭页面系统会让再次输入密码,输入完密码就搞定了证书安装。 都设置好了别忘了重启charles!!! 2.给手机设置证书 下载证书到手机:ssl.zip , 解压后复制到手机,看看手机能不能直接安装charles-proxy-ssl-proxying-certificate.crt 或者浏览器扫描二维码直接下载到手机 (微信,微博不支持下载就不用我说了吧)

阅读全文...

android和PHP对称加密AES加密算法

开发中经常遇到这样的场景:在服务器端对数据进行加密,客户端进行解密,这样可以有效的防止数据在传输过程中被截取,客户端和服务器采用相同的密钥进行加解密,AES加密算法是个不错的选择。 php算法 "; echo Security::decrypt($a, $key); class Security { public static function encrypt($input, $key) { $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $input = Security::pkcs5_pad($input, $size); $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, ''); $iv

阅读全文...