androidframework
文章平均质量分 72
we1less
学习
展开
-
Android Camera(四) getCameraIdList流程 (android P)
APP端调用CameraManager 关于如何获取系统服务在本博客的Android Binder getService(java)源码分析(一)_we1less的博客-CSDN博客章节中描述过这里就不拆开分析了val manager = activity.getSystemService(Context.CAMERA_SERVICE) as CameraManager...原创 2021-11-16 23:29:54 · 8952 阅读 · 0 评论 -
Android Camera(三) CameraService启动流程 (androidP)
cameraserver.rc路径 frameworks/av/camera/cameraserver/cameraserver.rcCameraService是由这个.rc文件启动的关于rc文件参见流程1service cameraserver /system/bin/cameraserver class main user cameraserver group audio camera input drmrpc readproc iopri...原创 2021-11-04 23:26:48 · 3029 阅读 · 0 评论 -
dlopen / dlsym函数(动态链接库)
void * dlopen( const char * pathname, int mode);功能:打开一个动态链接库 包含头文件 :#include <dlfcn.h>编译时候要加入 -ldl (指定dl库)函数描述 :使用dlopen函数以指定模式(mode)打开指定的动态连接库文件,并返回一个句柄给调用进程。使用dlclose来卸载打开的库。返回值 :打开错误返回NULL 成功,返回库引用mode:分类RTLD_LAZY ...原创 2021-11-03 20:29:21 · 761 阅读 · 0 评论 -
Android Camera(二) Provider启动流程 (androidP)(HIDL)
本篇文章是继续上一篇分析的Android Camera(一) Provider启动流程 (androidP)(HIDL)_we1less的博客-CSDN博客sp<IBase> base = pm->get(descriptor, instance).withDefault(nullptr);路径system/libhidl/transport/ServiceManagement.cpp上一篇说到get函数同时上一篇文章中也总结了lib = android...原创 2021-11-03 20:13:04 · 2368 阅读 · 0 评论 -
Android Camera(一) Provider启动流程 (androidP)(HIDL)
本章开始分析camera框架 主要是自己用来加深理解的camera providerandroid.hardware.camera.provider@2.4-service.rc路径 hardware/interfaces/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc跟普通服务类似就是以一个rc文件启动的,在之前的文章中我们分析过rc文件是如何启动服务的android8.1系统启..原创 2021-11-02 22:00:38 · 1593 阅读 · 0 评论 -
Android Binder java端的调用流程
本篇从ServiceManager.addService中开始讲起Android Binder getService(java)源码分析(二)_we1less的博客-CSDN博客关于native层在java端的代理ServiceManagerProxy对象已经在这篇阐述过了addService路径 frameworks/base/core/java/android/os/ServiceManagerNative.javadata.writeStrongBin...原创 2021-10-21 22:22:59 · 1122 阅读 · 1 评论 -
Android Binder 服务端分析
本篇文章以这篇为锚点Android Binder 应用程序Binder 启动源码分析_we1less的博客-CSDN博客从startThreadPool开始进行分析joinThreadPool 路径 frameworks/native/libs/binder/IPCThreadState.cpp 循环执行getAndExecuteCommandvoid joinThreadPool(bool isMain = true);...原创 2021-10-20 23:41:21 · 453 阅读 · 0 评论 -
Android Binder getService(java)源码分析(二)
本篇是继续上一篇进行分析的https://blog.csdn.net/we1less/article/details/120731185代码回到ServiceManager.java 路径frameworks/base/core/java/android/os/ServiceManager.java 上一篇文章说道BinderInternal.getContextObject()返回的是android/os/BinderProxy对象,它是java层的,这个对象的mObject成...原创 2021-10-13 22:55:06 · 406 阅读 · 2 评论 -
Android Binder getService(java)源码分析(一)
android开发中java端调用getSystemService(xxx);getSystemService(Context.CONNECTIVITY_SERVICE);Activity.java 路径frameworks/base/core/java/android/app/Activity.java如果获取的Service不是代码中所示的,那么就调用父类ContextThemeWrapper的getSystemServicepublic class Act...原创 2021-10-12 21:56:02 · 533 阅读 · 0 评论 -
Android Binder (可以直接写在项目中的写法)
此篇为大家展示一个写在项目中的写法,native层的service注册和获取服务,加上回调。首先展示一下项目目录binder通信是基于aidl接口实现的,使用aidl接口可以省略许多不必要的代码。工程的基础mkAndroid.mkinclude $(call all-subdir-makefiles)Android.bpsubdirs = ["cmd","lib","service"]cmd文件夹代表服务从这个文件夹启动,当然如果特别完整的需要把 .rc文件和S.原创 2021-10-11 21:17:16 · 726 阅读 · 0 评论 -
Android Binder ServiceManager启动源码分析
此篇文章的解析参考Android Binder(C语言版本)_we1less的博客-CSDN博客模仿例子参考Android Binder(C语言版本例子)_we1less的博客-CSDN博客servicemanager.rc 路径 frameworks/native/cmds/servicemanager/servicemanager.rcservice servicemanager /system/bin/servicemanager class core animation .原创 2021-09-29 20:52:13 · 205 阅读 · 0 评论 -
Android Binder startAcitivity的Binder过程
以 startActivity(newIntent); 为例路径 frameworks/base/core/java/android/app/Activity.java@Override public void startActivity(Intent intent, @Nullable Bundle options) { if (options != null) { startActivityForResult(intent, -1, opt...原创 2021-09-23 22:52:19 · 156 阅读 · 0 评论 -
Android Binder 应用程序Binder 启动源码分析
android8.1启动过程(七) SystemServer_we1less的博客-CSDN博客这篇文章说道SystemServer进程主要用于创建系统服务,同时初始化Zygote调用gCurRuntime->onZygoteInit();本文从这继续解析binder的启动过程。onZygoteInit AOSP/frameworks/base/cmds/app_process/app_main.cppvirtual void onZygoteInit() { .原创 2021-09-28 23:27:12 · 342 阅读 · 0 评论 -
Android Socket学习(三)三方apk执行shell命令
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/types.h>#include <unistd.h>#include <sys/wait.h>#include <sys/stat.h>#include <sys/un.h>#include <sys.原创 2021-09-27 00:04:05 · 548 阅读 · 0 评论 -
Android Socket学习(二)java与native_socket通信
native端 socket_sevice.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <arpa/inet.h>#include <sys/select.h>#include <sys/epoll.h>#include <sys/un.h>int main()..原创 2021-09-26 22:33:46 · 381 阅读 · 0 评论 -
Android Socket学习(一)unix_socket
关于unix_socket的背景这里放一篇链接Android Framework实战开发视频--跨进程通信之Socket通信_learnframework的博客-CSDN博客本文代码也是基于本篇提供的基本代码编写的unix_socket_service.c#include <stdlib.h>#include <stdio.h>#include <stddef.h>#include <sys/socket.h>#include <原创 2021-09-24 22:31:32 · 501 阅读 · 0 评论 -
Android 从上到下写一个例子 HAL(三)
hal层代码放置路径hardware/libhardware/modules/godvled mk文件LOCAL_PATH:=$(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:=godvled.default#不指定默认 system/lib #LOCAL_MODULE_PATH:=$(LOCAL_PATH) 当前路径下#system/lib/hwLOCAL_MODULE_RELATIVE_PATH := hwLOCAL...原创 2021-09-09 23:07:44 · 200 阅读 · 0 评论 -
Android 从上到下写一个例子 本地服务(二)
本文继上一篇文章继续写代码https://blog.csdn.net/we1less/article/details/118825911此时需要一个本地服务首先将jni文件写好路径frameworks/base/services/core/jni/com_android_server_GodvService.cpp#define LOG_TAG "godv"#include "jni.h"#include <nativehelper/JNIHelp.h>#include "原创 2021-09-06 23:21:48 · 245 阅读 · 0 评论 -
显示系统[4] APP申请创建Buffer分配Buffer的过程
申请bufferANativeWindow_Buffer outBuffer;surface->lock(&outBuffer, NULL); 首先使用dequeueBuffer申请buffer然后把这个buffer包装成backBuffer 最后调用backBuffer->lockAsync得到一个vaddr(虚拟地址) 然后把这个vaddr(虚拟地址)赋值给outBuffer->bits,这个就是最终把数据填充的地址 路径framew...原创 2021-08-16 22:37:07 · 742 阅读 · 0 评论 -
显示系统[3] APP申请创建Surface的过程
sp<SurfaceControl> surfaceControl = client->createSurface(String8("resize"), 160, 240, PIXEL_FORMAT_RGB_565, 0); 调用mClient->createSurface 值得注意的是此处是biner通信过程,实际上是通过BpSurfaceComposerClient的createSurface函数调用Client的onTransact再调...原创 2021-08-15 23:47:34 · 636 阅读 · 0 评论 -
显示系统[2] APP创建SurfaceFlinger客户端(client)的过程
分析上一篇例子应用程序发创建client对于创建client 首先是要获得 SurfaceFlinger服务 其次通过binder调用其中函数创建SurfaceFlinger服务对应的应用程序代码 路径frameworks/native/services/surfaceflinger/main_surfaceflinger.cppint main(int, char**) { ... // instantiate surfaceflinger sp<...原创 2021-08-15 21:35:05 · 403 阅读 · 0 评论 -
显示系统[1] 简单的Surface测试程序
路径:AOSP/android-8.1.0_r1/frameworks/native/services/surfaceflinger/tests/resizemk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= \ SurfaceTest.cppLOCAL_SHARED_LIBRARIES := \ libcutils \ libutils \ libui \ libgui \..原创 2021-08-08 23:43:00 · 500 阅读 · 0 评论 -
SELinux权限问题解决参考
6666原创 2021-07-31 22:50:58 · 2830 阅读 · 0 评论 -
Android 从上到下写一个例子 SELinux权限(一)
在 android-8.1.0_r1/frameworks/base/core/java/android/os 路径下新增IGodvService.aidlpackage android.os;/** * @hide */interface IGodvService { int gov_ioctl(int which, int status);}在 android-8.1.0_r1/frameworks/base 路径下修改mk文件将新建的aidl文件添加进去 ...原创 2021-07-16 22:31:00 · 625 阅读 · 2 评论 -
AudioTrack创建过程分析(android_audio)
c++测试程序 frameworks/base/media/tests/audiotests/shared_mem_test.cppint AudioTrackTest::Test01() 播放声音主要是靠这个p<AudioTrack> track = new AudioTrack(AUDIO_STREAM_MUSIC,// stream type rate, AUDIO_FORMAT_PCM_16_BIT,// wo...原创 2021-07-07 21:33:33 · 744 阅读 · 2 评论 -
AudioFlinger启动过程分析(android_audio)
参考https://blog.csdn.net/zyuanyun/article/details/60890534#t4首先来分析一下AudioFlinger1.加载哪个so文件? 文件名是什么? 文件名从何而来?参考上一篇https://blog.csdn.net/we1less/article/details/118424539openDevice hardware/interfaces/audio/2.0/default/DevicesFactory.cpp 环节aud...原创 2021-07-06 22:05:10 · 339 阅读 · 2 评论 -
解析audio_policy.conf(android_audio)
audio_hw_modules { primary { //一个module对应厂家提供的一个so文件 global_configuration { attached_output_devices AUDIO_DEVICE_OUT_SPEAKER default_output_device AUDIO_DEVICE_OUT_SPEAKER attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC .原创 2021-07-05 21:56:18 · 479 阅读 · 2 评论 -
AudioPolicyService启动过程分析(android_audio)
AudioPolicyService是策略的制定者,AudioFlinger是策略的执行者,所以: AudioPolicyService根据配置文件使唤AudioFlinger来创建Thread管理输入输出设备,包括设备的连接、断开状态,设备的选择和切换等管理系统的音频策略,比如通话时播放音乐、或者播放音乐时来电话的一系列处理管理系统的音量上层的一些音频参数也可以通过AudioPolicyService设置到底层去默认声卡 & 声卡上存在何种硬件资源(耳机孔/喇叭) 厂...原创 2021-07-05 20:27:01 · 749 阅读 · 1 评论 -
Android Binder(C++版本例子)
packages/apps/Godv/IGodvService.h//// Created by godv on 21-6-29.// 这个是接口// 参考 frameworks/av/include/media/IMediaPlayerService.h#ifndef ANDROID_IGODVSERVICE_H#define ANDROID_IGODVSERVICE_H#include <utils/Errors.h> // for status_t#inclu原创 2021-06-29 23:26:02 · 805 阅读 · 1 评论 -
Android Binder(C++版本)
BInder服务的C++实现1. 定义接口类 其中定义抽象方法IGodvService { //抽象方法 sayhello sayhello_to}2. server端实现BnGodvService : IGodvService{ //实现函数抽象方法 sayhello sayhello_to //实现onTransact方法 onTransact }3. client端实现BpGodv..原创 2021-06-29 22:35:19 · 361 阅读 · 0 评论 -
Android Binder(C语言版本例子)
cmds/servicemanager/godv_server.c/* Copyright 2008 The Android Open Source Project */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include "binder.h"#include "godv_server.h"void sayhello(v.原创 2021-06-25 00:14:52 · 454 阅读 · 0 评论 -
Android Binder(C语言版本)
android中存在用c语言写的Binder应用,接下来以这个文件开始分析当进行Binder通信过程中main frameworks/native/cmds/servicemanager/service_manager.c1.打开Binder驱动int main(int argc, char** argv){ ... if (argc > 1) { driver = argv[1]; } else { driver =..原创 2021-06-24 22:18:07 · 811 阅读 · 3 评论 -
android8.1启动过程(十) SystemServer启动FallbackHome2
本篇结合上一篇https://blog.csdn.net/we1less/article/details/117485532?spm=1001.2014.3001.5501上一篇方法最后调用了startViaZygote(processClass, niceName, uid, gid, gids, debugFlags, mountExternal, targetSdkVersion, seInfo, abi, instructionSet, appDataDir, invokeWith, zyg原创 2021-06-04 00:21:43 · 2166 阅读 · 2 评论 -
android8.1启动过程(九) SystemServer启动FallbackHome
SystemServer进程在启动的过程中会启动PackageManagerService,PackageManagerService启动后会将系统中的应用程序安装完成。在此前已经启动的AMS会将Launcher启动起来。Launcher的入口为AMS的systemReady方法ActivityManagerDebugConfig frameworks/base/services/core/java/com/android/server/am/ActivityManagerDebugConfi..原创 2021-06-02 23:39:17 · 1354 阅读 · 3 评论 -
android8.1启动过程(八) SystemServer 下
上一篇文章说到调用到了"com.android.server.SystemServer"的main方法public static void main(String[] args) { new SystemServer().run();}接下来分析run方法中的代码// The system server should never make non-oneway callsBinder.setWarnOnBlocking(true);这句话主要是用来设置 Binder调用时.原创 2021-06-01 00:07:25 · 367 阅读 · 5 评论 -
android8.1启动过程(七) SystemServer
本文承接上一篇文章https://blog.csdn.net/we1less/article/details/116325856?spm=1001.2014.3001.5501SystemServer进程主要用于创建系统服务,AMS、WMS、PMS都是由它来创建的在上一篇说道启动systemserver启动systemserverAOSP/frameworks/base/core/java/com/android/internal/os/ZygoteInit.javaif (st...原创 2021-05-26 23:45:21 · 548 阅读 · 3 评论 -
android8.1 source build/envsetup.sh分析 增加删除lunch
Android 编译过程1. 初始化参数设置 环境变量2. 检查环境变量 配置目标环境(导入luncher)3. 选择lunch 读取目标配置平台信息(分支特性、文件)4. 清空输出目录5. 执行编译6. 打包source build/envsetup.sh 分析1. 加载编译命令- lunch: lunch <product_name>-<build_variant>- tapas: tapas [<...原创 2021-05-14 00:22:32 · 606 阅读 · 3 评论 -
android8.1环境下 android Threads线程实现
Android native的Thread类是Android提供的一个基础类,源码路径:system\core\libutils\include\utils\Thread.hsystem\core\libutils\Threads.cpp该类提供的基础功能涵盖了线程的生命周期:创建、运行、销毁。主要成员函数如下:0、本身继承于RefBase,所以具有相应的一些特性// Invoked after creation of initial strong pointer/reference. ..原创 2021-05-13 00:47:07 · 676 阅读 · 3 评论 -
android8.1环境下 linux posix线程实现
写一个关于线程的消费者生产者的例子这里抛一个链接 是关于如何在jni环境下进行线程操作的https://blog.csdn.net/we1less/article/details/109133251thread_posix.cpp//// Created by godv on 21-5-12.//#include <pthread.h>#include <stdio.h>#include "godv_log.h"//队列的头文件#include "queue"原创 2021-05-12 23:05:28 · 175 阅读 · 3 评论 -
android jni c++回调java{主线程/子线程} c++线程创建
首先更新一些知识点1、根据jobject获取jclass(静态方法就不用这一步了)如:jclassclz=env->GetObjectClass(jobj);获取jmethodid如: jmethodid jmid= env->GetMethodID(clz,"onError","(ILjava/lang/String;)V")3、调用方法如: jenv->CallVoidMethod(jobj,jmid,code,jmsg) ...原创 2020-10-17 15:16:43 · 1225 阅读 · 0 评论