
手机软件开发笔记
文章平均质量分 80
iamcxl369
软件工程师,Android, IM
展开
-
[Feature phone系列]从MMI看手机启动过程
手机启动方式:1>USB连接到手机; 当手机通过USB连接到PC端的时候,因为手机显示充电图标,所以手机操作系统已经启动了.只是当前状态属于深度睡眠状态.2>长按开机键; 通常用户都是通过这个方式进行开关机操作.用户长按开机键,那么系统开始上电启动.后面关于这部分会重点展开描述.3>闹钟开机; 关机后闹钟响起了,而且还可以提示用户,让用户选择是否开机原创 2012-05-23 20:28:12 · 3631 阅读 · 0 评论 -
Linux清理
Linux不会产生垃圾文件.但是使用的人会!!0x0. Linux使用多余的内核文件.sudo aptitude purge ~ilinux-.*\(\!`uname -r|cut -d- -f1-2`\)~i[0-9](清理Ubuntu系统的缓存、垃圾、多余内核)[https://my.oschina.net/zhangqingcai/blog/23994]0x1. Android开发Andro原创 2017-04-05 11:01:16 · 372 阅读 · 0 评论 -
Android混淆proguard-rules.pro proguard-project.txt
Android混淆proguard-rules.pro proguard-project.txt常用的一些配置# To enable ProGuard in your project, edit project.properties# to define the proguard.config property as described in that file.## Add project原创 2017-04-29 15:45:58 · 2532 阅读 · 0 评论 -
Android Studio logcat 常用功能
logcat不过滤adb logcat按照日志级别过滤adb logcat | grep "^E"过滤字符串adb logcat | grep "-"过滤包名单个应用日志adb logcat | grep "^..[com.jingdong.app.mall]"多个应用日志adb logcat | grep "^..[anti] \|^..[dalvik]"adb logcat原创 2017-03-03 19:21:04 · 3583 阅读 · 1 评论 -
Activity中重载的dispatchTouchEvent 和 onTouchEvent不被调用
0x01. dispatchTouchEvent 和 onTouchEvent不响应dispatchTouchEvent做为Activity的顶层事件分发接口怎么会不响应?肯定是被拦截了!0x02. getWindow().getCallback()在Activity的onResume中把getWindow().getCallback()打印出来. Android应用程序窗口(Activity)原创 2017-07-11 17:57:00 · 2845 阅读 · 2 评论 -
webview:"找不到网页" or "page not found"
webview:”找不到网页” or “page not found”解决办法:实现WebViewClient下面的方法:@SuppressWarnings("deprecation")@Overridepublic void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {原创 2017-06-27 15:21:32 · 1125 阅读 · 0 评论 -
JAVA类的生命周期和虚拟机加载过程
类的生命周期这些是以前看JVM规范时候做的笔记,也不算笔记就是抄的原文. 做Android开发用java开发应用,必然需要了解java中的类的生命周期,这样才能在碰到问题的时候大概的清楚是怎么回事,知其然,并且知其所以然.在Java虚拟机中一个java类从文件加载到到内存生成对象到虚拟机销毁这个java对象总共要经过: 加载,链接,初始化,使用,卸载这五个步骤. 其中链接部分又可以分为:验证,准备,原创 2017-08-31 12:33:32 · 264 阅读 · 0 评论 -
Handler实现原理和流程分析
Handler对象0x01. 使用场景:-0x1.1. 线程间通信 Handler最常见的是在Activity中实现工作线程和UI线程的通信功能.比如在异步线程的回调中不能直接处理UI,那么则必须通知UI,让主线程去处理UI相关的业务逻辑.-0x1.2. 工作线程中事件的有序业务逻辑处理HandlerThread+Handler来实现一个工作线程中有序的多任务处理框架.0x02. 用法示例下面代码原创 2017-09-19 20:11:06 · 505 阅读 · 0 评论 -
error: insufficient permissions for device: verify udev rules
error: insufficient permissions for device: verify udev rules0x01. 查看设备➜ ~ lsusb Bus 001 Device 002: ID 8087:8001 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 003 D原创 2017-10-25 18:03:30 · 1061 阅读 · 0 评论 -
从点击Laucher中的图标开始分析加载一个app的第一个界面的流程
0x01. LauncherLauncher就是一个android应用,管理管面上的应用安装和卸载.Launcher在Android源码中的位置.packages/apps/Launcher2orpackages/apps/Launcher3对于Android来说,Launcher也是一个App只是它启动比较早而已, Launcher管理着用户安装到手机上的app,即用户通过点击可以打开一个app或原创 2017-11-17 12:47:47 · 1136 阅读 · 0 评论 -
通过SQLiteDatabase看谷歌如何封装sqlite3
0x01. SQLiteDatabase.java0x01. 代码位置/frameworks/base/core/java/android/database/sqlite/SQLiteDatabase.java这里有两个变量定义可以了解一下意思: // Stores reference to all databases opened in the current process.原创 2017-12-27 18:23:18 · 644 阅读 · 0 评论 -
android中使用svg
0x01. gradle版本v2.0以上0x02. appcompat版本高于下面也可以compile 'com.android.support:appcompat-v7:23.2.0'0x03. build.gradle在module的buidl.gradle中添加下面属性.defaultConfig { vectorDrawables...原创 2018-04-09 21:56:47 · 255 阅读 · 0 评论 -
Ubuntu16.04编译ffmpeg
0x01. downlaodhttps://ffmpeg.org/download.html0x02. 解压目录在ffmpeg-3.4.2中.0x03. 配置编译脚本文件名称随便取. 注意文件中的NDK相关配置修改为自己本机的.#! /bin/bash#NDK=D:/Android/sdk/ndk-bundleNDK=/home/iamcxl369/andr...原创 2018-04-11 17:53:50 · 1009 阅读 · 3 评论 -
解决 Failure [INSTALL_FAILED_TEST_ONLY]
0x01. 问题: Failure [INSTALL_FAILED_TEST_ONLY]➜ debug git:(master) ✗ adb install app-debug.apk app-debug.apk: 1 file pushed. 4.0 MB/s (176160 bytes in 0.042s) pkg: /data/local/tmp/app-debug.apk...原创 2018-04-25 15:34:03 · 421 阅读 · 0 评论 -
android图片资源规范以及Bitmap内存管理分析
0x01. 设备兼容性0x01. 屏幕适配0x01. Convert dp units to pixel units px = dp * (dpi / 160)dpi是根据每个设备不同的,必须从设备上获取.DPI: Dots (or Pixels) Per Inch计算公式dpi = ( square_root ( horizontal_pixel...原创 2018-05-03 19:09:08 · 311 阅读 · 0 评论 -
[Ubuntu]Sqlcipher命令行下解密微信WCDB数据库
0x01.安装Sqlcipher Ubuntu下使用SQLCipher命令行对db加密windows下的安装步骤忽略 自行搜索0x02.解密数据库通过sqlcipher打开加密数据库,解密后就可以直接通过SQL语句操作数据库.➜ sqlcipher-master ./sqlcipher z-cipher.dbSQLCipher version 3.20....原创 2018-05-03 20:14:36 · 3768 阅读 · 2 评论 -
wireshark抓包:分析阿里小蜜网络通信方式
为什么需要抓包有时候需要分析一些软件的网络请求过程,分析一些有价值的信息.操作步骤手机连接到电脑分享的WiFi上1. 选择监听目标网卡我的是电脑上通过猎豹分享了一个热点给手机.2. 通过分享WiFi热点的软件找到手机的ip3. 在Wireshark上过滤这个ip按照IP过滤ip.addr == 192.168.191.2ip.addr == 192.168.191.2 and sslip.addr原创 2017-03-09 19:33:17 · 2193 阅读 · 0 评论 -
Android IPC 进程间通信
Android进程间通信1. BroadcastYou can use BroadcastReceiver when you want the communication between Service and Activity in your application. Broadcast run in main thread. 使用场景: 既可以IPC又可以进程间.2. MessagerMe原创 2017-04-06 20:06:39 · 255 阅读 · 0 评论 -
[Feature phone系列]手机芯片结构介绍
目前市场上我们听到MTK,展讯,晨星,互芯等方案提供商,他们提供的某一型号的手机芯片处理器.实际上该手机芯片由三部分芯片封装到一起:上电顺序:ABB->DBB->RF1>数字基带处理器[DBB]双处理器:[Ex]– 104-MHz ARM7TDMI microprocessor unit (MPU)– 104-MHz digital signal processo原创 2012-06-29 14:13:52 · 1830 阅读 · 0 评论 -
[feature phone系列]彩信的架构和实现原理
彩信的架构和实现原理 MMS的标准是由WAP Forum和3GPP这两个组织制定的.MMS可以通过MS发送MMS可以通过网站发送,因为使用的是SMTP协议.MMSC, Multimedia Message Service Center. // 存储转发机制MMS内容服务部分完全通过互联网和MMSC相连MMS采用类似HTML的SMIL语言来编辑短信内容原创 2012-07-05 20:42:07 · 3344 阅读 · 0 评论 -
[Feature phone 系列]字符信息的显示和绘制原理
这里的内容,不属于完全原创,引用了比部分内容,由于之前整理的时间过早,所以没有记录出处,如有雷同请包涵.1>首先必须有字库,这里只涉及点阵字库[不同国家,不同大小] 因为点阵字库在嵌入式设备上使用最广。 有点:方便开发,执行效率高; 缺点:通用性差[不能对字体进行缩放等操作].2>如何添加字库?首先澄清一些概念:字符:是各种文字和符号的总称,包括各个国原创 2012-07-09 19:51:20 · 2250 阅读 · 0 评论 -
[Feature phone系列]Software Architecture 比较
Feature phone 软件架构:[MTK] MeeGo软件架构: Windows phone7 软件架构: Windows 8 软件架构:原创 2012-07-09 18:12:21 · 2674 阅读 · 0 评论 -
[feature phone系列]平台架构和MMI framework
GSM-GPRS Architecture介绍:[图片来自:论山寨手机与Android联姻 【7】 MTK手机软件系统---邓侃]GSM/GPRS Protocol Layer: L1: Layer1,Physical layer[物理层]L2: Layer2,Data link laye原创 2012-07-09 16:51:13 · 1699 阅读 · 0 评论 -
[Feature phone系列]浏览器软件架构和实现原理
2007年在手机游览器领域,WAP是主流标准. 当时全球掌握WAP浏览器核心技术的公司大概只有4家:美国的Openwave(Motorola);瑞典的Teleca(Obigo);日本的Access(Netfront);韩国的Infraware;手机上浏览器的实现架构分析:UC, 最先推出C/S(客户端/服务器)处理架构,将主要数据处理内容交由中间件服务器去做,手机端只原创 2012-07-11 20:53:38 · 2785 阅读 · 0 评论 -
中国国内无线通信网络介绍
目前中国国内只有三家无线网络运营商:中国移动,中国联通,中国电信1G,第一代移动通讯技术: 是基于模拟信号的通讯技术,Ex,港台电影中的大哥大.2G,第二代移动通信技术:[9.6Kpbs] 是基于数字信号的通信技术. PHS[Personal Handy phone System],个人手提移动电话系统. 起源于日本,作为2G在日本得到蓬勃发展.国内根原创 2012-07-08 01:46:02 · 2465 阅读 · 0 评论 -
[Feature Phone系列]完整手机启动过程
完整手机启动过程因为主流的feature phone都使用的是Nucleus Plus作为手机的操作系统,同时我自己也所接触的feature phone平台也是基于nucleus Plus的操作系统,所以这里我就以基于Nucleus 操作系统的phone的系统启动过程做个剖析.Nucleus操作系统简述 Nucleus操作系统是一个单进程,多任务的实时操作系统,由原创 2012-07-01 01:56:40 · 1633 阅读 · 0 评论 -
[Feature phone系列]电话本模块设计和实现
电话本模块是手机中不可或缺的一个功能模块.主要用到一下几个内容:1.算法 查找算法[快速检索一个联系人] 排序算法[按中英文排序,保存联系人]2.存储 联系人信息保存到SIM卡 联系人信息保存到Nor flash上3.AT指令 联系人的查找\保存都是通过AT指令访问SIM卡来实现;模块、SIM、Flash之间的关系如下图:原创 2012-07-03 15:23:23 · 831 阅读 · 0 评论 -
[feature phone系列]GSM网络框架浏览
GSM网络框架浏览:从上图中我们可以看到:UserA......User F===>Mobile Station[MS]其中UserA属于PLMN1User B/C/D/E属于PLMN2中的某一个BTSUser F属于PSTN中的一个终端.术语解释:MS:Mobile Station[移动站]BTS: Base Transceiving Stat原创 2012-07-02 17:01:49 · 640 阅读 · 0 评论 -
Android framework 源代码调试
1.下载源代码;2.添加源代码到SDK中; a.由于源代码的目录树和SDK中android.jar包中对应的class文件的目录树不一样.因此这个是个麻烦问题,不过网上有人已经写了一个pyhon脚本专门来干这个事情. 地址: http://code.google.com/p/android-scripting/source/browse/tools/f原创 2012-08-07 11:34:36 · 1731 阅读 · 0 评论 -
[Feature phone系列]短信模块的设计和实现
短信实现架构,参考文献>首先,短信的收发有三种模式:Block mode, Text mode and PDU[Protocol data unit] mode.我们使用的是PDU模式,当手机启动之后,电池、搜网完成、SIM卡初始化完成、电话本初始化完成之后,开始初始化SMS. AT+CNMI=2,1,2,1,0 //设置新短信的显示模式.详细参数格式如下: +原创 2012-07-04 19:47:56 · 3372 阅读 · 0 评论 -
Android应用外网ip和地理位置解析
Android应用如何获取外网ip国内有很多大厂有公开的接口:淘宝,搜狐等我这里使用了搜狐的接口获取的IP地址。http://pv.sohu.com/cityjson?ie=utf-8 返回结果:var returnCitySN = {"cip": "223.227.152.81", "cid": "510100", "cname": "四川省成都市"};然后把这个结果解析出来就可以了.如何获取原创 2017-02-28 18:12:22 · 1254 阅读 · 0 评论 -
通过反编译的方式分析阿里手淘小蜜的实现方式
为什么要分析手淘的小蜜因为可能需要做一款类似的产品.如何分析 反编译手淘 查看UI布局 分析步骤1. 反编译手淘查看反编译后的源码分析实现框架2. 反编译资源文件查看资源信息(没有得逞)3. 通过hierarchyviewer分析布局结构3. 通过抓包分析网络请求分析结果通过反编译android淘宝app,发现: 1. 手淘使用的是atlas插件框架 2. 小蜜是作为一个插件原创 2017-03-09 19:36:39 · 2458 阅读 · 1 评论 -
android资源文件编译/解析/查找
android资源文件编译/解析/查找apk安装后资源分布路径/data/app /data/app-lib /data/davlik-cache/ /data/data/packagename/ /data/system/packages.list /data/system/packages.xml 不觉得奇怪吗? drawable目录在哪里? 编译成二进制后的xml在哪里?全原创 2017-03-24 19:52:36 · 706 阅读 · 0 评论 -
Android打包签名信息配置
0x01 创建签名配置文件 这个文件不要传到仓库中!!!工程根目录下sign.properties 文件内容(替换为自己的签名文件)STORE_FILE=d:/xxx/debug.keystoreSTORE_PASSWORD=androidKEY_ALIAS=AndroidDebugKeyKEY_PASSWORD=android0x02 修改模块的签名配置App module中的buil原创 2017-04-10 19:53:55 · 941 阅读 · 0 评论 -
Android应用架构开发和维护常见问题
0x01. 兼容性0x01. Android版本兼容性<接口容错>0x02. Android ROM缺陷<特定ROM的错误>0x03. 依赖包兼容性0x04. so库的兼容性0x05. 客户端本地接口扩展兼容性0x02. 业务功能0x01. 服务不能常驻内存0x02. 协议问题如何监控?0x03. 业务问题 如何发现?分析?定位?...原创 2018-05-03 21:09:27 · 301 阅读 · 0 评论