android 开发
文章平均质量分 58
右手的鼠标
学习没有尽头
展开
-
Android SDK 加壳加固
Android 加壳加固流程,支持 SDK 和 APK原创 2022-06-24 11:34:26 · 1276 阅读 · 10 评论 -
Android 视频采集/预览——原生实现
书接上回,上一篇文章说了怎么播放对端 flv 文件流,这一回讲一讲怎么显示本地的视频画面,以及本地音视频内容的采集。视频采集和本地渲染都是在 explorer-device-video 这个模块中实现的。示例源码下载本地视频采集视频采集依赖了 RecordThread 这个类,这就是一个采集线程,主要就是通过 MediaCodec 对采集到音视频进行编码,编码方式是 H264(H265 的编码格式采集粗来的无法正常播放)public class RecordThread extends Thread原创 2021-12-03 15:46:57 · 4872 阅读 · 2 评论 -
如何删除已经发布到 mavenCentral 中的包
记得最开始写 java 的程序,很多时候时候都要下载一个 jar 包,然后导入到工程,就可以使用第三方的功能;后来很多都依赖 maven 实现远程构建,对我们码农来说,确实很方便,写代码也更友好了。从使用者角度触发,不知道到大家有没有想过,假如有一天提供支持库的作者一下子不开心,把这些库删除了或者禁用了,怎么办,会不会心里有一万只神兽在奔腾。从作者角度来看(因为第一次处理,一个很不专业的作者,发布了一个不应该存在的包),其实大家不用这么担心,作者也不是神仙,作者也会出错,我搞错了怎么办,我能不能撤销,网原创 2020-08-15 11:24:03 · 5128 阅读 · 0 评论 -
Android studio 编译 aidl 中文注释乱码
使用 AS 导入新的工程,编译不通过。发现存在中文注释的 aidl 无法生成完整的 java 接口文件,同时中文注释也会变成乱码。build 窗口提示如下信息:解决方法 1如果将 aidl 文件中的中文注释删掉,就可以顺利编译了。解决方法 2很多时候注释对编码有很大帮助,不想删除。关闭 android studio,打开 android studio 安装目录下的 bin 目录:打开android studio 安装目录下的bin目录:找到 studio.exe.vmoptions,st原创 2020-08-06 12:51:02 · 2667 阅读 · 3 评论 -
Android studio 依赖远程构建的库, 实现 sdk 依赖关系的传递
停更有一段时间了,并不是自己不想写。主要是不知道写什么内容,自己没有试过的,直接搬过来没有什么意义,还是想写写自己经历过的;再一个就是,工作比较忙,也没什么时间去看看新的内容,这点在大厂好像都差不多,其他不好说,至少菊花厂和鹅厂是这样的。这次的内容和最近的工作内容有关,最近在做 Android sdk 的开发,开发 sdk 的时候,内部使用了一些第三方库,有的是远程构建,有的是依赖 libs 下的 aar/jar。如果使用的 sdk 依赖了第三方的库,但是没有做一些特殊处理(sdk 依赖的传递,或者把本地原创 2020-07-25 11:19:56 · 1586 阅读 · 2 评论 -
Android 打包 —— aar 嵌套引用本地 aar 的打包
Android studio 的 module 打包一般会打包成 aar 的形式。如果 module 引用了一个本地的 aar,在打包的时候,这个被引用的 aar 是不会打包进去的,这种设计思想是比较好的,可以很好的避免包冲突的问题。例如 App 引用了两个 aar(1.aar 和 2.aar),1.aar 和 2.aar 都依赖了第三方的 3.aar,如果1.aar 和 2.aar 都把 3.a...原创 2020-04-15 13:56:46 · 9492 阅读 · 9 评论 -
Android 内存管理
初识内存优化在 Android 的性能优化的各个部分里,内存的问题绝对是最令人头疼的一部分,虽然 Android 有垃圾自动回收机制不需要手动干预,但也恰因为此,出现内存问题如内存泄漏和内存溢出等,如果对内存管理机制不熟悉,会更加难以排查问题。内存分配谈 Android 的内存,就不能不提 Java 的内存管理。Java 程序在运行的过程中会将其管理的内存分为若干个不同的数据区方法区:方...转载 2020-01-16 16:42:56 · 1720 阅读 · 2 评论 -
ARCore 使用 SceneForm 框架 —— 三维空间中,通过三个点绘制平面(Plane)
Sceneform 框架下通过三个点绘制平面(Plane)两个点确定一条直线,三个点确定一个平面,绘制直线的比较好处理,凭空添加平面就很少见了,这篇文章就是基于这个需求做的...原创 2019-12-10 18:03:56 · 5904 阅读 · 17 评论 -
ARCore 使用 SceneForm 框架 —— Image(通过 acquireCameraImage 获取)转 Bitmap
Sceneform 框架中 Image(通过 acquireCameraImage 获取)转 Bitmap调试工程的时候,提出需要接管 sceneform 框架的视频数据,说白了就是接管帧数据,也就意味着,处理完帧数据以后,需要手动转为可以显示的图片资源;网上一大片 ImageView 转 bitmap 什么鬼的,已经不是帧数据了,要想从 sceneform 框架中获取当前摄像头的帧数据可以通过...原创 2019-12-06 17:32:18 · 2589 阅读 · 12 评论 -
ARCore 使用 SceneForm 框架 —— 使用云锚点功能(下)(功能实现)
基于 SceneForm 的云锚点实现(二)(代码实现)上一篇文章介绍了云锚点的开发,需要依赖什么文件和服务,本文主要会介绍云锚点的功能是怎么实现的布局文件先看一下布局文件,布局文件很简单,两个提示框,statusTips 提示框提示当前云锚点同步的状态,editText 提示框显示云锚点的 ID;两个按钮,clean 用于清空界面的锚点,ayns 用于加载云锚点<?xml vers...原创 2019-12-03 10:31:08 · 5741 阅读 · 4 评论 -
ARCore 使用 SceneForm 框架 —— 使用云锚点功能(上)(环境准备)
基于 SceneForm 的云锚点实现(一)(环境准备)注:云锚点的开发需要翻墙!翻墙!翻墙!重要的事情说三遍哈准备 google-services.json 文件就是下面截图标注的文件,这个文件是根据包名生成的,需要翻墙登录 Firebase 生成创建一个自己的项目项目名称可自定义没啥好说的,继续 就好了还是一样 继续添加 Firebase 的账号,点击 添加 Fire...原创 2020-01-08 11:30:09 · 6686 阅读 · 13 评论 -
ARCore 使用 SceneForm 框架 —— 实现的子弹射击(下)(子弹击中目标的撞击测试)
基于 ARCore 的 SceneForm 框架实现 3D 场景中的子弹射击目标效果在之前的一篇文章《基于 SceneForm 实现的子弹射击(绘制子弹运行轨迹)》实现了子弹射击的效果,一般第一人称射击游戏,是需要实现击中目标的效果,本文将阐明子弹是如何击中目标首先先看一下实现的效果图射击与击中目标思路1、加载目标模型2、在 3 维空间中随机生成若干个目标3、加载一个子弹模型4、规...原创 2019-11-25 18:11:35 · 4346 阅读 · 0 评论 -
ARCore 使用 SceneForm 框架 —— 实现的子弹射击(上)(绘制子弹由近及远的运行轨迹)
基于 SceneForm 实现的子弹射击(绘制子弹运行轨迹)Sceneform 框架很强大,不了解 Sceneform 的时候,觉得要想做 3D 场景需要会 OpenGL,而 OpenGL 的学习曲线很陡;接触到这个框架之后觉得小白也可以很快上手,甚至可以实现第一人称射击的效果注:自己学习 SceneForm 有一段时间了,不过没有发现模拟重力场的接口,不知道是不是自己漏掉了模拟射击效果的思...原创 2019-11-22 10:56:44 · 5188 阅读 · 2 评论 -
ARCore 使用 SceneForm 框架 —— 三维空间中不基于 Plane 加载 3D 模型
ARCore 的 SceneForm 框架在没有 Plane 情况下的绘制 3D 模型场景需求Arcore 的 SceneForm 提供的示例都是基于获取到 Plane 后,基于 Plane 的上可以跟踪的点绘制 3D 模型,然而对于有些特殊情况,例如空中飞行的点,需要在没有平面的前提下去绘制 3D 模型示例代码1、对 SceneForm 示例修改时发现,应用在进入到探测平面的界面时,会自...原创 2019-11-14 18:20:39 · 5270 阅读 · 3 评论 -
ARCore 使用 SceneForm 框架 —— Android studio 生成 sfb 后缀的 3D 模型资源
ARCore 的 SceneForm 框架导入 obj 后缀的 3D 模型Sceneform 是一个可以让没有 Opengl 基础的 2D 开发者,迅速上手 3D 开发的框架,涉及到 3D 开发,必然会有很多资源文件,那么这些资源文件是如何导入到我们的工程里的呢,SceneForm 提供了一个插件,可以帮我们完成导入的工作。首先需要安装 Google Sceneform Tools 插件,可以...原创 2019-11-16 02:24:12 · 5604 阅读 · 0 评论 -
ARCore 使用 SceneForm 框架 —— 控制 ModelRenderable 显示尺寸/边界
SceneForm 框架下控制 3D 模型显示尺寸/边界通过之前的博客,可以完成 3D 模型的显示,但是当我们换了一个其他模型的时候,会发现存在模型尺寸过大或者过小;想想也是可以理解的,别人制作的模型文件,又不是针对你的世界坐标系取实现的,那尺寸和你的世界坐标系的不匹配自然也就是正常。我们可以发现 SceneForm 提供了一个 setWorldScale 来设置 3D 模型的显示比例;但是实...原创 2019-11-21 10:01:10 · 4923 阅读 · 4 评论 -
ARCore 使用 SceneForm 框架 —— 使用 ObjectAnimator 实现旋转、移动动画
对应 Sceneform 框架,官方给出了几个示例代码,其中一个示例工程 solarsystem (太阳系),给出了旋转动画是如何实现的旋转动画为了使代码看着简单,对示例代码中实现旋转的部分做了简化,就有了旋转类 —— RotatingNodeclass RotatingNode : Node() { var rotationAnimation: ObjectAnimator? = ...原创 2020-01-06 12:56:50 · 5380 阅读 · 0 评论 -
ARCore 使用 SceneForm 框架 —— 自定义每个单元格都有点击响应的 3D 规则镂空多面体
Sceneform 框架下绘制锥形规则多面体通常情况下,显示一个 3D 模型,只要有对应的资源就可以实现了,但是这个仅仅是通常情况,肯定会有特殊情况的,这不刚好憋了好长时间,需要憋出一个特殊情况的大招;实现一个规则锥形多面体,不过在此基础上支持配置成圆柱形规则多面体先看看效果图多面体实现思路看起来是一个很复杂的东西,不过拆解出来后,思路就会变得比较简单了先确定一个加载点的位置,然后加载...原创 2019-12-31 11:57:55 · 2507 阅读 · 0 评论 -
Android jni 开发中 Integer 数值不正确的坑
Android jni 开发中 Integer 数值莫名改变的问题这是一个让我记忆深刻的问题,排查这个问题差不多用了一个礼拜,每天都在不知所措中度过;其实当时这个问题并不会造成特别大的影响,只是在数值显示上有点问题,而且时间比较短;最开始是用 App 手动测试,测试人员都没有察觉到这个问题;后来自己上了自动化测试框架,才捕获了这个瞬间的问题。问题现象:调用了通过 jni 封装的接口后,某一个固...原创 2019-11-23 16:58:38 · 2550 阅读 · 0 评论