JNI实战
C/C++ 调用 Java 数据类型 Java 传递各种类似数据给 C++ 示例: Kotlin 代码 /** * Kotlin 将数据传递到 native 中 */ private external fun testJavaDataToCpp( boolean1: Boolean, byte1: Byte, char1: Char, short1: Short...
C/C++ 调用 Java 数据类型 Java 传递各种类似数据给 C++ 示例: Kotlin 代码 /** * Kotlin 将数据传递到 native 中 */ private external fun testJavaDataToCpp( boolean1: Boolean, byte1: Byte, char1: Char, short1: Short...
JNI 入门 JNI 概述 什么是 JNI? JNI,全名 Java Native Interface,是 Java 本地接口,JNI 是 Java 调用 Native 语言的一种特性,通过 JNI 可以使得 Java 与 C/C++ 机型交互。简单点说就是 JNI 是 Java 中调用 C/C++ 的统称。 什么是 NDK? NDK(Native Development Kit)...
JNI 基础 JNI 流程 JNI 中如何调用 Java 代码? JNI 调用 Java 中的代码过程有点类似 Java 中的反射 获取 jclass 对象,为了能够在 C/C++ 中调用 Java 中的类,jni.h 的头文件专门定义了 jclass 类型表示 Java 中 Class 类 获取属性方法 构造一个对象 Cmake 在 Android Studio...
白屏优化 图片白屏 # 得物App白屏优化系列|图片库篇
进程工具 获取进程名 获取进程名的常规方法,通过 ActivityManager 在多进程的 APP 中,常常需要知道当前进程是主进程还是后台进程?还是什么进程。 如下代码,是我们常见的一个用法,在进程启动时,根据进程名判断当前进程是哪个进程: /** * 通过ActivityManager 获取进程名,需要IPC通信 */ public static String getCurr...
已经 Root 的手机 找到程序的包名 adb shell pm list packages package:android package:cn.wps.moffice package:com.android.backupconfirm package:com.android.bluetooth package:com.android.browser package:com.andro...
Excalidraw Excalidraw 介绍 Excalidraw 本是开源的在线协作手写软件,来自匈牙利的 Zsolt Viczian 大叔将其融合进了 Obsidian。这个融合是高度融合,目前与原项目已经大相径庭了,主要差别在于对 Obsidian 的适配,包括双链,文件拖拽,嵌入笔记并实时更新,脚本系统,图库系统,手写压感,pdf 批注和引用等。这样强大的插件,完全可以当作一...
Android 12 对 App Widget 的更改 Enhance your widget Android 12 更改 选择和展示的统一变化 即使未做任何适配,在 12 上直接运行的小组件与 11 就有明显不同,主要表现在选择器和展示的效果。以 Chrome 和 Youtube Music 的小组件为例: ![ 600](htt...
Systrace 基础 - 查看 SystemServer Systrace 中的 SystemServer 一个比较重要的地方就是窗口动画,由于窗口归 SystemServer 来管,那么窗口动画也就是由 SystemServer 来进行统一的处理,其中涉及到两个比较重要的线程,Android.Anim 和 Android.Anim.if 这两个线程。 以应用启动为例,查看窗口时如何在...
Choreographer 演进 引入 Vsync 之前的 Android 版本,渲染一帧相关的 Message ,中间是没有间隔的,上一帧绘制完,下一帧的 Message 紧接着就开始被处理。这样的问题就是,帧率不稳定,可能高也可能低,不稳定,如下图 ![image.png 900](https://raw.githubusercontent...