
知识积累
文章平均质量分 90
依生依世
ここを始め、世界に痛みを感じさせよ
展开
-
Git Hooks的使用
Git Hooks的使用1.git默认提供2.自定义hook操作(1)直接修改(2)链接自定义文件有时我们想要在git操作时候进行一些定制化操作,比如在git commit时候检查一下提交内容是否合规、git push时候检查一下资源文件大小等等,这些功能需要我们可以在git命令执行前后进行拦截,git hooks提供了这样的能力。1.git默认提供我们每个通过git管理的项目,在.git/hooks/文件夹中,会提供一些默认的git hooks文件,比如pre-commit.sample pre-p原创 2020-05-26 10:55:30 · 3002 阅读 · 0 评论 -
Android Studio 插件开发实战
Android Studio 插件开发1.搭建IntelliJ IDEA开发环境2.配置插件项目3.开发插件4.发布和安装插件AndroidStudio中有许多插件,比如生成set/get方法、生成toString方法等,这些插件可以辅助我们进行快捷的开发。我们也可以自己开发插件,比如我们想在一个model类中,自动生成所有private变量的get方法,当然AndroidStudio自带插件已经支持了,这里我们只是以这个例子为入手点,看下如何开发一个IDE插件。1.搭建IntelliJ IDEA开原创 2020-05-25 19:24:18 · 1436 阅读 · 0 评论 -
Android Lint基本使用和自定义规则
Android Lint基本使用和自定义规则一.基本使用1.gradle配置2.指定规则3.执行Lint检测i.实时检测ii.手动检测iii.Gradle命令行执行二.自定义规则1.lint_rules(1)引入依赖(2)定义规则i.需要检测的方法名ii.检测指定方法的调用iii.规则配置(3)注册规则(4)生成jar包2.如何使用jar3.lint_aar4.assemble运行时检测三.调试自定义规则1.运行目标项目的gradle命令2.开启lint项目的debug模式四.检测时机一.基本使用1.g原创 2020-05-25 19:11:48 · 3418 阅读 · 2 评论 -
Android AnnotationProcessor
Android AnnotationProcessor一.项目结构二.定义注解三.实现注解处理器(一)依赖(二)注解处理器(三)处理注解四.使用注解处理器(一)依赖(二)使用注解(三)生成的代码五.注意事项注解处理器通常可以用在模块间解藕、自动生成代码等地方,比如router路由或者butterknife。效果就是我们在某些地方标注某些注解,在编译时,注解处理器会扫描这些注解的地方,然后生成一些...原创 2019-12-26 20:59:42 · 6054 阅读 · 0 评论 -
Android Locale语言设置
Android Locale语言设置一.系统设置二.应用级设置(一)更新Locale1.updateConfiguration2.createConfigurationContext(二)获取Locale(三)Locale.getDefault()(四)WebView的坑三.实践Android系统支持多种语言的切换,可以是系统级别的,也可以是应用级别的。一.系统设置系统语言的设置在手机设置页...原创 2019-12-26 17:34:02 · 7684 阅读 · 1 评论 -
Android App Bundle
Android App BundleAABAPKSDynamic Feature ModuleAndroid 5.0以下设备注意事项Android项目中会有针对不同设备的资源文件,比如根据分辨率不同,drawable会分为drawable-ldpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等文件夹;根据系统版本不同,layout会分为layout-...原创 2019-12-26 17:22:45 · 1390 阅读 · 0 评论 -
Android R文件生成
Android R文件生成AAR主工程Android在打包时,通过AAPT工具,对主工程和引入的依赖里的所有资源文件进行编译压缩,并会对res/里的资源文件如drawable、layout、values等生成唯一的id,同时生成R.java文件,保存所有的id值,以及生成resource.arsc文件,建立id对应资源的值(如string)或文件路径(如png)的关系表。如上图是我们apk中...原创 2019-12-26 16:36:37 · 5649 阅读 · 0 评论 -
Android Gradle插件断点调试
Android Gradle插件断点调试一.配置命令行参数二.配置debug三.运行调试有时我们需要调试gradle插件来解决问题,比如我们写了一个gradle插件的项目,还有一个引用该插件的项目,需要在编译该项目时断点调试插件项目的流程,应该怎么办呢?一.配置命令行参数在我们执行项目的某个gradle命令时,后面加上-Dorg.gradle.daemon=false -Dorg.gradl...原创 2019-08-01 16:43:21 · 1429 阅读 · 0 评论 -
Android Gradle Transform使用
Android Gradle Transform使用一.概述二.使用(一)引入(二)API1.QualifiedContent2.TransformInput3.TransformOutputProvider4.TransformInvocation5.ContentType6.SCOPE7.TransformManager8.Transform(三)使用流程1.添加至构建2.构建流程3.tran...原创 2019-08-01 17:02:45 · 1928 阅读 · 0 评论 -
ReactNative For Android 之一:环境搭建
ReactNative For Android 之一:环境搭建一.ReactNative官方文档二.环境搭建三.调试四.升级版本一.ReactNative官方文档英文:https://facebook.github.io/react-native/docs/getting-started.html中文:http://reactnative.cn/docs/android-setup....原创 2019-08-01 17:46:16 · 291 阅读 · 0 评论 -
ReactNative For Android 之二:基本组件和API
ReactNative For Android 之二:基本组件和API一.基本组件1.DrawerLayoutAndroid2.Image3.ListView4.Navigator5.ProgressBarAndroid6.PullToRefreshAndroid7.ScrollView8.TextInput9.ToolbarAndroid10.ViewPagerAndroid11.Touchab...原创 2019-08-01 18:06:56 · 662 阅读 · 0 评论 -
ReactNative For Android 之三:工程结构
ReactNative For Android 之三:工程结构一.目录二.入口三.入口文件四.创建组件(参考上面例子)一.目录初始化项目后会自动带有android文件夹:android项目文件夹ios文件夹:ios项目文件夹node_modules:源码index.android.js:android的js入口文件index.ios.js:ios的js入口文件...原创 2019-08-01 18:25:59 · 243 阅读 · 0 评论 -
ReactNative For Android 之四:自定义组件
ReactNative For Android 之四:自定义组件一.自定义View二.添加到自定义package三.JS中调用四.native事件的处理ReactNative已经包含很多常用控件,并在持续更新,但仍然不可能包含全部控件,比如很多第三方的已经我们自定义的控件,不过提供了方法让我们将想使用的控件包装到RN里,就可以在js中使用了,android里常用的Button RN没有包含(有别...原创 2019-08-01 18:36:18 · 548 阅读 · 0 评论 -
ReactNative For Android 之五:自定义module
ReactNative For Android 之五:自定义module一.创建自定义module类二.创建自定义的Package三.JS中调用四.回调方法和native主动发送消息1.回调方法2.native主动发送消息JS是如何调用到native的特性的,可以通过定义自定义Module和自定义的Component来定义模块和组件在JS中使用,这里以模仿ToastAndroid的组件的功能To...原创 2019-08-01 18:44:42 · 605 阅读 · 0 评论 -
ReactNative For Android 之六:组件生命周期
ReactNative For Android 之六:组件生命周期一.周期方法二.基本流程一.周期方法getDefaultProps:在组件类创建的时候调用一次(一般app启动时会加载组件类),里面返回的对象是定义的props的初始值,没有被覆盖时就是用这个默认值;返回的props对象是该组件的props(共用内存空间),每次用到该组件都有这些props的默认值;不能通过thi...原创 2019-08-01 19:16:47 · 268 阅读 · 0 评论 -
Android 代理拦截系统层代码
Android 代理拦截系统层代码一.手动代理1.溯源2.手动代理二.动态代理1. 溯源2. 动态代理有时我们的项目会遇见如下所示的崩溃堆栈:android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground() at android.ap...原创 2019-08-06 11:31:10 · 677 阅读 · 0 评论 -
Android Gradle 使用
Android Gradle 使用一.Gradle(一)简介(二)项目结构(三)基本概念(四)脚本执行过程1.配置阶段2.执行阶段二.Task(一)创建(二)定义执行代码1.配置阶段代码2.doFirst3.doLast(三)配置1.property2.configure3.Project的配置(四)Task依赖关系(五)自定义Task1.Task的类型2.自定义Task三.Plugin(一)定义...原创 2019-08-01 16:39:27 · 465 阅读 · 0 评论 -
Javassist使用
Javassist使用一.简介二.使用(一)class1.获取2.新建3.内部类4.更新(二)constructor1.获取2.新建3.修改方法体(1)insertBefore/insertAfter(2)setBody(3)修饰符(三)field1.获取2.新建3.setter/getter(四)method1.获取2.新建3.setter/getter(五)参数使用(六)static1.获取2...原创 2019-08-01 15:51:50 · 1725 阅读 · 0 评论 -
AspectJ 使用及原理
AspectJ 使用及原理一.简介二.原理三.使用(一)基本概念1.连接点(JoinPoint)2.切点(PointCut)3.插入逻辑(Advice)4.切面(Aspect)(二)类型匹配表达式1.注解2.修饰符3.返回值4.类5.方法名6.方法参数7.组合使用(三)切入点组合表达式1.call/execution2.this3.target4.within5.args6.注解支持7.组合使用8...原创 2019-08-01 15:08:57 · 5764 阅读 · 0 评论 -
Android Support包版本变更记录
Android Support包版本变更记录版本新增特性行为修改过期APIbug修复适配点24.0.0Fragment增加commitNow方法支持同步添加到FragmentActivity中如将原有commit方式改为commitNow方法添加Fragment,需要进行全回归测试其行为24.0.1Fragment.setUserVisibleHi...原创 2019-07-30 11:47:26 · 464 阅读 · 0 评论 -
Android RoboGuice使用
Android RoboGuice使用一.注入顺序及使用地方:二.布局,控件:三.资源(anim,string,drawable,etc):四.系统服务:五.普通java类:六.单例模式:七.Service和broadcastReceiver:八.Logging(和Log差不多):九.自定义view:十.Event Listener:一.注入顺序及使用地方:Robo(Fragment)Ac...原创 2019-07-30 16:05:56 · 299 阅读 · 0 评论 -
Android GreenDao 使用
Android GreenDao 使用一.创建二.增加三.删除四.更新五.查找一.创建(1)创建一个java工程(可以当成项目的一个module),在main函数里创建Schema,向其添加多个Entity(相当于表),调用DaoGenerator的generateAll方法生成整个数据库public static void main(String[] args) throws IOExce...原创 2019-07-30 20:02:32 · 894 阅读 · 0 评论 -
Android 输入法键盘使用
Android 输入法键盘使用一.设置页面输入法展示方式1.adjustXxx2.stateXxx3.代码调用二.动态调用键盘1.调起键盘2.隐藏键盘一.设置页面输入法展示方式我们经常会在项目中遇到输入法展示的情况,有时希望进入页面时自动展示输入法,有时希望页面不展示输入法直到用户主动点击EditText之类的,还有输入法和相关View出现的位置等等,都是通过manifest里对activit...原创 2019-07-31 14:36:54 · 1240 阅读 · 0 评论 -
Android 屏幕旋转使用
Android 屏幕旋转使用一·Manifest配置1.configChanges2.screenOrientation3.总结二.回调方法一·Manifest配置如需实现转屏效果,我们需要在manifest文件中对Activity进行一些属性配置<activity android:name=".TestActivity" android:configChang...原创 2019-07-31 14:44:21 · 393 阅读 · 0 评论 -
Android 动态权限机制详解
Android 动态权限机制详解一.权限系统(一)6.0之前(二)6.0之后(三)8.0二.兼容适配(一)TargetSdkVersion(二)适配方法1.检查权限2.请求权限3.请求权限的结果4.适当的提示5.Fragment的权限请求6.流程图总结一.权限系统(一)6.0之前Android为一些操作提供了必要的权限,比如我们的app想访问网络,就需要有网络权限android.permis...原创 2019-07-31 15:47:45 · 2548 阅读 · 0 评论 -
Android 调用系统应用选文件
Android 调用系统应用选文件我们通常会通过Intent调起系统应用进行选择文件,包括图片、视频、音频等,但是需要考虑不同系统版本的兼容性问题系统版本actionaccept_type(选择文件类型)<19(4.4)Intent.ACTION_GET_CONTENT通过intent.setType,设置一个字符串表示MIMEType:“image/*, vi...原创 2019-07-31 17:04:30 · 3666 阅读 · 0 评论 -
Android H5调用WebView选文件
Android H5调用WebView选文件H5页面可以通过< input type=‘file’ accept=‘image/*’/>来调用WebView的方法,进行图片选择,这里调用的方法在WebChromeClient中,不同版本系统需要做兼容系统版本override methodnote<21(5.0)openFileChooser(Value...原创 2019-07-31 17:15:44 · 1944 阅读 · 0 评论 -
Android WebView加载本地url
Android WebView加载本地url通常我们使用WebView的loadUrl()方法加载一个远程html,也可以加载一个本地html文件,通常我们把本地html会放在assets目录下。加载assets文件夹下的文件:webview.loadUrl(" file:///android_asset/index.html ");如果Html中有script,我们需要开启js功能,否...原创 2019-07-31 17:19:56 · 3696 阅读 · 0 评论 -
ADB学习笔记
ADB-Shell笔记基本概念ADB服务相关命令adb kill-serveradb start-serveradb shellexit设备相关adb devicesadb -s serialNumber cmdadb get-stateadb get-serialno文件相关adb install (-s) xxx.apkadb install -r xxx.apkadb uninstall (...原创 2019-07-26 18:01:59 · 988 阅读 · 0 评论 -
Android View clipToPadding属性
Android View clipToPadding属性view的clipPadding属性,决定绘制时,是否将其content(自身内容、children),绘制到其padding位置默认为true:意为裁剪padding,绘制时padding区域的content将会被裁剪掉,也就是会正常显示padding设置为false:如果content达到padding区域,会覆盖pad...原创 2019-07-31 17:55:06 · 673 阅读 · 0 评论 -
Android View clipChildren属性
Android View clipChildren属性ViewGroup的clipChildren属性,决定其children是否要绘制超过其区域的部分默认为true:意为裁剪children,如果children边界超出parent,则会被裁减掉不显示,和正常一样设置为false:如果设置该属性的ViewGroup-A,其有一个ViewGroup的child-B,那么B的chil...原创 2019-07-31 18:10:52 · 481 阅读 · 0 评论 -
Android 添加系统级窗口
Android 添加系统级窗口1.通过WindowManager可以添加一个系统层的window,覆盖在整个屏幕的最上层,可以用来实现悬浮窗、覆盖层等功能,但是不同android系统行为不一致系统版本type权限<23(6.0)TYPE_SYSTEM_ALERT不需要23~25(7.1)TYPE_SYSTEM_ALERTSYSTEM_ALERT_WIN...原创 2019-07-31 18:22:00 · 1248 阅读 · 0 评论 -
Android View 获取焦点
Android View 获取焦点有时我们需要某些View获取焦点,比如EditText获取焦点弹出键盘,我们有以下几种方式可以做到1.在页面初始化的时候调用view.requestFocus()override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ...原创 2019-07-31 19:26:52 · 3379 阅读 · 0 评论 -
Android 9.0适配
Android 9.0适配一.新功能1.WiFi RTT室内定位2.刘海屏支持(1)调试(2)页面的刘海使用模式(3)刘海相关API(4)适配方式3.解码图片4.动画二.所有应用的变更1.访问受限2.非SDK接口访问限制3.安全行为变更4.UTF解码5.xt_qtaguid文件访问6.FLAG_ACTIVITY_NEW_TASK7.屏幕旋转8.相机枚举三.目标(target)API28的变更1.前...原创 2019-08-01 10:08:26 · 1765 阅读 · 0 评论