自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 让 Flutter 开发者愉快地使用和预览资源图片

这是介绍我开发的 Idea 系 IDE 插件——Flutter Assets Ref Generator的第二篇博客。<iframe frameborder="none" width="384px" height="319px" src="https://plugins.jetbrains.com/embeddable/card/13629"></iframe>Github地址:https://github.com/AndrewShen812/AssetsRefGenera.

2021-08-19 09:42:05 526

原创 让 Flutter 像原生 Android 一样引用资源

背景作为一名 Android 开发者,已经非常习惯于 R.drawable.xxx 的资源引用方式。学习了 Flutter 后,觉得 Flutter 中图片等资源的使用方式,和 Android 相比,简直太不友好、太返古了:首先,要在 pubspec.yaml 中手动添加资源声明,像这样的: assets: - images/arrow_right.png # othe...

2020-01-13 14:30:31 963 3

原创 【音视频笔记】Mediacodec+Muxer生成mp4,浏览器无法播放问题处理

用AudioRecord + MediaCodec + MediaMuxer生成MP4,用PC浏览器无法播放,但是其他播放器应用能播放。用ffprobe命令检查视频文件,有"[aac @ 0x7ffa3681f800] Input buffer exhausted before END"。记录一下我是如何解决这个问题的。

2023-09-21 10:46:36 807

原创 TP4056 充电电路学习借鉴

最近计划的一个 DIY 项目有安排充放电锂电池,于是搜集了两个比较相似的方案,借鉴学习一下。一、TP4056单节锂电池充电板设计方案(原理图+源码)顺带说,电路城 这个网站还是比较有意思的,能学习借鉴的东西挺多的。二、DIY创意类丨esp8266WiFi杀手(mini版)...

2021-11-15 16:20:13 4250 1

原创 iMX6UL开发板移植libcurl库

前言libcurl 是一个功能全面的客户端 URL 传输库,支持常见的各种传输协议(官方介绍),并且具有高可移植性,著名的 curl 工具正是基于使用的这个库。在嵌入式开发板上,有 http/https 等使用需求时,可以考虑使用 libcurl。使用 libcurl 所需的库文件和头文件可以通过编译curl源码得到。curl源码下载地址:https://curl.se/download.html。curl编译输出目录结构如下:bin目录下是可执行的curl命令行工具;include目录是使用

2021-11-08 22:43:08 603

原创 Android源码编译笔记——Android10编译问题记录

lz4c: not found/bin/sh: 1: lz4c: not foundarch/arm64/boot/Makefile:31: recipe for target 'arch/arm64/boot/Image.lz4' failedmake[1]: *** [arch/arm64/boot/Image.lz4] Error 1arch/arm64/Makefile:139: recipe for target 'Image.lz4' failedmake: *** [Image.lz

2021-09-16 17:50:50 562

原创 记一次特别的Activity生命周期问题处理

在Android开发中,Activity跳转的生命周期,我们都再熟悉不过了,但是有一些特别的应用场景,生命周期方法却会出现一些我们意料外的调用顺序。正常的Activity跳转生命周期从 main 创建,到启动新的页面second,正常的生命周期是这样的:main onCreate // --------main onStart // |main onResume // |main onPause // |second onCreate // | mai

2021-07-27 15:46:48 338

原创 回顾华为荣耀6手机刷机相关

这篇博客记录了我的远古手机——华为荣耀6(H60-L01)的root刷机操作。

2021-04-23 15:16:16 1304

原创 基于Docker+Jenkins的Android项目CI/CD流程搭建

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins通过Docker部署运行时,Jenkins的容器环境不包含构建Android应用所需的工具(如Android SDK等)。但Jenkins支持在流水线的单个 Stage或整个流水线中使用Docker镜像作为执行环境,方便用户管理构建和测试环境。本文档介绍在Docker运行Jenkins的环境下,用Jenkins构建Android项目的两种方式——Freestyle project构建任务和Pipe

2021-04-14 13:01:32 1866

原创 使用 expect 完成自动交互的3种方式

参考文档:Shell 编程 免交互 expectexpect脚本编写以 #!/usr/bin/expect 开头的脚本,缺点是只能执行 expect 相关命令,不能执行 ls, pwd 等其他命令。示例:#!/usr/bin/expectset timeout 30# 上传文件到服务器spawn scp target/test-service.jar [email protected]:/rootexpect "[email protected]'s password: "send "

2020-12-02 11:21:57 365

原创 MacBook 配置以太网口和Wi-Fi同时使用

Mac配置外接以太网口手动设置IPsudo networksetup -setmanual USB\ 10/100/1000\ LAN 192.168.1.16 255.255.255.0 192.168.1.1删除线部分为网络偏好设置页面显示的名称,空格用反斜杠转义。这个因人而异。使用dhcpsudo networksetup -setdhcp USB\ 10/100/1000\ LAN双网口同时使用-设置路由细致讲解可以参考这篇博客:Macbook利用双网卡同时连内外网查看当前路由表

2020-11-19 19:09:03 3511

原创 全面的 iPerf3 Android平台移植编译、运行过程记录

iPerf是什么?无需我多言,官网这条醒目的宣传语,已表达的很简洁、准确,甚至透露着一丝霸气:iPerf——支持TCP、UDP和SCTP的终极测速工具!iPerf支持的平台非常全面,包括:Windows、Android、iOS、macOS 和 Linux 的多个发行版本。但遗憾的是,Android 版本提供的是开发好的、包含 iPerf 工具的Android应用。不像其他平台,提供了单独的 iPerf 可执行程序。作者用这篇博客记录了完整的 iPerf Android 平台编译移植过程。

2020-11-13 14:17:53 4762 3

翻译 NDK 中的 Unified Headers 记录

ndk-r14 release note 关于 Unified Headers 的说明文档原文:Unified headers: This release introduces platform headers that are synchronized and kept always up-to-date and accurate with the Android platform. Header-only bug fixes now affect all API levels. The intr

2020-11-08 11:28:29 213

原创 Android源码编译笔记——Android 9.0源码编译

之前写过一篇 Android源码编译笔记——Android 7.1 系统源码编译及运行,欢迎翻阅。本次编译9.0源码,流程是相同的,主要记录期间遇到的问题。编译环境:VMWare Player虚拟机:15.5.6Ubuntu版本:16.04.7虚拟机配置:6核CPU,4G内存,200G硬盘笔者手上硬件条件有限,看网上也有电脑配置很好、一次就编译成功了的,如果读者也有较好的硬件条件,说不定你也就不会遇到我记录问题啦。问题1ninja failed with: signal: killed出现这

2020-09-11 16:57:31 987

原创 用 Kotlin + buildSrc 更好地管理 gradle 依赖

本文主要对以下的原始及翻译博文做一点批注记录:原始博客:Kotlin + buildSrc for Better Gradle Dependency Management翻译博客:[译]Kotlin + buildSrc:更好的管理Gadle依赖总结一下:用 buildSrc 管理依赖的好处就是,支持点击跳转和IDE的输入提示。缺点就是,和使用 ext 方式一样,不支持 Android Studio 的依赖库新版本提示了。...

2020-07-08 14:05:01 686

原创 Java 中 sleep() 和 wait() 方法关于锁的对比实验

我们知道,在 Java 中,通过 Thread.sleep() 和 Object 的 wait 方法都可以阻塞当前线程的执行。但由于sleep() 不会释放锁对象,而 wait()会释放锁对象,因此在多线程并发的环境中,它们的效果,是截然不同的。并且,用法上也有一定区别:sleep 阻塞时间到了以后,会自动继续往下执行;但使用 wait 时,则必须使用 notify 或 notifyAll 来唤醒。下面通过一段实验代码来验证记录:public class SleepAndWait { publi

2020-06-11 15:36:28 476

原创 Activity启动流程分析

源代码版本:android-28(Android 9.0)当我们通过startActivity(Intent intent)启动一个Activity时,最后调用了Activity中的一个startActivityForResult方法:Activity.java:public void startActivityForResult(@RequiresPermission Intent int...

2020-05-27 16:45:09 392

原创 Java 虚拟机笔记

JVM 运行时数据分区根据 Java 虚拟机规范 Run-Time Data Areas 章节的描述,Java 虚拟机的运行时数据划分如下:程序计数器/pc寄存器-PC(program counter) Register线程私有。 程序计数器包含线程当前正在执行的Java虚拟机指令的地址。 如果线程当前正在执行的方法是本地方法,则Java虚拟机的pc寄存器的值未定义。Java 虚...

2020-03-28 23:07:56 186

原创 算法回顾——斐波那契数列问题

斐波那契数列,由数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般我们见到的兔子繁殖问题、以1阶或2阶方式上台阶的问题,本质上都是斐波那契数列问题。笔者用这篇博客归纳记录了Java版本的斐波那契数列的不同算法实现。

2020-03-21 16:42:42 855

原创 Android手机投屏初探

从事Android开发,应该或多或少都遇到过要将手机屏幕同步到电脑上的需求,例如做各种会议演示等。通常我们都借助一些稳定性和口碑不错的第三方软件来实现投屏,比如我就长期使用TotalControl,当然TotalControl已经是非常成熟的软件了,功能也很丰富,投屏只能算它众多功能中的一个。我们抛开其他功能不谈,如果只需要实现手机屏幕能实时同步到电脑上播放,该怎么做呢。主要思路有两步:录制...

2020-03-17 17:31:27 2929 3

原创 Android用MediaCodec将相机预览帧编码成MP4视频

最近项目中,有一个在扫码同时录视频的需求。扫码框架是通过摄像头onPreviewFrame方法获取预览帧数据然后解码二维码,要在不改变扫码的整体框架条件下完成录视频,自然想到了将每一帧预览图像依次编码成视频的做法(不涉及音频)。一通开发搞下来,感觉还是有很多值得学习记录的地方,遂有这篇博客。

2020-03-17 17:09:57 4345 7

原创 事件在Android Framework层的完整流程

在MessageQueue中,有两个重要的方法:一个是enqueueMessage,负责将消息加入队列;一个是next,负责从消息队列中取出一个待处理的消息。// android.os.MessageQueueMessageQueue { boolean enqueueMessage(Message msg, long when) { // ... } Message next(...

2020-03-13 00:10:26 1482

原创 算法回顾——快速排序

快速排序(quickSort),一种典型的运用分治思想的算法。核心思想是:在数组中取一个元素作为关键的中间值keyVal。然后把比中间值小的元素,放到中间值的左边;把比中间值大的元素,放到中间值右边。在中间值keyVal的左半边和右半边两个子列表中,重复上面的操作。把一个数组的排序,拆分成多个规模更小的问题,逐一解决,分而治之,这就是分治了;语言描述,我们很好懂。但是怎么转换成代码实...

2020-03-12 11:35:13 170

原创 Git 常用操作命令笔记

配置信息查看当前本地配置git config --local --list查看全局配置信息git config --global --list配置用户名、邮箱信息当前工程:git config user.name xxxgit config user.email全局修改:git config --global user.name xxxgit config --global...

2020-03-03 12:03:50 207

原创 Android 禁止状态栏下拉,纯应用层方法,不修改framework

禁止 Android 的状态栏(Status bar)下拉,是一个常见的定制需求,通常是通过修改系统源码实现。如果不具备修改系统源码的条件,有没有纯应用层的替代方案呢?有!但有局限。这个方案参考了 Stack Overflow 上的一个问答:How to disable status bar click and pull down in Android?思路就是:通过 WindowMana...

2020-01-03 14:31:19 5036

原创 Android源码编译笔记——envsetup.sh脚本提供的主要函数

envsetup.sh位置AOSP源码根目录/build/envsetup.sh从8.0开始有略微调整,build/envsetup.sh 已经变成了一个指向 build/make/envsetup.sh的链接文件:ls -l build/envsetup.shlrwxrwxrwx 1 sy sy 16 Apr 13 01:24 build/envsetup.sh -> make/e...

2019-12-24 12:58:28 350

原创 Android 自动打印方案——PrintHand

PrintHand 提供移动设备打印一站式解决方案。支持的平台Android、iOS/MacOS、Windows、Chrome、Blackberry。开发集成文档PrintHand For Developers

2019-09-11 18:35:19 5168

原创 用Android Studio 代码模板快速在JNI中添加Android log支持

在涉及C/C++开发的过程中,我们往往也和常规Android开发一样,习惯于通过log输出来观察和调试程序。当我们需要在native代码(C/C++)中打印log时,要怎么做呢?IDE特性在当前比较新的Android Studio版本上(笔者以Android Studio 3.2 为例),当新建工程时,如果勾选上C/C++代码支持,在工程初始化好以后,会默认生成CMakeLists.txt编译...

2019-09-09 15:04:42 365

原创 Android Jetpack和AndroidX

文章目录Android Jetpack和AndroidX是什么?Jetpack:Android Jetpack 组件AndroidX什么联系?官方链接推荐Android Jetpack和AndroidX是什么?Jetpack:Jetpack 是一套库、工具和指南。Jetpack 包含与androidx.* 软件包库,可帮助开发者更轻松地编写优质应用。这意味着,它可以提供向后兼容性,且比...

2019-08-21 14:48:11 2653

原创 大前端二三事——Weex初探

何为Weex?引用官方的解释:Weex 是使用流行的 Web 开发体验来开发高性能原生应用的框架。Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验,来构建 Android、iOS 和 Web 应用。简单来说,在集成了 WeexSDK 之后,你可以使用 JavaScript 语言和前端开发经验来开发移动应用。如何上手编写一个Hello world,可以参考Weex官...

2019-08-15 16:31:37 196

原创 解决:APK Signature Scheme v3: Size of APK Signing Block is not a multiple of 4096: xxxx

延伸阅读:App 签名过期或泄露怎么办?别担心,Google 已经给出解决方案!通过 美团walle 的命令行工具 walle-cli-all.jar 打多渠道包后,在Android 9.0手机上安装时,出现了如题的错误信息。walle-cli-all版本:1.1.6apksigner版本:28.0.3完整的安装出错信息如下:adb: failed to install xxx.apk...

2019-06-12 15:56:18 3623

原创 大厂成熟Android开发调试工具

Facebook-StethoGitHub地址:https://github.com/facebook/stetho常规配置因为是在开发阶段使用,所以可以只配置在debug模式中。debugImplementation 'com.facebook.stetho:stetho:1.5.0'在app Module中添加debug模式的Application实现类和Manifest。同理,还...

2019-05-14 13:57:00 371

原创 Total Control adb和环境变量adb冲突解决方法

用Total control控制手机或在PC做演示很方便。但在Android开发时,可能就有问题了,Total control使用的是安装目录下自带的adb.exe,和开发者配置在环境变量中的adb,很有可能版本不一致,这时候就会导致我们在命令行使用adb命令,或使用Android studio调试时,提示adb版本不匹配。> adb devicesList of devices at...

2019-03-23 15:36:54 3037

原创 Android Studio "错误: -source 1.7 中不支持方法引用(请使用 -source 8 或更高版本以启用方法引用)" 解决方法

错误信息错误: -source 1.7 中不支持方法引用(请使用 -source 8 或更高版本以启用方法引用)原因代码中使用了Java8的Lambda表达式新特性,java编译器默认未兼容java8。解决方法确认本地java sdk是否支持java8。如果版本小于1.8,请先更新Java SDK。在Project Structure =&gt; 模块名 =&gt; Proper...

2019-03-12 14:08:06 6671 1

原创 Android TimeoutException崩溃学习笔记

文章目录主要引发原因复现解决方法主要引发原因Java对象的finalize()方法处理超时。Java的Object对象中,有一个finalize()方法,默认实现为空。public class Object { // …… protected void finalize() throws Throwable { }}finalize()的官方Doc(android-28)如...

2019-03-04 18:33:58 1278

原创 Ubuntu编译Breakpad和Android集成breakpad笔记

Breakpad——Google出品的崩溃异常捕获和报告组件,详情:https://github.com/google/breakpad在Android中,用来捕获native层的崩溃异常,很方便。编译过程比较简单,主要参考上面github链接中的README.md,可能需要科学上网,这里不表。...

2018-12-05 10:59:10 1639

原创 Retrofit2.0笔记——addConverterFactory同时支持xml和json格式响应数据

Retrofit2的一个特色功能,就是通过addConverterFactory()方法设置一个数据转换器,可以将http请求的响应数据转换成JavaBean。如后台常见的两种返回数据格式:json和xml,分别可以用GsonConverterFactory和SimpleXmlConverterFactory进行转换。对应的gradle依赖分别是:implementation 'com.s...

2018-08-26 21:05:19 5626 3

原创 讯为IMX6UL开发板CAN接口测试学习笔记

问题原因移植iproute2的ip命令验证IMX6官方手册:i.MX_6_Linux_Reference_Manual.pdf CAN接口相关说明在Chapter 39。问题使用ip link set can0 up type can bitrate 125000命令设置并启动CAN接口时报错:ip: either &quot;dev&quot; is duplicate...

2018-06-23 17:27:45 2654

原创 Android 7.0新特性——长按出现快捷方式

简介一、静态配置1.1 创建shortcuts.xml配置资源文件1.2 在Manifest中添加配置二、动态配置1.1动态添加1.2动态删除1.3 动态添加和删除演示简介Android 7.0版本有一个新特性:如果app支持,可以通过长按app图标出现一些快捷操作。一些热门应用举例: (除了Chrome,Google出品的App几乎都是...

2018-03-15 16:46:02 4054 1

原创 Android 8.0后台运行策略学习

本文主要是对谷歌开发者官方微信公众号发布的【中文教学视频】Android Oreo 中的后台进程等文章的学习记录。概览Service限制前台应用的定义影响所有后台Service针对Service的选项adb测试命令广播限制针对静态隐式广播接收器的选项后台位置限制受影响的 API相关文档为了流畅的用户体验,从 API 26开始,Android ...

2018-02-09 14:21:39 5063

单片机开发小综和LCD1602_DS1032_DS18B20

由纯汇编语言编写的一个单片机小综和项目,可以显示日期,星期,时间和温度。 提供详细注释的源代码和proteus仿真图。在这里分享出来和大家交流学习。欢迎大家指出错误

2013-08-30

华为T8951手机Root完整工具包加详细教程

很实用的root工具,教程考虑了许多可能出现的意外情况,基本实现无障碍root手机!

2013-03-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除