- 博客(53)
- 资源 (15)
- 收藏
- 关注
原创 android 客制化系统签名文件
1.源码环境下切换到development/tools2.运行说明:即切换到development/tools下 执行./make_key releasekey .............. 是直接执行./make_key +国家省份等个人信息的语句 然后输入密码–development/tools/make_key releasekey '/C=CN/ST=BeiJing/L=HaiDian/O=MediaTek/OU=WCD/CN=demo/emailAddress=demo@mediatek.
2020-06-28 16:08:02
1305
原创 android 通过platform.pk8,platform.x509.pem生成jks签名文件
1.将keytool-importkeypair-master文件(见附件)放系统源码下,拷贝源码下的platform.pk8,platform.x509.pem,signapk.jar到此文件根目录下build/make/target/product/security/platform.pk8build/make/target/product/security/platform.x509.pem/out/host/linux-x86/framework/signapk.jarkeytool-im
2020-06-28 15:58:18
4835
2
原创 android 开发进阶心得体会
做软件开发都会有一个现象,就是基本上做个3-5年,一般的专业技能知识点基本上都会,就算有的不熟悉的,自己上网查下也能学会,那么问题来了,你懂的别人也懂,怎么体现出你比别人更加优秀?是什么让你和别人有差距了?或者差距越来越大了? 实际在公司或者行业里面,很多时候大家衡量一个人的技术厉不厉害,都是看你解决过哪些行业里面认为是比较麻烦的问题,在公司里面你是否具有解决别人不能解决的问题的能力或者能做的更好的能力,当然这里面可能有很多原因,一部分原因是别人比你熟悉,别人研究的时间比你长,术业有专攻,...
2020-06-11 11:45:55
730
2
原创 android 阅读源码对应用的好处
熟悉系统源码对应用的好处1.阅读源码可以提高自己阅读繁琐代码的能力,主要是看大致流程,不必扣详细逻辑,先把主流程理顺,然后再理每个模块的具体逻辑2.熟悉源码功能模块划分的思想,ams,wms,pwm,pms,systemui,设置与framework的解耦思想,设计模式3.对于部分问题,查看源码的部分逻辑能方便调试定位分析问题的原因,比如某个参数的含义,报异常的含义,引起问题的根本原因,且此...
2020-03-09 10:23:29
368
原创 android 系统解耦思想-设置与framework
可以理解android系统本身就是一个大的apk,而launcher,设置等apk就是这个大的apk中的某个模块的功能,各个功能模块各司其职,实现各自的功能 那系统这个大的apk来如何解耦了,原生android系统功能最多的apk就是设置,设置基本上涵盖了所有常用的功能模块,以下以8.0设置中的休眠功能为例来说明,入口是在设置中设置休眠时间,然后具体逻辑功能实现是在framewor...
2019-12-20 16:31:42
771
1
原创 android 内存优化(五) 使用androidstudio的Profile分析内存泄漏
以下举两个熟悉的内存泄漏的例子,然后通过androidstudio的Profile来分析定位内存泄漏的地方,且通过类似的方法可以自己去验证哪些情况会存在内存泄漏的情况,很多网上的说这种情况会泄漏那种情况会泄漏,很多都是理论,实际自己如果有时间的话可以自己去验证,通过自己验证的结论才是最真实的结论! 1.示例代码如下,oncreate的时候new Thread,然后handler死...
2019-11-21 20:00:58
3075
原创 android 能打印调用的方法的类,方法名,及调用行数的logutil
概述: 此logutil最好的地方就是能打印调用的方法的类,方法名,及调用行数的logutil 常规的打印log都需要自己定义一个tag,此种util是不需要tag的 实际操作时可以定义tag为工程名,总体看所有模块的log信息,具体需要看某个模块的打印就直接过滤类名就可以,因为此util会直接打印调用方法的类出来,所以过滤类名就会将相应的打印信息打印处理来此util可以看...
2019-11-21 11:35:33
871
原创 android 内存优化(二) 性能优化
1)减少view层级,约束布局,相对布局,尽可能减少布局层次2)<include>和<merge> view可见的时候才用,用viewstub加载不占资源3)避免创建不必要的对象4)图片像素对应的到相应的xdpi目录5)循环中尽量用int变量赋值遍历,不要老是getsize之类的,循环调用效率低6)SparseArray比hashmap效率高7)string与...
2019-11-21 10:58:12
189
原创 android 内存优化(一) 防止内存泄漏注意事项
1)context除开dialog必须使用this外,其余的需要用到context的地方都应该用application的context即getapplicationcontext,防止静态内部类持有activity引用,单例context2)handler使用完之后需要在界面销毁时remove掉,实际网上说的弱引用acitivity处理handler泄漏的没太大实际意义,代码一大堆,又不实用3...
2019-11-21 10:57:32
275
原创 android 系统开发入门(五) 系统服务介绍
1.AccountManagerServiceAndroid账户服务,提供了对账户、密码、授权的集中管理。2.AccessibilityManagerService辅助管理程序截获所有的用户输入,并根据这些输入给用户一些额外的反馈,起到辅助的效果,View的点击、焦点等事件分发管理服。3.ActivityManagerServiceAndroid framework框架核心服务,管理整...
2019-11-21 10:23:55
259
原创 android 系统开发入门(二) mm 单独模块编译调试说明
1.单独编译完成后会在out\target\product\平台名称\下生成相应的文件,此目录下的文件对应机器内的相应路径,如果是apk的调试,则一般通过mm之后会在system\app或者system\priv-app下生成相应的目录下生成新的apk文件1)system\app为系统常用的apk的目录,system\priv-app为系统核心应用如launcher,setting,system...
2019-11-20 20:17:12
701
原创 android 系统开发入门(一) 启动及编译过程介绍
1)android启动阶段通常是3个阶段:第一个阶段未uboot,即上电开机到驱动加载前,通常看到的现象为进入开机logo前的阶段;第二个界面为kernel阶段,即驱动加载阶段,通常看到的现象开机动画显示的前一阶段;第三个阶段为android启动阶段,即由孵化器ZygoteInit启动系统各个服务,系统各个服务启动完成后会走systemready回调,之后启动systemui服务,之后会遍历...
2019-11-20 20:16:32
343
3
原创 android 系统开发入门(三) 源码目录简介
abi 应用程序二进制接口art 全新的ART运行环境bionic 系统C库bootable 启动引导相关代码,recovery模式相关的代码build 存放系统编译规则及generic等基础开发包配置,用来定制各种编译规则,主要由makefile组成,涉及编译原生配置信息,包括预置apk等cts Android兼容性测试套件标准Customer 原生无此目录,有的用于客制化信息目录...
2019-11-20 20:15:43
229
原创 android 系统开发入门(四) 系统开发常用调试编辑目录介绍
1.framework相关frameworks/base/core/java/com/android/internal/os/ZygoteInit.java android初始化frameworks\base\core\java\android\os os类路径 android.view. android.os.frameworks\base\core\java\android\view...
2019-11-20 20:15:10
410
原创 android 各种view的显示及隐藏流程
通过网上查资料,自己看源码及加log打印调试得出的结论如下1.android所有的可视的界面可以分为activity,dialog,poupwindow,toast,windowview2.所有的view在显示和隐藏时都会走系统的统一的接口,并且在系统的接口中是加处理是可以拿到view的宽高,及所在的位置坐标值3.所有view在显示前都会执行WindowManager.addView(Vie...
2019-10-31 16:45:04
3433
原创 android apk如何引用系统framework.jar,settingslib.jar
一、引用framework.jar1.首先需要通过源码编译获得framework.jar包,实际源码编译后在out下生成classes.jar 即apk中需要导入的framework.jarout\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar2.将jar包放入工程libs下面,然后配置build...
2019-10-31 16:28:56
4410
原创 android 焦点调试经验及技巧整理
一、概述1.无论在任何界面都只会有一个view获得焦点,焦点调试一般是用在tv类的设备上操作比较多,一般都是遥控器操作2.焦点移动规则介绍1).一般焦点的规则是最开始界面初始化的时候是会去遍历view容器里面哪些view有焦点属性2).如果有控件有焦点属性的话,就会根据从左右到,从上到下的规则去寻找焦点属性的控件,同一行控件,左边的控件优先获得焦点,同一列控件,上面的控件优先获得焦点,...
2019-06-27 11:17:43
1771
原创 android 参考今日头条的屏幕适配
概述:亲测有用,用起来方便,方便迁移,不影响正常使用,布局照常用系统原生的dp布局,也在实际项目中用过,使用步骤如下:1.导入Density.java文件,具体文件代码见文末。2.布局文件中全部用dp布局3.在application的oncreate中调用Density.setDensity(this, 1920);即可。其中1920表示你作为布局的基准分辨率的宽,如1920*...
2019-05-09 16:19:28
431
原创 android 系统数据库Settings的使用整理
概述:做系统或者系统应用开发时经常会需要用到跨进程通信,并且需要传递状态值时,可以通过系统数据库的属性进行通信,比如原生系统的设置中的设置休眠时间,usb调试开关等,都是通过Settings.apk中通过选择项设置一个属性值,然后再在framework中的相应模块中通过ContentObserver中的onchange去实现具体的逻辑以达到功能模块的解耦以及跨进程通信的目的,且系统数据库中的值类似...
2019-04-25 10:26:14
5570
原创 android 微信抢红包软件
源码下载地址https://download.csdn.net/download/u010672559/10922786apk下载地址https://download.csdn.net/download/u010672559/109227971.概述:基于以前鸿洋公众号的 抢红包软件修改而来,只能用于微信7.0版本,因为微信版本不同,点击打开红包-开-返回的控件id都不同2.基...
2019-01-17 11:53:15
1443
3
原创 android 基于aidl实现的守护进程及demo
demo下载地址https://download.csdn.net/download/u010672559/10610865--------作用:保证后台服务不死,即使被杀死后又继续被拉起,详细逻辑见代码大概逻辑:AidlTest01启动activity的时候启动自己的服务MyAidlService,自己的服务的oncreate中bindservice-AidlTest02(通过包...
2018-08-17 16:13:57
382
原创 android aidl的使用及demo
demo下载地址https://download.csdn.net/download/u010672559/10610856----------概述:AIDL即跨进程通信 1.在main下面新建aidl文件// IMyAidlInterface.aidlpackage com.android.aidl;// Declare any non-default types her...
2018-08-17 16:08:47
2972
原创 android 后台监听按键事件方法及demo
demo下载地址https://download.csdn.net/download/u010672559/10592732===============1.概述:理论上要在任何界面接收按键事件应该是系统去做处理的,apk自己起后台服务的话,服务又不能监听按键事件,但是可以用设置里面的辅助功能的AccessibilityService也可监听按键事件,但是前提是需要在设置中打开此辅助功...
2018-08-09 11:14:59
7878
原创 android NDK的配置,JNI的使用及demo
demo下载地址:https://download.csdn.net/download/u010672559/10592633一、NDK的配置1.下载SDK Tools里面的LLDB和NDK2.配置NDK路径3.配置NDK环境变量,系统环境变量里面创建NDK_ROOT内容为SDK里面的ndk-bundle路径,然后Path后面追加;%NDK_ROOT%NDK_R...
2018-08-09 10:47:06
537
原创 android 内存优化(四) 性能优化-Systrace分析UI性能-含demo
demo下载地址https://download.csdn.net/download/u010672559/105660431.Systrace是什么:Systrace是Android4.1中新增的性能数据采样和分析工具,它可帮助开发者收集Android关键子系统(如SurfaceFlinger、WindowManagerService等Framework部分关键模块、服务、View系统...
2018-07-26 16:52:38
2415
原创 android ConstraintLayout的使用及理解,含demo
demo下载地址https://download.csdn.net/download/u010672559/105636271.约束布局的优点:Constraint就是约束的意思,简单点描述就是可以减少UI层级,提高性能参考链接https://mp.weixin.qq.com/s/gGR2itbY7hh9fo61SxaMQQ 解析ConstraintLayout的性能优势2.调试经...
2018-07-25 16:49:20
544
原创 android Tinker热更新的使用及demo
demo下载地址https://download.csdn.net/download/u010672559/10551901一、概述项目上线之后,经常会临时被告知某个小功能需要被修改,或者说上线了之后才发现某个bug需要紧急修复,于是总能匆匆忙改了段代码又得上线新的版本,极其麻烦,Tinker 是是微信官方的 Android 热修复解决方案,能让用户在没有察觉,没有更新app的情况下实...
2018-07-19 18:01:37
1922
原创 android DroidPlugin插件使用
=======作用是静默安装app,然后跳转,不会弹系统的安装对话框,实际apk安装在data/data/xxx/Plugin文件夹下面,使用adb uninstall卸载不了demo下载地址(包含module):https://download.csdn.net/download/u010672559/10549320===========1.引入module2.配置ap...
2018-07-18 17:07:05
1198
1
原创 android MQTT的使用及demo
概述:Message Queuing Telemetry Transport,意为消息队列遥测传输,是IBM开发的一个即时通讯协议。.功能是共用一个服务器,所有客户端只要订阅了同一个topic,只要其中一个publish,则其他所有订阅了的客户端都能收到推送的消息demo下载地址:https://download.csdn.net/download/u010672559/105492...
2018-07-18 16:55:30
3735
原创 android 多线程断点下载及进度实时更新demo
demo 下载地址:https://download.csdn.net/download/u010672559/105491201.概述:此demo是网上参考别人的demo的基础上做的修改实现的多线程断点下载及进度实时更新功能,此demo可直接运行,内部下载apk地址可直接使用,不用自己搭服务器环境,个人觉得直接看代码可能还掌握这个知识点还快点,网上很多贴了很多代码,没实际可运行的de...
2018-07-18 16:45:40
576
原创 android 内存优化(三) 内存优化工具-MAT的使用及实例分析
1.mat内存优化分析包下载地址:https://download.csdn.net/download/u010672559/10548897说明:此包里面包含有MAT64位压缩包,内存泄漏demo-MemoryTest,内存分析工具文件hprof,mat工具直接解压就可以使用,如果打开报错,可能是jdk版本不匹配,需要自己去下载64位jdk安装即可2.以下以具体实例来讲解MAT的使用...
2018-07-18 16:04:32
1177
原创 android frameworks下面config.xml属性
frameworks\base\core\res\res\values\config.xml属性 <integer name="config_lowBatteryWarningLevel">20</integer> 低电量报警 <integer name="config_lowBatteryCloseWarningBump">5</in...
2018-04-21 10:33:46
1956
原创 android 源码编译中的overlay属性
当你很有把握确定修改的是那个文件实现某个客制化需求的时候,但是实际修改又没起作用的时候,你就应该考虑到有没有被overlay了1.什么是overlay?简单一点来说就是覆盖的意思,比如mtk的平台的overlay文件里面路径下面config.xml里面有config_supportMicNearUltrasound属性,而实际正常的源码frameworks\base\core\res\res\va...
2018-04-17 17:16:12
1642
原创 android 查看界面控件id
最常用的是用eclipse/as的ddms去查看控件id,然后通过显示的界面去点击各个控件,右下角就会显示控件id了,这个在系统开发的时候对于快速定位界面在代码的位置很有帮助,通过找到界面id然后估计是在那个apk里面,然后用grep去找那个id就可以定位到具体的代码是那个类里面了。补充:ddms缺点是不能获得systemui的状态栏和导航栏的控件id,这个就需要使用hierarchyviewer...
2018-04-17 16:59:19
9844
原创 android 抓包名类名方法相关
抓包名类名方法很多,最方便的是用adb命令adb shell dumpsys activity top |more 点击回车显示下一行,按ctrl+c退出我以前用的是adb shell dumpsys activity后面发现包名类名长的时候会显示不全,不方便还有一种方法是用sdk自带的sdk\tools\hierarchyviewer.bat去抓,双击后可以看到包名和类名...
2018-04-17 15:14:31
462
原创 android 桌面图标属性相关
launcher3的桌面有apk的图标属性是因为清单文件的<category android:name="android.intent.category.LAUNCHER"/>这个属性,所以一个apk可以有多个桌面图标属性,比如Velvet.apk(- -。很多人不知道这个就是google.quicksearchbox这包名对应的apk,主要是包名和apk名字不一致,以前我也找了好久)...
2018-04-17 14:45:37
714
原创 android 使能/禁用四大组件pm.setComponentEnabledSetting无效
pm.setComponentEnabledSetting无效可能是因为获得pm的context不对,获得pm的context要一一对应,context获得时候的包名类名要与实际禁用掉的包名类名一致,如果需要禁掉多个图标时,需要多个context获得的pm去setComponentEnabledSetting举例:应用场景为切换用户的时候要求禁用掉桌面某个或多个图标frameworks\base\...
2018-04-17 14:21:08
2225
1
原创 android 添加gms包-7.0
1.打包步骤先将解压的partner_gms复制粘贴到vender下面,然后在device\xxx\xxx\full_xxx_.mk中添加,#xiaozheng addBUILD_GMS := yes注:实际是使device\mediatek\common\device.mk中的ifdef BUILD_GMSifeq ($(strip $(BUILD_GMS)), yes)$(call inher...
2018-04-17 11:54:34
3985
原创 android系统开发-心得体会
记得最开始搞android培训出来那会,开始都是简历造假去找的工作,那时也没接触过系统开发,当时也就像想着能找到个工作就不错了,而当时第一份工作就是做系统开发,虽说那时工作也不怎么忙,但也算是入了个行,基本的东西还是熟悉了。 个人感觉自己培训出来java基础和做过类似apk的培训或者做过apk开发的做系统开发还是有一定优势的,昨天同事问个代码关于接口回调的,感觉做系统开发的同事jav...
2018-04-17 11:41:03
5361
2
原创 android 系统常用Androd.mk文件语句解释-整理
==========LOCAL_DEX_PREOPT := false 直接打包生成.apk 不会附带生成.odex文件了======================LOCAL_PATH:= $(call my-dir) 用于确定源码所在的目录,最好把它放在CLEAR_VARS变量引用的前面,因为它不会被清除,每个Android.mk只需要定义一次即可,表示LOCAL_PATH的值...
2018-04-16 15:01:09
549
android ConstraintLayout的使用及理解,含demo
2018-07-25
android DroidPlugin插件使用
2018-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人