安卓开发
文章平均质量分 69
coder_szc
倚天照海花无数,流水高山心自知。
展开
-
Android开发之lint代码检测编写和使用方法
本文记录了Android开发中使用lint对代码进行静态检测的方法,并用Log方法检测和Toast硬编码检测对项目结构、依赖方式、lint检查器的注册、编写和使用方式进行了详细说明。原创 2023-09-09 11:50:54 · 534 阅读 · 0 评论 -
Jetbrains IDE新UI设置前进/后退导航键
本文介绍了在Idea、PyCharm、AS新UI界面中,设置前进、后退导航键的方法。原创 2023-08-26 09:30:58 · 2670 阅读 · 0 评论 -
Gradle学习笔记之Hook生命周期
Gradle生命周期中的hook(钩子)函数是由gradle自动回调的,可以用来帮助我们实现一些功能。原创 2023-01-28 11:46:56 · 990 阅读 · 0 评论 -
Gradle学习笔记之项目发布
本文记录了gradle项目模块发布的常用代码。原创 2023-01-21 10:13:34 · 411 阅读 · 0 评论 -
Gradle学习笔记之build.gradle文件
是gradle构建脚本文件,支持java、groovy等语言。每个gradle项目或模块都会有一个文件,该文件是项目构建的入口,可配置版本、插件依赖库等信息。每个build文件都有一个对应的project实例,配置文件,实际就是设置project实例里面的属性,或者调用里面的方法。根项目的project实例可以获取到所有子项目或子模块的project实例,因此我们可以在根项目的文件中对子项目进行统一配置,比如应用插件、依赖的maven中心仓库等,常见的Project和Task。原创 2023-01-14 10:41:10 · 3030 阅读 · 0 评论 -
Gradle学习笔记之插件
本文描述了gradle插件的相关内容,包括插件的作用、插件的分类、buildSrc的编写和引用方式、插件的属性。原创 2023-01-07 10:23:08 · 1115 阅读 · 0 评论 -
Gradle学习笔记之依赖
本文描述了Gradle中依赖相关知识,包括依赖方式、api和implementation的区别、依赖冲突时的处理方法等原创 2022-12-31 12:01:11 · 5566 阅读 · 0 评论 -
Gradle学习笔记之文件操作
Gradle中的文件操作方式有五种:本地文件、文件集合、文件树、文件拷贝和归档文件,本文给出了这五种文件操作方式的案例原创 2022-12-24 11:03:09 · 1862 阅读 · 0 评论 -
Gradle学习笔记之任务
本文介绍了gradle中的任务相关情况,包括入门案例、任务参数、任务依赖关系、任务分类等原创 2022-12-17 15:18:09 · 1305 阅读 · 0 评论 -
Gradle学习笔记之项目生命周期及settings文件
本文介绍了Gradle项目的生命周期,以及其中settings文件的作用和配置方法原创 2022-12-10 16:05:30 · 836 阅读 · 0 评论 -
Gradle学习笔记之Groovy简单使用
groovy可以当成java的脚本化改良版,同样运行于JVM之上,可以很好地和java代码及相关库进行交互,既可以面向对象编程,也可以用作纯粹的脚本语言。Groovy支持动态类型转换、闭包、元编程、函数式编程、默认作用域为(不支持)、基本类型为对象(可以直接调用对象的方法)、支持领域特定语言DSL和其他简洁语法,并且完全兼容java语法。原创 2022-12-04 14:19:06 · 1007 阅读 · 0 评论 -
Gradle学习笔记之第一个Gradle项目
Gradle是Android构建的基本工具,因此作为Android研发,有必要系统地学一学Gradle,环境windows就可以。原创 2022-11-26 11:34:37 · 999 阅读 · 0 评论 -
Android开发学习之WindowManager实现弹窗
背景我们知道PopupWindow可以实现弹窗,但是如果要实现系统弹窗(即悬浮在所有view、dialog之上),需要调用通过反射PopupWindow类的私有方法setWindowLayoutType()。但如果某个手机厂商的修改了Framework层,这种反射调用就失败了,因此如果要实现系统弹窗,需要另辟蹊径。解决方法解决方法就是使用WindowManager,及用来设置参数的WindowManager.LayoutParams WindowManager mWindowManager = ge原创 2021-11-13 16:31:39 · 3739 阅读 · 0 评论 -
安卓开发之应用运行报错:You need to use a Theme
背景安卓开发在自定义Application时,会遇到You need to use a Theme的错误解决方法根据提示,给应用加上主题即可<application ... android:theme="@style/Theme.AppCompat.Light" ...> ...</application>...原创 2021-10-21 10:03:07 · 690 阅读 · 0 评论 -
安卓开发之多进程弹窗
背景有时在弹窗绘图时,需要弹窗在新的进程中,以保证在弹窗绘图的过程中不会占用过多的内存导致主进程被关。代码实现首先我们需要一个透明的activity来作为弹窗展示,并且这个透明activity就存在于子进程中,这一切都可以在清单文件中实现:<activity android:name=".ProcessActivity" android:process=":process_test" android:theme="@style/TranslucentStyle原创 2021-10-01 17:30:33 · 387 阅读 · 0 评论 -
PopupWindow触摸事件透传方案
背景有时我们弹出一个PopupWindow弹窗时,有这么一个需求: 点击弹窗上的可点击控件时,执行控件的点击逻辑; 手指触到弹窗上空白区域或者不可点击控件时,事件透传到弹窗下的view,即不影响正常的业务逻辑 思路给PopupWindow设置onTouchInterceptor,当触摸事件为down时,判断触摸事件的坐标是否在弹窗内的某个可点击组件中,是的话则执行组件的点击监听;否则交给activity去传递事件。代码实现构建场景:Activity中有一个ListView原创 2021-09-19 11:41:30 · 1676 阅读 · 0 评论 -
Android开发时Mac下报错Installed Build Tools revision 31.0.0 is corrupted的解决
背景在Mac下使用Android Studio 4.2.2运行开发的应用时,因为build.gradle中指定的编译工具版本为31,发生了以下报错:Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.解决方法解决方法1:降级编译工具版本打开报错模块的build.gradle,将compileSdkVersion、buildToolVersio原创 2021-09-04 11:08:57 · 1133 阅读 · 0 评论 -
解决mac下adb devices报错failed to check server version
背景首先AS在显示连接设备窗口中显示device support,but ask only supports armeabi-v7a,之前可以正常debug;其次,使用adb devices时报错如下:➜ ~ adb devices -ladb: failed to check server version: protocol fault (couldn't read status): Connection reset by peer最后,adb kill-server也不行,报错如下原创 2021-08-07 13:17:43 · 2291 阅读 · 0 评论 -
mac下adb找不到OPPO r11
背景入职后,单位给我的测试手机是OPPO r11。结果手机连上mac电脑后,不管是Android Studio4.2还是adb,都找不到测试机。经过一番尝试,发现oppo需要特殊处理,详情参见本文内容激活oppo r11如果用的oppo r11是第一次使用,就需要插入sim卡激活。激活一次,以后就不用sim卡了打开开发者选项设置->关于手机->快速点击版本号7次即可打开开发者设置,而后在设置->其他设置->开发者选项->打开USB调试保存vendorID原创 2021-07-31 17:31:20 · 1572 阅读 · 0 评论 -
Ubuntu下获取安卓源码并编译
背景获取安卓源码建议在Linux或Mac下进行,硬盘空间起码250G,因为源码压缩包有119G,而且要保证网络通畅获取源码1、安装repo原创 2021-06-12 15:03:48 · 3091 阅读 · 5 评论 -
安卓开发学习之排查adb启动失败的问题
背景AS升级到3.4后,adb竟然启动失败,报错如下"Unable to connect to ADB. Check the Event Log for possible issues, Verify that your localhost entry解决方法1、下载新的平台工具https://dl.google.com/android/repository/platform-t...原创 2019-08-09 13:26:33 · 530 阅读 · 0 评论 -
安卓开发学习之二维码的生成、保存和扫描
背景近两日辞了实习的工作以准备毕业,现在写完了毕设论文,只待飞赴学校。现在无事可做,便从二维码的学习开始,再次学习新的技术知识,于是记录这个demo项目的完成过程。导包在项目gradle文件的指明使用仓库里,加上jitpack.iobuildscript { repositories { ... maven { url 'http...原创 2019-05-10 12:21:13 · 1278 阅读 · 0 评论 -
安卓开发学习之Android Studio 3.0+的文件探索器打不开文件树
背景这两天需要看看共享参数的xml文件内容,起初用AS里的File Explorer,但打开后发现文件树是空的,后来改用DDMS打开问题直接用文件探索器,发现文件树空空如也运行了adb root后也是如此,即便已经能通过adb shell浏览文件解决方法通过ddms打开就行,但是Android Studio3.0以上在Tools里就没有Android选项了,因此我...原创 2019-04-22 17:35:21 · 226 阅读 · 0 评论 -
安卓开发学习之锁屏的实现
背景趁着今天项目收工,无事可做,记录一下自定义锁屏界面的实现思路锁屏界面要具备以下特征:1、屏幕亮后启动2、全屏3、屏蔽back和recent键4、滑屏解锁5、处理点击事件经过网上查资料和自己实验,上面的问题得以一一解决,下面是过程实现广播监听核心之一是广播监听,用来监听屏幕亮起和home键按下的广播。屏幕亮时启动屏幕亮起对应的actio...原创 2019-04-18 12:28:40 · 4499 阅读 · 0 评论 -
安卓开发学习之改变屏幕方向神招
背景最近在做一个餐饮项目,要求手机横屏。问题之前是采用setRequestedOrientation()和清单文件里设置的双保险,但发现在开发板上完全没有效果。百思不得其解解决方法网上找到一个神招,直接修改settings数据库,从而完成任务 Settings.System.putInt(getContentResolver(),Setti...原创 2019-04-17 19:22:36 · 522 阅读 · 0 评论 -
安卓开发学习之解决找不到第三方依赖中的类
背景单位项目里用到了大量第三方库,以前一切正常,昨晚突然报错找不到第三方库中的类,import后面一堆红字。更秀的是,只有一些库出了问题,别的第三方都能找到网上搜了半天无果,什么api引用、离线模式、重启AS,包括在.idea/libraries下找到对应的jar和在External Libraries下找对应的库,要么不顶用,要么找不到。最后用了一种笨方法应付了事方法比...原创 2019-03-06 11:36:10 · 762 阅读 · 0 评论 -
安卓开发学习之HelloDaemon源码阅读
背景最近单位项目里要用到双服务进程保活,目的是要保证服务不被杀死。双进程保活实际是两个进程相互监听,在各自的销毁回调方法里,启动对方。网上有一个不错的双服务进程保活开源框架,叫做HelloDaemon,github地址:https://github.com/xingda920813/HelloDaemon现在,记录一下对于其的源码阅读过程 源码阅读AbsWorkSer...原创 2019-02-25 19:55:53 · 3074 阅读 · 0 评论 -
安卓开发学习之用Android Studio打包项目成jar
背景用AS做sdk开发的话,最好还是打包成aar,很方便(请参考文章安卓开发之将模块打包成aar)。但如若要打包成jar,也是可以的,在这儿记录下方法过程 方法修改gradle文件首先要让工程成为library工程,方法就是打包成aar的第一步而后要在android标签下,加上这么一段话,也就是增加一个makeJar任务 task makeJar(type: C...原创 2019-02-20 16:40:45 · 458 阅读 · 0 评论 -
Flutter学习之windows下的初体验
背景去年年底谷歌正式推出flutter1.0,拥有跨平台、体积小、效率高、用户体验流畅等优点。今日,记录一下我的首个flutter应用的诞生过程,操作系统是win10 搭环境下载flutter源码提前安装好git,而后找个地方新建文件夹,名字不能有中文或空格,而后把flutter的beta分支拷下来git clone -b beta https://github.com/f...原创 2019-02-15 17:12:56 · 1762 阅读 · 3 评论 -
安卓开发学习之protoBuf的简单使用
背景protoBuf是谷歌推出的一种数据传输格式,类似轻量级的xml,今日学习了其使用方法和步骤,并作文以记之 使用步骤添加依赖首先,要在项目的gradle里添加protoBuf的classPath依赖buildscript { .. dependencies { .. classpath 'com.google.proto...原创 2019-02-15 12:45:46 · 1056 阅读 · 0 评论 -
安卓开发之将模块打包成aar
背景做sdk的时候,需要把自己的demo等模块打包成aar,供对方调用。因此,记录总结一下用AS打包aar以及使用的过程 步骤修改gradle文件打开模块的gradle文件,修改如下:// apply plugin: 'com.android.application'apply plugin: 'com.android.library'android { ....原创 2019-01-28 10:09:46 · 2385 阅读 · 0 评论 -
安卓开发学习之解决gradle编译时间太长的问题
背景这两天在做small插件化,昨天还好好的,今天编译宿主app时却竟然耗了1个多小时还没完成,通过上网搜索解决方案,最终解决了问题 解决方案在C:\用户\你的用户名\.gradle目录下找到或新建gradle.properties文件用一个编辑器打开后,添加如下几句话将其贴出来,方便大家复制org.gradle.daemon=trueorg.gradle....原创 2019-01-17 15:57:42 · 1449 阅读 · 0 评论 -
安卓开发学习之dataBinding的学习使用
背景dataBinding数据绑定是谷歌推出的基于观察者模式的数据和页面内容的绑定,拥有广阔的应用前景。 使用使能dataBinding使能只需要在module的gradle文件里加上这么一段话android { ... dataBinding { // 使能dataBinding enabled = true }...原创 2018-12-25 14:50:29 · 440 阅读 · 0 评论 -
安卓开发学习之自定义Toast的实现
背景吐司提示很常见,但系统的吐司有一个缺点,就是显示时长不能自定义,而自定义Toast可以实现这一点 实现步骤整体思路是:活动窗口发出弹出吐司请求,然后中间层接收请求,发给调度层,调度层显示吐司这里请求的传递就是方法的调用,显示和消除吐司的关键是调用windowManager的addView()和removeView()方法下面,是具体的实现步骤中间层MyToast...原创 2018-12-24 17:11:40 · 580 阅读 · 0 评论 -
安卓开发学习之异步任务源码阅读
背景异步任务AsyncTask是Android里自带的异步处理任务(网络请求等)的工具类,使用起来很方便,如今记录一下我对它的源码的阅读过程。源码取自Android8.0 使用常见的使用方式之一如下: AsyncTask<String, Void, String> asyncTask = new AsyncTask<String ,Void...原创 2018-07-25 14:44:37 · 167 阅读 · 0 评论 -
安卓系统启动之Zygote进程启动过程
背景安卓系统启动时首先启动init进程,而后init进程会创建zygote进程,zygote进程则会fork出来SystemServer进程。在安卓开发学习之SystemServer启动过程一文中记录了阅读SystemServer启动的过程,现在就记录一下Zygote进程的启动过程 源码阅读Zygote进程的启动源自于ZygoteInit类的入口main()方法ZygoteIn...原创 2018-07-24 12:53:52 · 1242 阅读 · 0 评论 -
安卓开发学习之LruCache源码阅读
背景LruCache是最近最久未使用的缓存,是安卓系统里常见的缓存策略之一。 源码阅读LruCache类里定义的属性如下 private final LinkedHashMap<K, V> map; // 内存对象,哈希链表 private int size; // 目前使用的内存数 private int maxSize; // 最大内存...原创 2018-07-23 18:29:47 · 178 阅读 · 0 评论 -
安卓开发学习之解决JS不能调用Android方法
背景这两天在做划词搜索时,需要让前端的js调用后端的Android方法,但总是调不成,经过搜索,问题解决,现记录成文。 解决方案1、确定调用了webView.addJavascriptInterface()方法并且webView支持jswebView支持js是前提,设置方法:webView.getSettings().setJavascriptEnabled(true)we...原创 2018-07-17 14:27:00 · 2675 阅读 · 0 评论 -
安卓开发学习之线程池源码简析
背景在进行安卓开发的时候,避免不了要用线程,而谷歌推荐我们使用线程池来进行线程的管理,所以有必要对线程池进行源码的阅读 使用线程池的一般使用如下 private static final int core_number = Runtime.getRuntime().availableProcessors(); // 线程池里最小保活worker线程数,采用cpu数量 ...原创 2018-07-05 22:03:16 · 380 阅读 · 0 评论 -
安卓开发学习之获取系统上下文
背景在安卓系统启动到初始化SystemServer进程的时候,会获取系统的上下文,在SystemServer创建过程中的相关调用如下 private void createSystemContext() { ActivityThread activityThread = ActivityThread.systemMain(); mSystemContext =...原创 2018-07-04 12:58:45 · 1548 阅读 · 0 评论