avatar
文章
864
标签
158
分类
0

主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我
麦溪·在路上
主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我

麦溪·在路上

JNI学习之C++调用Java层的代码
发表于2022-01-05
[TOC] 概述
JNI学习之访问数据基础学习
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/tkwxty/article/details/103665532 概述JNI 中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是 JNI的基本数据类型,可以直接访问。而对象数组中的所有元素是一个类的实例或其它数组的引用,和字符串操作一样,不能直接访问 Java 传递给 JNI 层的数组,必须选择合适的 JNI 函数来访问和设置 Java 层的数组对象。阅读此文假设你已经了解了 JNI 与 Java 数据类型的映射关系。 下面让我们从JNI的基本数组操作函数开始,一步步带领读者攻破JNI对数组的处理。 JNI数组处理函数好了有了前面知识的铺垫,下面让我们来看看JNIEnv为我们提供了那些常见的数组处理函数。 1.1 GetArrayLength1.4 New<PrimitiveType>Array函数集这里的PrimitiveType指代的是一系列的JNI基本数据类型。 函数原型: 1NativeTypeArray New<PrimitiveType>Arr ...
JNI学习之JNI环境的基础
发表于2022-01-05
[TOC] 文章参考:https://weread.qq.com/web/reader/a80325c0715a39b7a806749 概述结构体JNIEnvJNIEnv是代表JNI环境的结构体,定义如下: 12345678910struct _JNIEnv;struct _JavaVM;typedef const struct JNINativeInterface* C_JNIEnv;#if defined(__cplusplus)typedef _JNIEnv JNIEnv;typedef _JavaVM JavaVM;#elsetypedef const struct JNINativeInterface* JNIEnv;typedef const struct JNIInvokeInterface* JavaVM;#endif 从代码看,JNI的定义还区分了C和C++。因为Android中已经定义了宏__cplusplus,所以这里可以只关注C++部分的代码。在C++部分,JNIEnv等同于结构_JNIEnv,下面是_JNIEnv的定义: 12345678910struct ...
Android之C++多线程学习
发表于2022-01-05
[TOC] 概述Android C++中的线程同步主要就是对pthread的mutex和condition的封装。 MutexAndroid Mutex的实现源码位于/system/core/libutils/include/utils/Mutex.h,我们先来看一下Mutex类的具体实现: 123456789101112131415161718192021222324252627282930class Mutex {public: enum { PRIVATE = 0, SHARED = 1 }; Mutex(); Mutex(const char* name); Mutex(int type, const char* name = NULL); ~Mutex(); // lock or unlock the mutex status_t lock(); void unlock(); // lock if p ...
View事件分发机制基础学习
发表于2022-01-05
[TOC] 文章参考:https://wangkuiwu.github.io/2015/01/04/TouchEvent-ViewGroup/ 文章参考:https://blog.csdn.net/geduo_83/article/details/86560896 文章参考:http://www.azzwen.com/2016/02/17/Android-%E4%BA%8B%E4%BB%B6%E4%BC%A0%E9%80%92%E5%88%86%E6%9E%90/ 文章参考:https://wangkuiwu.github.io/2015/01/04/TouchEvent-ViewGroup/ 下面,我们来介绍View的一个核心知识点:事件分发机制。我们知道View的事件分发机制是非常重要的。事件分发机制不仅仅是核心知识点更是难点,当然也是面试过程中必不可少的面试环节。另外,View的另一大难题滑动冲突,它的解决方法的理论基础就是事件分发机制,因此掌握好View的事件分发机制是十分重要的。本节将深入介绍View的事件分发机制。 点击事件的传递当我们的手指触摸到屏幕上的View的时候,事 ...
View事件分发机制问题学习
发表于2022-01-05
[TOC] 文章参考:https://mp.weixin.qq.com/s/YyJu3b_-InWjgyVXz48B4g 概述我们将整个Touch事件可以分解为以下几个部分: Touch事件如何从屏幕到我们的App Touch事件到达App后怎么传递到对应页面 Touch事件到达对应页面后内部怎样分发 其中与上层软件开发息息相关的就是第3条,也是我们最关注的,它也可以拆解为以下几个问题 ViewGroup是否拦截事件,拦截与不拦截后分别怎么处理? 子View是否拦截事件,拦截与不拦截后分别怎么处理? ViewGroup与子View都不拦截,最终事件如何处理? 如何处理事件冲突? 从屏幕到APP硬件与内核部分当我们触摸屏幕或者按键操作时,首先触发的是硬件驱动 驱动收到事件后,将相应事件写入到输入设备节点,这便产生了最原生态的内核事件当屏幕被触摸,Linux内核会将硬件产生的触摸事件包装为Event存到/dev/input/event[x]目录下 这样做的目的是将输入事件封装为通用的Event,供后续处理 SystemServer部分我们 ...
Android之性能监控框架
发表于2022-01-05
[TOC] 解决Could not find method ndkVersion() for arguments on object of type com.android.build.问题解决方案:https://blog.csdn.net/u012558210/article/details/106427634 刚升级完Android Studio 4.0,偶然用到了 NDK 相关的项目,运行后出这个错,还以为我这台电脑没有装相应的 NDK 点击Update。 解决问题通过提示Open File 发现文件的 android 标签的最下面AS给自动加了这么一行: 1ndkVersion '21.2.6472646' 这行就是问题所在了,但去掉后还会出现最开始的NSK not configured的错误,套娃出现。这是因为项目中没有配置NDK的路径,编译时找不到了,所以打开local.properties文件,发现果然没有ndk的配置,加上本机的NDK路径: 再次编译,SUCCESSFUL!
Android之SELinux安全机制基础
发表于2022-01-05
[TOC] 概述Android应用程序是运行在一个沙箱中。这个沙箱是基于Linux内核提供的用户ID(UID)和用户组ID(GID)来实现的。Android应用程序在安装的过程中,安装服务PackageManagerService会为它们分配一个唯一的UID和GID,以及根据应用程序所申请的权限,赋予其它的GID。 有了这些UID和GID之后,应用程序就只能限访问特定的文件,一般就是只能访问自己创建的文件。此外,Android应用程序在调用敏感的API时,系统检查它在安装的时候会没有申请相应的权限。如果没有申请的话,那么访问也会被拒绝。对于有root权限的应用程序,则不受上述沙箱限制。此外,有root权限的应用程序,还可以通过Linux的ptrace注入到其它应用程序进程,以及系统进程,进行各种函数调用拦截。 本系列主要讲代码加壳、注入和拦截技术的,包括:
0SELinux开发入门指南之SELinux基础知识
发表于2022-01-05
[TOC] 概述
Kotlin之基础语法
发表于2022-01-05
[TOC] 基本语法定义包包的声明应处于源文件顶部: 12345package my.demoimport java.util.*// …… 目录与包的结构无需匹配:源代码可以在文件系统的任意位置。 参见包。 定义函数带有两个 Int 参数、返回 Int 的函数: 1234567891011//sampleStart// 参数类型的声明,放在参数变量的后面,返回值也放在函数的后面fun sum(a: Int, b: Int): Int { return a + b}//sampleEndfun main() { print("sum of 3 and 5 is ") println(sum(3, 5))} 将表达式作为函数体、返回值类型自动推断的函数: 1234567//sampleStartfun sum(a: Int, b: Int) = a + b//sampleEndfun main() { println("sum of 19 and 23 is $ ...
1…232425…87
avatar
Frewen.Wang
在青麦地上跑着,雪和太阳的光芒
文章
864
标签
158
分类
0
关注我
公告
This is my Blog
最新文章
无题2023-12-22
无题2023-07-28
无题2023-07-27
基于Windows11安装Ubuntu双系统2023-07-20
无题2023-07-17
标签
系统源码 滤波算法 工具使用 云存储 卷积神经 Linux Android框架 STL函数 Activity pytorch NEON 编译脚本 go 渲染机制 OpenGL 编程工具 虚函数 RectNative JVM Linux命令 Kotlin基础 OpenMP AI const IDEA QNN C++ SELinux 目标检测 软件安装 threading 量化方法 四大组件 编译构建 SystemServer 开源项目 unique_ptr Java基础 系统安装 BroadcastReceiver
归档
  • 十二月 20231
  • 七月 20234
  • 六月 20231
  • 四月 20231
  • 三月 20232
  • 二月 202311
  • 一月 20232
  • 十二月 20221
网站资讯
文章数目 :
864
本站总字数 :
778.1k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By Frewen.Wang
框架 Hexo|主题 Butterfly