Android实战开发指南
文章平均质量分 69
以实战为线索,针对Android开发中遇到的各种问题统一归纳总结,一一攻破,总而达到Android开发水平质的飞跃,你值得拥有。
IT先森
Android界的大牛忒多了,我大胆的估摸一下有生之年我是达不到那个高度了!但是怎么着我也要在这浩瀚的博客世界留下我的痕迹才行!
展开
-
git删除相关历史提交记录,相关文件保持当前状态
git删除相关历史提交记录,相关文件保持当前状态引言 新年新气象,趁着现在新的一年开始项目的事情还不是非常繁忙的时候,多整点下酒菜。这不实战类型的博客记录又开始了!当然实战类型的博客,肯定是有相关的实际需求才会诞生的,这里我们来简单复盘一下实际需求的诞生和由来!场景一:原来我们有一个私有的仓库不对外开放,当开发到一定程度的时候,希望对外开放,在准备开发前当然得检查一番不是,但是在检查的时候,我们误提交了某些隐私文件(肯定不是朋友们想的那种隐私了啊,莫多想。这里的隐私可能牵涉到密码啊,原创 2022-02-08 17:12:26 · 2293 阅读 · 1 评论 -
repo sync repo reset: error: entry ‘comand.py ‘ not uptodate . cannot merge
repo reset: error: entry 'comand.py ’ not uptodate . cannot merge引言 又有好久没有写点偏重实战类型的博客了,最近一直都在捣鼓源码分析和项目相关事情,是时候来点偏重实战类型的博客了。捯饬点啥实战的呢,这不吃着火锅,唱着歌,正准备下载下AOSP的源码来玩一玩,可是当我切换到一台新的服务器上第一次正准备repo sync下载AOSP源码的时候,怎么也不成功,一直提示如下错误:Fetching: 100% (784/784), done原创 2021-11-15 14:22:00 · 6114 阅读 · 5 评论 -
Android Q userdebug模式framework层调试指南
Android Q userdebug模式framework层调试指南引言 随着Android版本的迭代,原来先前的一些调试方法都发生了相应的变化譬如我们常见的framework层的调试,这里我们简单的来说明一下Android Q版本userdebug如何调试framework层!注意这里的Android版本为Q(10),且模式为userdebug!这点需要注意。一.快速调试service.jar 由于这是实战性的东西,没有啥好过多语言性描述的!直接上步骤:1.构建好编原创 2021-06-29 18:44:21 · 2375 阅读 · 10 评论 -
解决Android logcat: Unexpected EOF!方法指南
logcat: Unexpected EOF!This means that either the device shut down, logd crashed, or this instance of logcat was unable to read logmessages as quickly as they were being produced.If you have enabled significant logging, look into using the -G option t原创 2021-03-05 14:24:35 · 26123 阅读 · 13 评论 -
Android 11 unexpected LOCAL_MODULE_CLASS for prebuilts: FAKE
unexpected LOCAL_MODULE_CLASS for prebuilts: FAKE引言 又有好久没有写点偏重实战类型的博客了,最近一直都在捣鼓源码分析和项目相关事情,是时候来点偏重实战类型的博客了。捯饬点啥实战的呢,正好最近在迁移项目到Android 11上面,发现了一些不少Android 11相较于以前Android版本的一些特性,这里我就分析一个在Android 11上面预编译不支持错误的解决小实战。其错误吗如下:build/make/core/main.mk:368: wa原创 2020-12-10 10:20:35 · 2762 阅读 · 2 评论 -
Android通过adb shell命令查看当前与用户交互的前台Activity
Android通过adb shell命令查看当前与用户交互的前台Activity前言 好久没有写点实战类型的博客了,最近一直都在捣鼓源码分析的,是时候来点实战类型的博客了。在Android的实际开发或者项目支持的时候,不知道小伙们有没有遇到过这种情况需要定位到某一个界面的Activity信息,虽然接着Android的IDE工具可以做到,但是有时候我们希望能有更快的方法能定位到这个界面信息,这个时候adb shell命令的强大就体现出来了。来我们实操一把!注意:本次实际操作是基于Android原创 2020-09-09 11:08:26 · 8123 阅读 · 8 评论 -
Android adb安装时强制应用App以32位或者64位运行
Android adb安装时强制应用App以32位或者64位运行 前言 不要问我为什么会写这么奇葩的博客问题,因为我这是被客户的应用给揉捏的啊。我们的终端是Android 64位的,然后客户提供了一个应用说怎么在我们的终端上运行不了!好吗,那就适配一下就好了吗,可是客户一口肯定的说适配了64位的so库,是我们提供的api接口有问题。尼玛,客户是上帝没有办法,只能拿出强硬的证据来说服对方了。 一. 问题定位 既然客户说适配了,我们也不反驳我们先强制应用以32位运行看看是否OK.原创 2020-07-27 11:56:56 · 14557 阅读 · 12 评论 -
Android获取和设置系统环境变量指南
Android获取和设置系统环境变量前言 在Android源码的分析过程中经常会看到System.getenv(“xxx”)和getenv(“xxx”)以及Os.getenv(“xxx”)获取Android系统的环境变量值,本篇的重点不是分析代码的调用逻辑,而是讲解怎么在Android开发源码环境下增加和在Android终端环境下增加/查看系统环境变量。废话不多说开干!一. Android源码环境下增加环境变量 有过Linxu开发相关经验的童靴们应该都知道,对于添加环境变量一原创 2020-07-03 21:21:03 · 7521 阅读 · 2 评论 -
Android调试源码正确姿势打开ALOGV
Android调试源码正确姿势打开ALOGV前言 当我沉浸在Android C++的世界中,准备通过其相关的ALOGV日志显示出来的时候,却发现怎么在logcat里面也找不到相关的日志,也许对Android ALOG日志有一定了解的会说实在不行通过ALOGD,ALOGW,ALOGE显示出来不就好了。这个是可以做到,但是不能通过相关的宏进行控制不是十分友好,而且如果Android原来的ALOGV打印的很多,难不成一个个的去修改。在本篇章我将带领打过彻底了解ALOGV的控制机制。注意:A原创 2020-07-03 21:17:26 · 10234 阅读 · 9 评论 -
Android连接/断开扫描枪时屏幕刷新异常解决分析
Android连接/断开扫描枪时屏幕刷新异常解决分析前言 当你吃着火锅,唱着歌在Android终端上面连接扫码枪(包括蓝牙 USB等等)准备进行扫码工作时,突然屏幕一闪刷新了,造成临时加载的数据丢失了。本篇章就是为了解决这个问题的。一.现象和整套解决方案1.1 现场复盘 插入和拔出扫码枪时演示demo效果如下:1.2 分析原因 扫描枪连接时是将其作为外部物理输入设备,即物理键盘,而安卓在改变屏幕方向、接入外部键盘时都是弹出隐藏键盘时都是手机状态改变,会导致重新执行o原创 2020-07-03 21:31:48 · 1535 阅读 · 3 评论 -
Android 9 (P) recovery升级Map of ‘@/cache/recovery/block.map‘ failed问题分析指南
Adnroid Precovery升级Map of '@/cache/recovery/block.map’failed问题分析指南前言 自从Android 4.4将SELinux加入Android以后,这个东西虽然说有了安全但是在开发中经常会遇到一些莫名其妙的问题,本篇今天要说的就是就是由于SELinux规则问题导致的Map of '@/cache/recovery/block.map’failed无法升级问题。注意:本篇讲解的代码是在Android P 高通8953平台。一.问题复盘原创 2020-07-03 21:15:47 · 3942 阅读 · 4 评论 -
Android 9 (P)版本解决VNDK library: XXX‘s ABI has EXTENDING CHANGES
Android P版本解决VNDK library: XXX’s ABI has EXTENDING CHANGES前言 此时的我吃着火锅唱着歌,进行着Android P(此P非彼P,Android 9)的适配工作。我真的只能说每次Android版本的迭代更新,都是对我们的一次炼狱般的摧残啊,各种适配啊,我真的想说fuck the coding。但是吐槽归吐槽,为了我热爱的coding...原创 2020-07-03 21:33:21 · 9933 阅读 · 14 评论 -
Android 9 (P)非SDK API限制调用开发指南
Android P内部API限制调用开发指南原创 2020-07-03 21:34:50 · 2780 阅读 · 4 评论 -
Android P适配以太网功能开发指南
Android P适配以太网功能开发指南前言 此时的我吃着火锅唱着歌,进行着Android P(此P非彼P,Android 9)的适配工作。我真的只能说每次Android版本的迭代更新,都是对我们的一次炼狱般的摧残啊,各种适配啊,我真的想说fuck the coding。但是吐槽归吐槽,这不就得适配Android P的以太网功能。一.具体需求和成果展示 1.1 ...原创 2020-07-03 21:36:47 · 6742 阅读 · 23 评论 -
Android 9 (P)在user模式下无法使用fastboot烧录怎么破
Android P在user模式下无法使用fastboot烧录怎么破 前言 吃着火锅唱着歌,进行着Android P(Android 9)的适配,在烧录了Android user版本正式固件以后,为了调试想通过fastboot烧录本地的userdebug版本。可是,可是突然发现fastboot怎么也烧录不了了,烧录不了了。当然不会是fastboot工具坏了,一定是Android版...原创 2020-07-04 14:35:14 · 2248 阅读 · 3 评论 -
Android xml里面product的值来自哪里以及怎么影响编译?
Android xml里面product的值来自哪里以及怎么影响编译?前言 做过Android Settings开发的小伙伴们应该都知道,在其xml文件里面有根据product配置的选项,可以根据不同的product场景切换不同的资源。那么各位没有考虑过这些product的值是来自那里,以及怎么影响Settings或者其它使用product的App显示的呢。好吗,今天我将带领大伙解...原创 2020-07-04 14:43:16 · 2170 阅读 · 8 评论 -
Chrome浏览器打开systrace生成的文件空或者提示Could not find an importer for the provided eventData终结解决指南
Chrome浏览器打开systrace生成的文件空或者提示Could not find an importer for the provided eventData终结解决指南前言 当我们将新鲜出炉的systrace生成的文件导入chrome内核浏览器,譬如谷歌极速或者搜狗等浏览器时,却发现怎么也打开不成功,要么是浏览器显示空白要么是Could not find an importer ...原创 2020-07-03 21:12:24 · 8116 阅读 · 22 评论 -
Android 手机克隆/一键换机原理初探
Android 手机克隆/一键换机原理初探前言 最近换了一个表,错了换了一个手机。大家都知道换手机是一个很开心的事情,但是在换手机过程中原来手机App信息,多媒体信息等切换时一件很麻烦和耗时的事情。偶然发现手机自带了手机克隆功能,这个非常方便的解决了我们上述的痛点今天我们初步研究一下怎么实现上述的功能。一. 具体实现我们知道手机需要迁移的数据一般是多媒体和App数据,...原创 2020-07-04 15:00:24 · 7862 阅读 · 6 评论 -
Android 9 P静默安装/卸载App适配终极指南
Android P静默安装App 前言 公司最近上马了Android 9和10的平台,我们也得哼哧哼哧的进行相关的开发。我只能说谷歌的工程师为了KPI考核对Android修改的老开心了,可苦了我们啊。这不今天在进行Android的静默安装的API封装,尼玛原来的相关接口都没有了。那么今天要说的就是在Android P上面怎么实施静默安装接口的封装。 ...原创 2020-07-04 15:09:16 · 7446 阅读 · 23 评论 -
Android高版本源码编译提示error: cannot find symbol import android.os.SystemProperties
cannot find symbol import android.os.SystemProperties 前言 最近在搞Android高版本的9和10开发,正在敲着代码唱着歌,发现在Android源码目录的app下面导入import android.os.SystemProperties这个包老是不行,尼玛搞得我怀疑人生了啊。这个我咋在Android源码下面通过Android.mk老...原创 2020-07-04 15:13:09 · 12620 阅读 · 5 评论 -
Android.mk文件添加调试打印信息
Android.mk文件添加调试打印信息 前言 你是否有过这么一个需求,就是Android的编译环境是由无数个Android.mk文件和其它类型mk文件组成的,为了方便调试你有时候是否想打印某些的变量。那么本篇文章就是带领大伙怎么调试Android.mk添加打印信息。 一.怎么添加这个没有啥多说的,这个是一个实战性的篇章,直接上结论是最有效的了。下面让我们看看怎么添...原创 2020-07-04 15:16:20 · 5042 阅读 · 4 评论 -
Android一套代码适配不同Android版本终极指南
Android一套代码怎么适配多个Android版本前言 原来BOSS秉承着多生孩子好打架的原理,成立多个部门各自为战。然后同样的功能,不同部门做的各不相同给客户呈现的也是神仙大战,各不相同。为此客户多番投诉说同一个公司的产品,不同的型号为啥表现形式不一样,为此有了今天得这篇文章。怎么在Android中使用同一套代码适配多个Android版本。本篇不是讨论移动端的多适配,而是在R...原创 2020-07-04 15:30:18 · 1910 阅读 · 2 评论 -
正确姿势解决Android源码编译Werror类型错误
正确姿势解决Android源码编译Werror类型错误前言 在Android源码环境下通过Android.mk或者Android.bp编译Native源码的时候,由于源码编译选项越来越严格,特别是Android O平台以后,默认编译选项都使用了-Wall -Werror 字段(Android O以前也会存在相关的问题)。所以经常会出现如下的编译错误,今天我将带领读者一步步的...原创 2020-07-05 22:29:00 · 5542 阅读 · 4 评论 -
Android-SEAndroid权限问题指南
Android-SEAndroid权限问题指南前言 SEAndroid是在Android系统中基于SELinux推出的强制访问控制模型,来完善自主访问模型中只要取得root权限就可以为所欲为的情况。 SELinux是一种基于域-类型(domain-type)模型的强制访问控制(MAC)安全系统,其原则是...原创 2020-07-11 11:14:45 · 17983 阅读 · 16 评论 -
正确姿势使用arm-linux-androideabi-addr2line
正确姿势使用arm-linux-androideabi-addr2line arm-linux-androideabi-addr2line是NDK中提供的将内存地址转换成行号的一个工具,通俗具体点就是根据so库抛出的Error日志的中内存地址,找到具体是在那个文件的哪一行出现的该错误。下面让我来演示一把怎么使用。命令格式[arm-msm8909-user] tang...原创 2020-07-09 16:03:30 · 8374 阅读 · 10 评论 -
正确姿势分析App CPU过高终极指南
正确姿势分析App占用CPU过高 客户就是上帝,放在那个行业都是亘古不变的道理(某些行业除外,你懂的)。最近客户反馈一个问题,就是他们开发的应用安装在我们的Android 5.xx版本上面严重卡顿(不要问我为啥用的还是Android 5.xx版本,某些行业的产品以稳为主,对新版本的追求吗就不是那么重要了),几乎不能正常操作,既然客户大兄弟提出了问题,那么我们就得解决不是...原创 2020-07-09 17:14:50 · 5421 阅读 · 9 评论 -
正确姿势使用TraceView工具
正确姿势使用TraceView工具 在对手机应用性能分析和定位的过程中Traceview是使用最多的一个工具,在遇到启动时间长界面切换时间长特别卡顿的时候Traceview是首选工具。如果查看界面的帧率问题建议还是先使用GPU配置文件以列表的形式展示在屏幕上这样可以首先发现这个界面的帧率是否有问题再做后续的排查。 如何开启TraceView ...原创 2020-07-09 16:00:18 · 5128 阅读 · 2 评论 -
记一次App异常kill分析处理
记一次App异常kill分析处理 由于Android版本的迭代更新速度非常快,所以Android版本上的一些新功能可能会导致你以前OK的代码,会发生一些意想不到的的问题,今天这里所说的就是一次由于Android时间的设置改变然后导致App被异常kill的情况。我在这里只想说这个问题,开始的时候弄得我都要给整疯了,咋也找不出原因。注意:该问题讲解是在Android版本...原创 2020-07-09 15:59:36 · 1238 阅读 · 7 评论 -
Android Bundle的妙用
Android Bundle的妙用 对于有一定Android开发经验的读者来说,都知道Bundle可以进行跨进程传递消息,当然只能传入小数据,至于为什么可以参见博客Android 通过Binder传输数据大小限制。今天有同事提出一个需求,就是有其它的应用想跨进程获取终端的一些终端特性,虽然我们已经封装了一个类提供了相关信息,但是外面的客户不想使用这个接口,因为...原创 2020-07-09 15:52:53 · 698 阅读 · 2 评论 -
Android各种卡死黑屏系统稳定性问题Log抓取大荟萃
Android各种卡死黑屏系统稳定性问题Log抓取大荟萃 作为Androd开发工作者的我们,经常会在实际的开发工作中遇到各种Android卡死黑屏系统稳定性等问题,遇到如上问题除了考验Android基本功是否扎实以外,最重要的是就是能否抓取到足够的日志和是否有足够的调试手段进行分析了。下面奉上我在实际工作中总结的抓取Log日志用到的各种必杀技。 应用冻结/奔...原创 2019-11-18 17:37:27 · 11301 阅读 · 8 评论 -
Android增加系统白名单,防止重要应用低内存时被误杀
Android增加系统白名单,防止重要应用低内存时被误杀前言 在前面的篇章Lowmemkill问题分析我们详细介绍了系统在低内存的时候杀应用的原因。也许有些读者会说现在手机动辄6G+128G的存储了,还会存在低内存杀应用的可能?那么这个就是饱汉不知饿汉饥的苦了,在一些特殊行业譬如工控或者pos行业,依然存在着512M+8G的配置,你所这种配置会不会存在系统内存紧张然后干掉一些系统认为...原创 2020-07-07 20:53:37 · 8918 阅读 · 12 评论 -
正确姿势使用adb wifi调试
正确姿势使用adb wifi调试前言 在Android设备样机调试阶段,我们一般都会使用adb usb进行相关的调试,但是有时候可能usb口调试不是很方便,譬如usb口被占用了或者usb口不够,那么这个时候adb wifi调试就排上用场了,下面详细介绍一下怎么正确使用adb wifi进行调试。一. 前期准备 首先必须保证你的手机和电脑连接的是同一个 wifi,这点不用说吧。而...原创 2020-07-07 20:51:15 · 6486 阅读 · 3 评论 -
你真的了解Android异常处理吗
你真的了解Android异常处理吗前言 在Android的开发调试过程中,遇到各种异常是再经常不过的事情了,除非你只是看看代码,或者你属于那种大牛级人物编写的代码不会产生异常。那么虽然我们经常和异常打交道,可是我们真的了解他吗,下面的篇幅我们来细说一下Android异常。一. 什么是异常 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免...原创 2019-11-04 17:17:02 · 591 阅读 · 2 评论 -
记一次Android概率性定屏问题分析解决路程
记一次Android概率性定屏问题分析解决路程前言 最经一个同事遇到了概率性定屏的问题,询问我有没有解决过类似的问题,这不得让我想起了前同事解决概率行定屏问题留下来的宝贵文档,下面我就把前同事的文档关键的内容整理奉上,希望对概率性定屏问题有帮助。一.问题描述 客户的机器在交易过程中出现定...原创 2020-07-11 10:43:57 · 3261 阅读 · 3 评论 -
Android ART模式下不重新烧录system.img的情况下如何修改framework和app
Android ART模式不重新烧录system.img的情况下如何修改framework和app 做Android系统层的相关开发,如果是android5.0以上系统,由于Android中默认art模式,且编译的为user模式,系统编译后在/system/framework中会生成jar包并且在/system/framework/arm文件夹下会生成*.odex, *.art和*....原创 2020-07-09 16:12:02 · 1439 阅读 · 4 评论 -
源码编译环境集成LeakCanary
源码编译环境集成LeakCanary 具体的android.mk编写如下,在最后会附上已经编译OK的jar和aar包。# Copyright (C) 2009 The Android Open Source Project## Licensed under the Apache License, Version 2.0...原创 2019-07-31 20:18:42 · 658 阅读 · 2 评论 -
Android移植memtester
Android移植memtester 由于客户反馈在终端使用过一段时间后出现一些意想不到的问题,为了模拟消耗过多然后出现的问题,今天记录一下在android上面使用一个内存压力测试工具memtester在android上面的使用:1.获取相关源码,下载地址如下:http://pyropus.ca/s...原创 2019-07-31 20:33:44 · 999 阅读 · 2 评论 -
ChkBugReport的使用
ChkBugReport的使用最近上海方面一直反馈系统黑屏和系统白屏然后各种问题,由于抓取系统日志不及时导致日志没有及时抓取,如果时间过去不是很久还有一个办法可以抓取那就是通过bugreport进行抓取,具体的步骤如下:1.命令取得bugreport:adb bugreport > bugreport.txt2.分析Bugreport文件java -jar chkbugr...原创 2019-07-31 20:44:19 · 3986 阅读 · 4 评论 -
Lowmemkill问题分析
Lowmemkill问题分析前言由于我们POS采用的是1+8的硬件设计结构,所以经常会出现由于内存占用过高而导致一些应用被杀死,由于这些机器在商户手里,且杀死的应用虽然对于android来说认为并不重要,但是对应用调用的关系非常重要。这篇文章就是在这个前提的基础上开展的,主要通过工具和查看日志的方...原创 2020-07-09 16:11:10 · 2557 阅读 · 2 评论 -
Android ANR日志实战分析指南
Android ANR日志实战分析指南一.概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前...原创 2020-07-11 10:42:42 · 4272 阅读 · 2 评论