JustTodo开发(一) 项目初始化

正如很多开发者一样,进入一个新平台开发连带学习,通常都会开发一个极简的应用,很多人都会开发Todo类应用,这类应用一般来说比较简单容易上手。我也打算开发一个,一来是练手,二来是写一个自己用的极简Todo类应用。目前市面上的Todo类应用,一般来说,都比较复杂,太多我不需要的功能了,而且还有一些增值付费,对于我来说...

MacOS SwiftUI托盘应用开发

最近想利用闲暇时间,做一些托盘工具类app的开发,主要是方便自己在Mac上的部分操作。在遇到各种问题后,总结了一下实现托盘SwiftUI应用的两种方式。 小声吐槽:swiftUI在macOS上的适配真的是很烂,相当多的组件可以说是不完善甚至是不可用的状态,似乎苹果也没有完善的意思,这已经是swift迭代到5.1...

MacOS项目引入c语言源码

在上一篇文章macOS项目中引入c静态库中,为阐述了如何在macOS项目中引入c语言的静态库,但是这样做有一个问题,就是静态库中的代码报错,会无法定义报错的位置,进而不利于排查问题。为了解决这个问题,我修改为源码引入c语言库。很多教程中都提到,要引入c语言库的源码,需要将源码和头文件都拷贝到macOS项目的目录中...

macOS项目中引入c静态库

最近在写一款多平台的文件传输工具,Android平台已经写的差不多了,现在正在写macOS端,为了多端共享同一套底层协议代码,通讯协议部分,使用了c语言开发,对于Android通过jni调用c的相关代码,我已经驾轻就熟了,但是在macOS项目里,添加静态库并成功调试,我还是有一些懵逼。好在通过ChatGPT的各种...

相机录像新姿势-OpenGL共享上下文+MediaCodec

一、前言承接上一文章Camera无变形任意尺寸预览,我们已经实现了无形变的任意尺寸的相机画面预览。接下来要完成相机的相关录像、拍照、扫码等功能,最重要也是最难的就是录像部分。 最终示例代码可以参考我的Github: iCamera。 二、技术要求我们要实现的录像功能技术要求如下: 所见即所得,预览画面什么样,最...

Camera无变形任意尺寸预览

在以往做Camera应用开发时,遇到一个问题,就是相机的预览如何做到在任意尺寸完全无变形的画面预览与视频录制。做过相机应用开发的朋友都知道,相机的预览尺寸并不是可以随意设置的,而是需要在支持的预览尺寸中选择一个,你的预览的view大小必须与选择的尺寸相匹配,才能保证画面不变形,但是这在实际开发中是无法应对各种各样...

J2V8深度绑定机制分享

一、问题背景在小游戏开发中,常见的一种操作就是设置绘制属性,比如lineWidth、fillStyle这种,这在WebView方案中,因为全跑在JS环境中,没有任何问题。但是在J2V8方案中,因为绘制逻辑在JS层,绘制实现在Java层,这就导致JS层的属性设置,无法传达到Java层。 本文项目地址:v8x 123...

软键盘高度监测最佳实践

最近终于总结出最佳的软键盘高度监测方案了,特此分享出来。源码在此:KeyboardObserver.kt 视觉效果当开启showDebug时候,可以看到这样的可视化的键盘高度监测。 源码分析简单来说,这里说通过两个PopupWindow来实现的键盘高度测量。一个用于测量当前屏幕状态可绘制区域的最大高度,一个用于跟...

难忘的调试技巧

这里用于总结一些在工作中发现的调试技巧。 Handler是否繁忙?这一技巧来自于最近工作中,做子线程渲染时,发现有卡顿、手势操作延迟过大的情况,而渲染的子线程是一个HandlerThread,为了判断此线程是否有大量耗时操作,探索出一些技巧。 ##判断HandlerThread是否繁忙##可以通过对应的Handl...

Jitpack托管库

以前只是用过别人托管在Jitpack上的库,自己的库都是托管在MavenCentral上,但是MavenCentral使用起来,相比Jitpack还是有些麻烦。经过简单尝试和学习,了解了Jitpack的使用,做一下简单记录。 我第一个托管在Jitpack上的库——J2V8Helper Step 1: 在libra...