- 博客(20)
- 收藏
- 关注
原创 Android RelativeLayout Rtl布局下的bug:paddingStart会同时作用于左右内边距
原生RelativeLayout在RTL布局下的bug,该bug导致设置的paddStart会同时作用于两边,导致RelativeLayout宽度变大。
2024-06-04 23:39:49
548
原创 Android混淆知识点记录
1.模块内的混淆配置只影响模块内的类。2.常用保留属性,-keepattributes Signature保持泛型信息,-keepattributes Signature保持注解。4.keep既可用于方法,也可用来成员,keepclasseswithmembers保持类和方法,可用于广泛的匹配,即用通配符。keepclassmembers,保持成员,但不影响类是否删除的判断。5.-keep,allowoptimization,allowobfuscation 不被删除,但允许优化,允许混淆。常用于泛型
2020-11-19 22:59:46
2639
原创 Android Res相关的一些知识点
1.View设置一个图片作为背景,并且设置View的宽高为wrap_content,View的大小怎么确定。这个具体情况需要看View的onMeasure方法,下面以RelativeLayout举例。源码就不贴了,给出结论吧,首先获取padding和getSuggestedMinimumWidth()的较大者。getSuggestedMinimumWidth会获取mMinWidth和mBackground.getMinimumWidth()的较大者。最终来到BitmapDrawable的computeB
2020-05-17 14:21:31
295
原创 模仿其他App的UI元素
目的为避免技术脱离现实发展,专门给自己安排一个“项目”,也可以说是“作业”,就是时不时地模仿一些主流的,热门的app的UI元素。此项目将在我的github上开源,地址【placeholder,等下班了push上去。。。】。微信OptionsMenu这个是模仿的微信主页的OptionsMenu,使用PopupWindow实现,支持暗黑模式,主要难点是背景的小三角形。通过逆向提取.9图总不能适配...
2020-04-15 17:51:17
429
原创 通过调试framework代码来解决奇怪的问题
前言因为对于应用层来说,很多的API等于是黑盒,所以往往会发生一些始料未及的,甚至是十分奇怪的问题。如果只是在应用侧进行尝试,无疑是大海捞针,十分费力。这个时候如果能够灵活地把Android的开源特性利用起来,在Framework层面,在Server层面调查问题,就可以快速地定位问题,解决问题,我认为这可以说是一种“降维打击”的战术。下面用一个例子来说明我的实践方法。文章有点长,文字比较朴实,希...
2020-04-15 10:28:36
2545
原创 举例说明如何通过Android源码获取新知识
前言拥有或者能够随时查看源代码对于一个程序员来说无疑是一件很幸福的事情,那么高效的探索与学习方法就显得尤为重要。这里以一个例子来浅谈一下我的学习方法。引子问题因为我经常使用附加调试这种方式来调查bug,这种方法非常高效,相较于与打log的方式更加灵活,便利。但是有时断点在一个比较早期的位置,比如进程刚启动,还没等我执行附加调试就已经走完了,这时我就不得不采用打log的方式了。比如对于一个一闪...
2020-04-03 16:10:22
211
原创 Android Studio Ndk开发知识点记录
Android Studio Ndk开发知识点记录Android Studio开发Ndk主要有两种方式,即cmake和ndkBuild。注意两者不能在Android Studio中共存,都设置,都不生效。ndkBuild使用Android.mk比较简单,举例如下:android { defaultConfig { applicationId "yk.jni" ...
2020-03-14 00:17:19
175
原创 Android源码环境应用开发知识点
隐藏API(hidden api)怎么对应 ApplicationInfo.java private boolean isAllowedToUseHiddenApis() { //platform签名豁免 if (isSignedWithPlatformKey()) { return true; //SystemApp(/sys...
2020-01-03 17:34:15
1255
原创 Android Activity状态保存(onSaveInstanceState)
Activity状态保存某些情况下,Activity会被杀死然后重新创建,比如系统设定表示Size变化,Font Size变化,横竖屏切换等。如果Activity在AndroidManifest中配置了android:configChanges属性,则在对应的Config发生变化时不会销毁Activity再重新创建,而是会执行onConfigurationChanged,这时Activity没有...
2020-01-03 11:48:58
724
原创 Android内核Debug相关
打印logprintk,查看方式dmesg -w(-w 不退出,持续打印log)打印方法栈#include <linux/kprobes.h>#include <asm/traps.h>dump_stack();
2019-12-30 15:41:54
224
原创 Fragment若干知识点记录
FragmentTransaction几个方法的区别add/remove,其中add添加fragment并且显示,最后的生命周期方法是onResume,remove去除fragment,执行之后的生命周期方法。show/hide单纯的决定View显示还是隐藏,不执行生命周期方法。attach和detach,detach会执行onPause,onStop,onDestroyView,之后再atta...
2019-12-21 16:07:08
174
原创 Android手机若干目录记录
pri-app权限白名单/system/etc/permissions /product/etc/permissionsdoze白名单,hidden-api白名单/system/etc/sysconfig /product/etc/sysconfig通知渠道,通知设置,通知统计信息(NotificationManagerService管理)/data/system/notificat...
2019-12-17 18:51:15
391
原创 Android导航栏和状态栏各种FLAG详解
导航栏和状态栏知识点说明导航栏和状态栏都是SystemUI的一部分,都是特殊的window。通过WindowManager.addView(View view, WindowManager.LayoutParams params);参数中的params可以对导航栏和状态栏进行一些设置,这个工作细节由WindowManagerService完成。这里可以进行定制的内容包括:导航栏显示哪些but...
2019-12-12 14:13:47
5004
原创 Android各种异常记录
java.lang.IllegalStateException: unable to getPixel(), pixel access is not supported on Config#HARDWARE bitmapsHARDWARE类型的bitmap存储在显存中,无法直接读取,想要读取可以使用Bitmap.copy生成一般的 Soft Bitmap。...
2019-12-11 14:58:19
1214
原创 Android源码编译知识点记录
mm与mma的区别a表示编译时会编译其依赖模块,所以当依赖模块不存在时需要使用mma来自动地编译其依赖项目。源码下载完后,如果只是想编译某一个模块而不是整个Android,可以直接在其目录下执行mma。如何只编译一个模块mm命令会自动地搜索目录下的配置文件并编译全部模块,这导致一些模块,比如test相关的模块被编译,甚至会因为test编不过而导致整个的编译失败。最初我通过删除不需要的模块配...
2019-12-05 16:09:34
325
原创 Android Studio LayoutInspector 超时错误解决
Android Studio Layout Inspector 错误处理There was a timeout error capturing the layout data from the device.The device may be too slow, the captured view may be too complex, or the view may contain animat...
2019-11-30 14:58:41
5067
7
原创 Android 10 一个编译报错处理
错误提示:you may need to install the XML::Simple module处理方法:sudo cpan install XML::Simple这个安装时总会卡住,不知什么原因,这里通过手动下载替换的方式来解决这个问题。比如说:Running install for module ‘XML::SAX’Fetching with LWP:http://www...
2019-11-27 11:23:38
2668
1
原创 Android启动过程,SystemServer启动过程分析
本文旨在记录所看所学,以备以后查询。由Init.rc到SystemServer启动首先来分析Init.rc,这个特殊的脚本文件位于手机的根目录,它由init进程读取,来执行系统的初始化工作。打开它我们会看到import /init.${ro.zygote}.rc,表示根据手机platform类型引入对应的脚本,这里我们分析init.zygote64_32.rc。第一行这样写:servic...
2019-10-17 11:43:31
267
原创 Android SystemUI的一些知识点的记录
1.各模块启动时机2. android:directBootAware="true"的作用3.Android10手势导航分析
2019-09-24 16:40:41
1804
原创 Android 9编译报错sdclang设置
错误提示goroutine 1 [running]:android/soong/cc/config.setSdclangVars()/home/vagrant/android-msm/build/soong/cc/config/global.go:197 +0x20d4android/soong/cc/config.init.2()/home/vagrant/android-msm/bu...
2018-12-23 19:42:24
5918
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人