1. Mount Protocol Error

    使用Vbox装了Ubuntu 10.04系统,使用Shared folder,在用下面的命令Mount时始终出现Protocol Error:

    2017/08/10 Ubuntu

  2. IntelliJ Java class path & module source

    sdk class path指定了Project依赖的类的声明,这些类由实际的运行环境提供,在IntelliJ中这些类只是参与编译,并且为编辑器提供语法提示和自动完成功能,module source表示Project中包含的源代码,这些源代码由我们自己创建。编辑器同样也需要依赖module source提供语法提示和自动完成功能。

    2017/08/10 Idea

  3. Android HandleView HotspotY

    这个字段表示的含义如下图,矩形框表示HandleView的边框,中间的线到顶部的距离表示mIdeaVerticalOffset,p0,p1分别表示不同情况的触摸点。这条线的作用类似于Hotspot,表示手指拖动整个HandleView时,这条线始终在手指的触摸点上。具体是通过下面几点做到的:

    2017/08/10 Android

  4. Android Activity Stack

    ActivityStackSupervisor负责处理Activity的启动模式和Intent Flag。

    2017/08/10 Android

  5. 添加PPA

    You can add a PPA location with the command

    2017/08/09 Android

  6. TTF文件格式简介

    TTF文件中重要的几个表:

    2017/08/09 Font

  7. WeakReference包装Listener对象

    被观察对象使用WeakReference包装 Listener对象的原因是,当Listener对象不再被使用时,可以不用通知被观察对象移除Listener对象,WeakReference会自动释放它包装的Listener对象。

    2017/08/09 Java

  8. 常用命令

    ``` 创建ssh key ssh-keygen -t rsa -b 4096 -C “your_email@example.com” xclip -sel clip < ~/.ssh/id_rsa.pub

    2017/08/09 Shell

  9. Android主题和样式

    <style name="Theme"/> <style name="Theme.NoTitleBar"/>

    2017/08/09 Android

  10. Android资源覆盖

    在5.0上进行资源覆盖,是在属性级别进行覆盖,而不是style级别。

    2017/08/09 Android

  11. Android的进程是怎么相互通信的

    为什么需要解决进程间通信的问题?因为操作系统为了安全考虑把进程的内存空间相互隔离,一个进程无法读写另外一个进程的内存空间,这样的话,一个进程需要和另外一个进程通信时,就必须借助其他设施,这样就有了很多为解决进程间通信的程序出现,Binder就是其中之一。由于应用场景和侧重点不一样,这些程序的实现和使用方式也有很大的区别。

    2017/08/09 Android

  12. Android界面是什么时候显示出来的

    显示器会按一定的频率从FrameBuffer获取图形数据显示到屏幕上,一般是每秒60次。但FrameBuffer的数据在交给显示器之前,需要先由SurfaceFlinger进行合成处理,因为屏幕上会同时显示好几个窗口,比如状态栏、导航栏和应用窗口,SurfaceFlinger将这些窗口提交过来的FrameBuffer合成为一个FrameBuffer,然后再交给显示器。对应用窗口来讲,一个FrameBuffer不够用,因为将FrameBuffer提交给SurfaceFlinger后,可能开始绘制下一帧界面,但FrameBuffer已经提交给了SurfaceFlinger,所以需要再申请创建一块FrameBuffer,用来存放该帧的界面数据。如果界面绘制的比较快,可能会再申请创建第三块甚至更多的FrameBuffer。这些FrameBuffer会被组织成队列,叫做BufferQueue,SurfaceFlinger从BufferQueue中获取FrameBuffer,进行合成。合成的过程是交给HardwareCompositor处理,处理完后再交给显示器显示。

    2017/08/09 Android

  13. GDB调试Android程序

    从Android源码中prebuilts/misc目录下选择对应平台的gdbserver文件复制到手机上,比如arm平台就选择android-arm/gdbserver/gdbserver等,可能不能版本的android源码的prebuilts目录结构不一样,但基本是按平台组织的,找到对应的版本的gdbserver不会花太多时间。

    2017/08/09 Android

  14. 字体处理

    一个字体文件中一般不会包含所有UNICODE的字形,例如AndroidClock.ttf字体文件只包含了只有数字、A、P、M这三个字母i以及冒号”:”这几个字符的字形。但TextView指定使用这个字体文件时,这个字体文件了包含的字符会按这个字体文件的字形显示,而其他字符比如B、C等就会按另外一个字体文件的字形来显示。那么另外一个字体文件是怎么来的呢?答案就是fallback.xml文件定义了在这种找不到字符的字形的情况下,应该从哪些备用的字体文件中找字形。

    2017/08/09 Shell

  15. Android中的ClassLoader

    Android中有如下ClassLoader

    2017/08/09 Android

  16. 自定义编译环境中使用Robolectric

    下载源码后,首先执行scripts目录下的install-robolectric.sh,这个脚本会将Android Sdk中的support包、maps包等安装到~/.m2/仓库中,如果提示版本不兼容,那么改一下出错项目的pom.xml配置,并且改一下安装脚本,然后执行mvn package打包robolectric。

    2017/08/09 Android

  17. 重定义BUILD_PACKAGE的APK安装路径

    install_path := $(TARGET_OUT_DATA)/miui/xxxxl

    2017/08/09 Android

  18. 编译OTA包

    首先调用make target-files-package编译ROM的所有文件

    2017/08/09 Android

  19. Android Build

    C++编译禁用优化选项

    2017/08/09 Android

  20. Git clone 问题

    如果在clone时出现sign_and_send_pubkey: signing failed: agent refused operation

    2017/08/08 Android

  21. Android Library Project发布jar

    Android Library Project只能发布aar,加入下面的配置后,可以同时发布jar

    2017/08/08 Android

  22. Android Gradle NDK

    Gradle NDK 编译有四种方式

    2017/08/08 Android

  23. Android AAPT分析和使用(草稿)

    xmlns声明

    2017/08/08 Android

  24. Android Sqlite数据库压力测试

    query数据库5000次,Cursor不关闭不释放,导致android.database.sqlite.SQLiteException: unable to open database file (code 14)错误,大概在1000次时出现这个错误

    2017/08/08 Android

  25. Doclava分析

    Javadoc扫描源文件生成RootDoc对象传递给Doclava。

    2017/08/08 Android

  26. Activity重新创建后Intent的状态

    由于横竖屏切换等Config change导致的Activity重新创建时,Intent的状态变化是这样的,系统给App发送通知需要重启Activity,App的ActivityThread收到通知后,将需要重启的Activity当前的intent保存下来,然后让Activity执行onPause到onDestroy的流程来销毁当前Activity,然后重新创建Activity的实例,并执行attach操作,如果将之前保存的Intent不是空值的话,就把之前保存的Intent扔给这个Activity。

    2017/08/08 Android

  27. BackupManagerService备份APK的特点

    备份Apk时会写下installerName,源码在writeAppManifest方法中

    2017/08/08 Android

  28. Android Canvas Draw问题

    Canvas.clipRect以及相关clip方法不会改变坐标系。

    2017/08/08 Android

  29. Sed参数

    sed -e 's/a/b/g'

    2017/07/31 Sed

  30. Gradle使用SNAPSHOT版本的依赖模块问题

    参考链接:https://docs.gradle.org/current/userguide/dependency_management.html#sub:dynamic_versions_and_changing_modules

    2017/07/31 Gradle

  31. 如何编写Gradle插件

    Gradle插件有三种方式

    2017/07/31 Gradle

  32. Android Gradle Plugin资源合并逻辑分析

    Android Gradle插件处理资源时会将APP和Library的资源合并,如果资源重名,会用APP的资源覆盖Library的资源。

    2017/07/31 Gradle

  33. GitLab配置手册

    如何修改仓库clone url sudo vim /etc/gitlab/gitlab.rb ,将external_url修改成对应的地址 sudo gitlab-ctl reconfigure

    2017/07/31 GitLab

  34. Apache2 配置https

    第一步创建自签名证书

    2017/07/31 https

  35. MVC MVP MVVM有什么区别(草稿)

    要弄清楚MVC MVP MVVM之间有什么区别,首先要弄清楚他们是什么。这三者都是关于软件架构的,是哪一层面的架构呢?这三者都是把软件分为UI层和业务逻辑层,以及引入中间层来隔离UI层和业务逻辑层,区别在于如何进行隔离。 本文会解释这三者的区别,并分别用代码演示他们是什么以及异同点。

    2017/07/31 设计模式

  36. Ubuntu 16.04 安装 jdk 7

    Ubuntu 16.04 安装 jdk 7

    2017/03/29 jdk

  37. Git 使用 patch

    Git 生成 Patch

    2017/03/29 Git

  38. 我与地坛

    我与地坛

    2017/03/27

  39. Gradle属性配置

    在Gradle配置文件中中可以通过如下方式访问Project的属性:

    2017/03/02 Gradle

  40. 查看证书

    查看证书的命令是

    2017/02/26 HTTPS相关

  41. 证书链

    看这篇文档可以很好的理解证书链

    2017/02/26 HTTPS相关

  42. Android导入CA证书的方法

    方法一:将证书文件复制到系统目录

    2017/02/26 HTTPS相关

  43. Android使用NanoHttpd部署https服务器

    按照这个链接 在代码中include NanoHttpd库

    2017/02/26 HTTPS相关

  44. Android启动流程(草稿)

    一直比较好奇,当我们拿起手机,按下电源键的那一刻,手机里面都发生了什么事情?

    2017/02/26 Android