- 博客(482)
- 资源 (103)
- 收藏
- 关注
原创 Android JNI常用API函数介绍
(1)JNIEnv 结构体相关函数(2)JavaVM 结构体相关函数(3)jclass 相关函数(4)jobject 相关函数(5)字段相关函数(6)数组相关函数(7)字符串函数其实主要的JNI API 函数就上面这些相关的内容;大部分会用,那么JNI 的API 就没啥难度了。其他的API函数可以看jni.h文件,但是这个文件是没有注释的,根据字面意义理解就差不多了。除了JNIEnv和JavaVM使用的获取使用比较少,其他API使用的还是比较多的;
2024-03-14 17:01:51 1033 1
原创 Android JNI静态注册和动态注册方法详解
这里的JNI静态方式注册方法和JNI的static方法是没有关系的。本文主要介绍jni.cpp代码中动态注册方法的讲解。很多人对这块知识还是比较陌生的,什么是静态注册?什么是动态注册?有些人可能都不清楚。JNI静态注册和动态注册是哪里的代码?什么时候使用静态注册?什么时候使用动态注册?为什么呢?其实一般情况用不到动态注册,但是复杂JNI项目或者系统源码中可能会用到动态注册。特别是系统源码中基本都是用的动态注册的形式,注册JNI方法,所以是有必要进行学习的。
2024-03-14 10:13:20 613
原创 Android13 Studio新建的代码编译报错INSTALL_PARSE_FAILED_MANIFEST_MALFORMED解决
这个错误信息表明安装失败,原因是Android应用的Manifest文件存在格式错误。Manifest文件是每个Android应用必不可少的一部分,它包含了应用的名称、版本、权限等重要信息。如果Manifest文件中的某些信息不符合规定或者有语法错误,系统将无法解析这个文件,导致应用无法安装。新建的项目为啥会报错呢?其实是Android13开始,四大组件都是要设置 exported 属性,否则会报错。其实就是缺少了必要的信息。给组件添加 android:exported 属性即可。
2024-04-20 20:26:36 454
原创 Android Studio 新建Android13 代码提示Build Tools revision XX is corrupted无法编译解决
Android Studio 新建Android13或者app下的build.gradle文件配置 compileSdkVersion 33上面提示看似简单,提示重新卸载 再下载Build Tools33.0.0就行了,但实际上重新下载也不行!其实就是SDK新版本编译环境问题,不用重新下代码,从低版本复制两个文件过去或者修改两个文件的命名就行。具体原因是SDK对应版本build-tools里面缺少了dx.bat和dx.jar,解决方法从低版本复制一个过来,
2024-04-20 20:20:37 263 1
原创 Android Studio项目加载预编好的so库
Android 项目中需要调用别人的so的实现,那么我们的应用需要如何操作呢?本文主要介绍Android Studio中如何调用现有的so库代码。Android JNI生成的so库有很多不同架构类型,比如:armeabi、armeabi-v7a、arm64-v8a、x86;
2024-03-27 16:00:00 1151
原创 Android JNI SO库和对应的CPU架构详解
Android JNI生成的so库有很多不同架构类型,比如:armeabi、armeabi-v7a、arm64-v8a、x86;Android 系统不同的cpu架构就要使用不同类型的so库,如果不考虑内存大小,放全套也是没有问题的;但是实际使用中,很多时候只会放一套或者两套就可以了。本文介绍Android cpu不同架构的so库区别,以及如何查看当前系统是什么cpu架构,以便在实际场景中做出最优选择。
2024-03-27 08:42:59 1033
原创 Android Preference简单介绍
想刀一个人的心是藏不住的,我要吐槽一下Google工程师;写代码就写代码,Settings代码非要写Preference那套布局.没怎么学过Preference相关知识,之前很多次想修改获取一直Settings里面的某个功能或者布局就看得蛋疼。PreferenceScreen、PreferenceCategory、SwitchPreference这个东西,看Settings里面的代码是一脸懵逼。如果你把Preference相关的类和布局当成普通类,想要修改一两个文件的布局界面和具体事件,
2024-03-21 11:06:16 906 1
原创 Android adb命令发送广播介绍
Android 广播除了代码中发送,还可以使用命令模拟发送,只要应用代码中进行了监听,都可以正常接收到的。掌握手动发送广播命令,可以方便某些代码的调试。所以学习一下Android adb方式 发送广播命令是有用的。其中, `` 是广播的动作,可以是Android系统定义的动作,也可以是自定义的动作;-d是数据的URI;-t是数据的MIME类型;-c是广播的类别;-n是广播的组件;-f是标志位;–es|ei|ef` 是额外的键值对参数。
2024-03-21 08:49:50 2058 1
原创 Android JNI 普通方法和静态方法详解
Android Jni中Java的静态方法和普通方法有什么区别?很多人可能都不清楚,如果想知道的可以了解一下。这个问题很少人会关注,一个是因为很少会静态方法调用JNI或者回调静态的Java方法;另外一个是因为知道了或者调试过就不难了,所以很多人觉得没必要讲解和记录。但是对于JNI 的初学者来说静态方法还是比较陌生的,很容易会懵逼的,不知道有啥区别。本文主要讲解一下上面两种静态方法在JNI中的区别,有兴趣的可以看看。
2024-03-06 16:59:22 1284
原创 Android JNI 复杂数据demo ,字符串、数组对象等数据操作讲解
Android JNI复杂数据的传输,比如数组,字符串等数据传给底层处理,对于JNI使用不多的开发者,可能开发会比较吃力。本文主要介绍JNI复制数据的传递和打印,不是很复杂的JNI Demo代码,但是对于复杂数据的处理的使用是很有帮助的。
2024-03-06 16:53:36 1156
原创 Android JNI复杂用法,回调,C++中调用Java方法
/创建对象的本地变量//获取类对象I)V");上面(1)和(2)是没什么研究价值的,NewGlobalRef和FindClass都是固定的写法。(3)和(4)的不用方法的调用区别就比较大了,使用不同的api函数还可以修改Java的变量属性。静态方法和动态方法调用的api函数也不一样,有返回值的方法和没有返回值的方法调用的api函数也是不一样的。并且Java方法或者变量即使是private修饰的也不影响cpp调用过去,因为反射是不受修饰符影响的。
2024-03-02 17:39:58 1317
原创 Android Jni添加打印(C++打印)
Android Jni中添加日志打印其实就是C/C++日志打印Android环境的C/C++代码打印,可以添加相关头文件后,调用打印方法跟Android打印类似,也是有打印级别,I,D,W,E#include //添加头文件#define LOG_TAG "TstCPlus" //定义TAG其他级别打印也是同理使用。上面的方法把定义都写在打印的定义都写在一个类里面了,如果多个类使用打印就不方便了,
2024-03-02 17:34:07 1325
原创 Android Jni的介绍和简单Demo实现
JNI 全程:JNI(Java Native Interface),通俗翻译:Java本地方法官方说法:提供一种Java字节码调用C/C++的解决方案,JNI描述的是一种技术。所以这里的Nativie的本地的意思就是C/C++,所以JNI通俗理解就是Java调用C/C++的方案技术。//定义变量和方法private:int number;public://定义方法。
2024-02-26 09:19:47 1531
原创 Android13 设置固定热点ip地址192.168.43.1
Android 热点ip一般的系统都是随机生成的,地址一般是:192.168.XX.XX如果要设置成一个固定的ip地址,就需要适配系统代码。相关的适配代码主要都在 IpServer.java 里面。为啥要设置固定热点ip?一般是投屏软件需求,或者其他一些开机或者打开热点后被自动连接场景的需求。
2024-02-26 09:05:46 2356
原创 成为CSDN博客优质创作者或者博客专家吧
最近申请成为了CSDN博客专家,有想法的可以加入。写了CSDN技术博客也有七八年了,刚开始只是想记录一下学习的内容,防止以后忘记这些学习到的知识,毕竟人的大脑是功能有限,学习后不一定能记忆很久,所以写下来二次回忆能快速入手,尽管有时候工作很忙,有时候一两个月都没写博客,但是后续经过一些思想转变,发现创造文章不仅对自己有好处,也能给别人提供一些帮助,所以觉得还是很有必要继续坚持创作下去的。既然写了为何不把它写得更好呢,成为博客专家那不是更好吗,
2024-02-08 12:48:09 945
原创 2023年总结加2024年展望
转眼间到了2024年2月8号,离2024阴历新年只有两天了。不得不说光阴似箭,日月如梭,仿佛2023年一瞬间就过去了,一时间想不起来过去发生了什么事情。所以还是要静下心来想想一年都发生了什么,下一年要如何进步,这个也是写这篇文章的美好初衷。也希望我写的内容对大家会有些点帮助或者感想。2023年对于新冠疫情来说就是一句话:再困难的时光总会过去的。其实这句话对于我们很多都是有相当大的激励作用的,没错,困难的时光总会过去的,这个也是我们时常会在经历磨难后会在心里说的话。
2024-02-08 12:26:16 490
原创 Android 应用添加系统签名权限的几种方式实现介绍
Android 应用添加系统签名就能获取到系统权限调用一些系统接口,添加系统签名的方式主要包括:在Android Studio中配置签名文件生成apk 和 在源码目录编译添加系统签名生成apk。本文介绍的都是一些基础的签名知识,后续延伸介绍相关权限内容。有兴趣的可以进行了解。源码中生成 jks 签名文件:android {。。。//证书信息在这里配置main {storeFile file("./platform.jks") //签名文件路径,根目录release {
2024-02-04 12:51:01 1739
原创 Android13 系统源码适配安装可卸载的三方apk应用
本文主要介绍 手机的三方应用比如游戏,微博等应用,在源码中如何默认配置到手机中的。Android手机中的系统应用是无法手动卸载的,但是这些三方应用安装后是可以手动卸载的。源码编译中配置系统应用是比较简单的,只要在apk文件并且再Android.mk或者Android.bp中进行配置即可。但是如果要默认配置三方应用确实有点麻烦,网上很多文章讲得都比乱,大部分只是贴了相关代码,基本没有介绍完整流程和分享解决配置过程还有一些编译报错。
2024-02-04 12:42:35 1278
原创 Android.mk和Android.bp的区别和转换详解
简单的说:Android.mk和Android.bp都是用来编译出类库.jar,应用文件.apk,动态库.so,静态库.a等等作用。Android.mk就是一个GNU make语法的脚本文件。Android.bp文件是Android 7.0及更高版本中引入的一种构建脚本文件,是使用Starlark语法编写的,它是一种基于Python的轻量级脚本语言。他们的关系如下:ninja是一个编译框架,系统会根据相应的ninja格式的配置文件进行编译。
2024-01-19 18:37:40 1723 5
原创 Android系统目录priv-app 和app 详解
Android4.4增加了/system/priv-app/目录,那么它与/system/app/目录有什么差别?本文主要从定义,作用,具体效果等方面进行分析。有一些是网上没有介绍到的内容。如果只是知道 priv-app 目录比 app目录权限大一点,但是不了解具体区别的可以看看。(1)普通应用。只用到了普通权限,比如上网权限等等。(2)system/app 系统应用,用来可以限制无法手动卸载,对系统权限没有要求的情况,无法调用系统api。
2024-01-19 18:32:06 1681 1
原创 Android.bp详解+入门必备
Android.bp 就是为了用来替换 Android.mk 一个脚本语言文件。如果学习过Android.mk,在学习一下Android.bp应该是很easy的,如果不是很熟悉可以学习了解一下。Android.bp和Android.mk作用都是一样的,在系统源码中用来编译出类库.jar,应用文件.apk,动态库.so,静态库.a作用。其中关键的就是模块类型定义和不同的属性定义。Android.bp文件用类似json的简洁声明来描述需要构建的模块。
2024-01-16 18:18:21 2785 3
原创 Android.mk详解+入门必备
网上有很多关于Android.mk详解的文章,但是感觉比较散,所以有必要写一篇更加完整一点的,更加容易入门一点的文章。Android.mk 博客介绍 :简单的说:Android.mk就是一个GNU make语法的脚本文件,用来编译出类库.jar,应用文件.apk,动态库.so,静态库.a作用。其中关键的就是include类型和不同的属性定义。本文主要对编译 apk 的 Android.mk 文件进行举例和介绍,包含完整示例的展示以及重要属性的介绍。编码类型和关键字。
2024-01-16 18:07:45 1508
原创 Android 打开热点2.4G系统重启解决
Android 设备开机后第一次打开热点2.4G系统重启?以5G形式打开热点没有问题!这个问题咋回事呢?和底层驱动的人一起分析了一下,本文进行分享一下分析和解决过程。这种问题一般应用开发不会遇到,只有一些系统开发,或者系统新方案调试可能会遇到。查看了AndroidRuntime 和crash 日志,重启前没啥异常日志。这种情况一般是底层/驱动未完全适配导致。
2024-01-06 14:32:12 1313
原创 Android 某个应用缺少特殊权限导致系统一直重启解决
系统一些应用会使用到特殊权限,这时候要在系统配置一下否则系统会一直重启。出现该问题的时候,系统一直显示开机Log界面,无法正常进入Android系统界面。下面一起分析总结一下吧。本文不仅正文有学习价值,后续的延伸介绍内容也是有学习价值的。framework 定义的所有 权限都是有定义包含 protectionLevel 等级的,主要等级有:普通,运行时,权限,特殊。
2024-01-06 14:23:05 1383
原创 Android13 热点默认5G频道配置修改
Android开发中经常要设置默认热点,名称,热点密码,是否是5G频段。之前也有对默认名称和密码进行分析的文章,但是热点频道没怎么看,热点频段对传输性能还是比较重要的,有的平台默认就要5G,查看代码发现默认是2.4G热点。本文对 Android 默认热点5G频段配置 进行分析。wifi信息保存位置:热点信息保存位置:热点的信息文件包含了:热点名称,热点密码,热点频段和信道值等基本信息;wifi 的信息文件包含了:连接过的wifi名称,密码,MAC地址等信息。
2024-01-02 20:55:28 2706
原创 Android ZXing二维码包含中文时乱码解决
ZXing就不过多介绍了,就是可以可以扫描二维码获取里面字符串和把字符串生成二维码的小框架。本文记录一下源码编译中,ZXing 在源码编译后,包含中文字符串的二维码出现问号乱码解决。Android Studio中运行该app是没有这个问题的,那么有可能就是编译环境不同导致的。
2024-01-02 20:51:09 747
原创 Android 实现热点开机后自动开启
Android 热点是有api设置永久开启,热点名称,热点密码等接口,但是“永久开启”实际上是不自动关闭,重启设备后热点并不会自动开启。Android Wifi实现开关状态记忆是基于Settings.GLOBAL.WIFI_ON属性,所以热点如果要实现状态记忆那么也是要设置一个Settings属性或者prop属性,系统启动后判断属性决定是否启动热点就可以实现热点状态记忆了。Android Wifi有自己的服务WifiService和服务实现WifiServiceImpl,
2023-12-21 20:33:00 2364
原创 Android13 Wifi启动流程分析
本文对Android13 wifi 开启流程进行梳理,有需要的可以看看。如果遇到wifi 打不开问题,可以依照这个流程进行分析,看看具体是哪个流程出现问题。如果后续需要分析比Android13 更新的代码可以对比参考,毕竟Android11的代码变动比较大。本文最后有流程总结,代码分析过程还有最大一个亮点,每个类的流程分析都标志了数字,避免读着读着就迷路了。最后还有wifi开关相关日志过程分析。
2023-12-21 20:16:09 1868
原创 Android 蓝牙相关广播介绍
本文主要介绍Android 蓝牙相关的广播,并非硬件相关的蓝牙广播信号,而是蓝牙app中的广播接收器onReceive 的蓝牙相关广播。最近刚好开发了一下蓝牙相关的功能,所以进行一些知识总结和介绍,本文应该是全网最面的接收Android广播介绍知识的文章。如果上面日志过程没怎么看的,那么日志总结可以看看。重要过程,日志里面主要包含connection状态,acl_connected,bond等信息。
2023-12-12 18:25:28 1383 1
原创 Android13 不能静态注册的几个广播
本文介绍一些广播相关的知识,主要是静态广播注册无效的介绍。其实从Android 8.0 就开始有这个问题的,只是本文的源码是基于Android13 分析的。
2023-12-12 18:23:53 1417
原创 Android 设置20点触摸
增加Android触摸点,一般是在商显的Android大屏上有一定的需求,在普通的Android设备基本不用。首先,Android系统默认最多支持16点触摸。如果要增加有效触摸点,需要更新对应的触摸框驱动ko文件;还要再framework中进行代码适配。关于触摸框点数增加的文章,网上也有不少,但是CSDN上基本都是要会员才能看,这里给大家介绍一下。
2023-12-06 15:57:47 473
原创 Android 蓝牙弹框接收传输的文件实现
Android 原生系统蓝牙接收是在通知栏显示和操作,但是部分定制设备比如大屏或者盒子设备是没有通知栏的。如果要接收蓝牙文件就要自己接收蓝牙广播进行弹框提示,大概包括:确认接收,显示接收进度,确认取消/完成接收等弹框和实现,具体修改就要适配系统的蓝牙应用。本文基于Android13 系统蓝牙应用Bluetooth文件传输Opp部分代码适配进行介绍。也许你工作中不一定有这个需求,但是安卓屏显开发大概率是有这个需求的,部分有兴趣的并且有系统源码编译运行条件的,可以尝试修改系统源码试试,
2023-12-06 15:16:11 1132
原创 Android 10-13鼠标右键返回功能适配
Android 原生代码代码中接入usb鼠标,点击右键,一般默认是没有反应的。如果要鼠标点击右键设置成返回功能,就要适配系统代码。一般Android板子调试初期没有触摸的情况,适配鼠标右键,是对操作使用是带来较大方便的。本文介绍不同版本的Android 鼠标右键返回功能适配。其实不管什么方案或者版本只需 getButtonState 在点击右键的情况返回的键值是 AMOTION_EVENT_BUTTON_BACK 就会执行返回功能。
2023-11-22 06:00:00 1003
原创 Android13 adb 无法连接?
这段时间经常有同事了,Android13 wifi adb 开启了,但是电脑支持adb connect 为啥连接不上安卓设备?从多个人的adb版本发现,Android13 对 adb版本是有要求的。前两年的adb 版本有可能无法正常连接上Android13 的设备:低版本adb软件,adb connect 执行后,adb devices 发现设备是离线的,adb shell 进入不了输入状态。更新adb 版本有可能可以解决这个问题。
2023-11-17 10:13:26 1266
原创 Android13 wifi adb 串口开启
Android13 wifi adb比之前的版本都麻烦,主要是端口号每次会变化,之前版本端口号是固定的5555Android 12或者更新的系统版本,adb 连接要加端口号,adb connext X.X.X.X:端口号以前的版本是不用加端口号的,因为是默认的5555,系统会自动添加.如果需要手动开启,需要进入开发者选择中,开启wifi adb。并且开启的前提是wifi 开启的情况。如果连接的是有线网络,wifi adb 就无法开启了。
2023-11-16 07:00:00 1115
原创 Android13分享热点设置安全性为wpa3
Android 网络加密类型WPA3,比WPA和WPA2 安全性强一下;有些客户强制要求支持WPA3,那么就需要系统进行一些适配了。Android手机上热点分享显示的安全性部分手机可以选择WPA3,比如红米12(Android12),一加Ace2(Android13);但是其他很多手机都没有选择加密类型,比如Nova6(Android12)、红米(Android10),谷歌Piex4(Android13)。以前只分析过Android11 ,这里发现Android13 有些区别,记录一下。/**
2023-11-11 15:55:34 2743 10
原创 Android13 安装谷歌GMS导致打开蓝牙失败解决方法
Android13 上安装谷歌GMS相关服务后,无法打开蓝牙,打开蓝牙马上异常导致自动关闭蓝牙。这个问题国内估计大部分开发者不会遇到,但是如果是面向国外用户需要安装谷歌相关服务可能会遇到。这个问题在Android13 几个不同芯片供应商方案都有遇到,说明这个问题在Android13 上是个共性问题,Android原生代码的问题。本文主要记录一下。查看蓝牙相关日志: BluetoothManagerService 、droid.bluetooth 、BluetoothBondStateMachine。
2023-11-05 07:00:00 838
原创 Android 中的 本地广播LocalBroadcastManager
对于LocalBroadcastManager在google官方文档中也说得很清楚,比较简短,也很好看懂,可以去看看。大体介绍就是这些,顾名思义,本地广播(注册),数据安全,其他app也不能给你发广播(接收)。也比系统广播高效。一般使用在应用内部不同fragment和Activity的交互,或者界面和service 的交互。BroadcastReceiver设计的初衷是从全局考虑可以方便应用程序和系统、应用程序之间、应用程序内的通信,所以对单个应用程序而言BroadcastReceiver是存在安全性问题
2023-10-26 07:00:00 857
原创 Android13 实现有线网络和wifi共存
Android一些的定制设备,比如商显大屏或者Android盒子,一般是wifi或者有线网络。Android 系统Framework进行一定适配后,可以实现wifi和有线网络端口都打开的,进而在App端即可实现通过代码控制选择使用wifi或者有线网络进行网络请求。Android13 上代码有较大差别,这里也进行记录和介绍。
2023-10-21 07:00:00 2519 8
Android13 蓝牙文件接收过程日志,已经修改视频过对话框接收文件的日志
2023-12-05
Android13 修改蓝牙文件接收为对话框接收过程
2023-12-05
adb较新版本1.0.41版本
2023-11-15
Android13 按键介绍和相关源代码
2023-09-22
Android13 wifi adb相关介绍和相关源码
2023-09-06
Android 网络请求代码和demo.apk
2023-08-14
wifi adb demo
2023-07-17
Android busybox 简单介绍
2023-05-27
Android EditText设置密码是否可见
2022-12-08
Android NTP获取时间demo
2022-10-23
简单的Jni Demo 计算器的开发
2022-07-18
Android大图加载示例代码和apk
2022-04-05
Android 壁纸设置和确认demo源码和apk文件
2022-02-27
Android11_frameworks有线网络开关添加相关代码.zip
2021-12-30
CameraDemo.apk
2021-08-05
RecordMedia.zip
2020-03-22
SwipeBackLayout.rar
2020-02-13
apk文件进行解析,跟大家分享一下
2019-08-04
对未签名apk文件进行签名.zip
2019-08-04
AudioRecordDemo
2019-03-24
okHttpDemo
2018-07-11
各种Toast的设计Demo
2018-07-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人