![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
ytuglt
这个作者很懒,什么都没留下…
展开
-
Android系统日志3-trace
主要追踪耗时,如上图所示,记录的是traceBegin和traceEnd之间的耗时,这些日志信息可以通过systrace查看。原创 2023-05-09 20:04:30 · 1301 阅读 · 0 评论 -
Android系统日志2-SLog
1、使用2、源码3、查看log原创 2023-05-09 09:35:55 · 338 阅读 · 0 评论 -
Android系统日志1-EventLog
通过查看Android系统源码,如 EventLogTags.BOOT_PROGRESS_PMS_SYSTEM_SCAN_START 这类tag信息并没有在java文件中定义,经查阅资料发现这些tag信息是在编译时生成的。android/build/tools 目录下有三个event_log相关的脚本event_log_tags.py //读取跟解析event_log_tags文件java-event-log-tags.py //把EventLogTags.logtags文件翻成java。原创 2023-05-08 22:12:19 · 480 阅读 · 0 评论 -
Android JVM系列1-JVM概述
一个java程序,受限经过javac编译成.class文件,然后JVM将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM作为.class文件的翻译存在,输入字节码,调用操作系统函数。过程如下:Java文件->编译器->字节码->JVM->机器码。JVM全称Java Virtual Machine,它能识别.class后缀的文件,并解析其指令,最终调用操作系统函数,完成代码执行。原创 2023-04-28 22:58:33 · 180 阅读 · 0 评论 -
android jni系列-java c++互相调用
这个直接使用Android studio创建的c++模版代码就可以看到使用方法了,简单步骤如下:1、gradle指定cmake2、cmake实现3、java代码4、c++代码实现。原创 2023-04-19 09:48:11 · 284 阅读 · 0 评论 -
Android framework系列6-view
代码调用流程如上图所示,整体来讲invalidate会沿着view树向上执行,一直到ViewRootImpl,然后由ViewRootImpl遍历执行绘制,调用了我们熟悉的onMeasure、onLayout、onDraw。2)通过矩形运算,找到真正需要重绘的矩形区,并将其保存到了ViewRootImpl类中的mDirty变量中。有了这两个信息,View树重绘就能决定通知哪些view进行重绘,并告诉他们应该重绘什么区域。1)给所有需要重绘的视图加了一个DIRTY或者DIRTY_OPAQUE标记。原创 2023-03-19 11:53:07 · 75 阅读 · 0 评论 -
Android framework系列3 -zygote
2)fork,app进程都是通过zygote进程fork出来的,fork的进程是复制的,在zygote注册了,那么app进程也就注册了JNI(如果zygote进程死了,那么所有的app进程都会挂掉)我们在启动的时候是传入了zygote 和start-system-server参数的,所以我们会启动zygote,这里看到对这个进程进行了命名。这里有创建虚拟机,可以看到虚拟机的参数都是在这里设置的,如果对系统虚拟机进行优化,我们可以在这里做相应的调整。接下来,我们看到注册jni的方法。zygote进程入口。原创 2023-03-06 22:08:28 · 209 阅读 · 0 评论 -
Android framework系列2 - Init进程
入口在init.cpp下,这个阶段主要来解析init.rc并执行此文件下的命令。可以看到这个文件下有很多命令,这里查找下我们关注的内容。主入口共三步,如流程图所示,我们主要看下最后一步。这里我们看到在解析init.rc,文件内容如下。serviceManager 服务进程。这里我们看到了循环执行,空闲则等待。解析后放到了am、sm下。原创 2023-03-05 19:56:02 · 117 阅读 · 0 评论 -
Android framework系列4 -SystemServer分析
SystemServer是通过zygote fork出来的进程,在zygote.java中我们可以看到如下代码。原创 2023-02-14 14:53:46 · 74 阅读 · 0 评论 -
Android framework系列1 - Android架构&系统启动流程
此处copy aosp官方文档中的两个图,从这两个图中可以看到整个Android系统的架构设计思想,具体每一层的分层说明可以参考官方文档说明:https://source.android.com/docs/core/architecture?hl=zh-cn。原创 2023-02-14 14:43:48 · 118 阅读 · 0 评论 -
Android驱动-hello驱动
创建文件夹hello,新建三个文件。原创 2023-01-17 17:22:21 · 137 阅读 · 0 评论 -
Android编译可执行c程序
将可执行文件push到安卓板子中,此处使用的时nanopc-t4。结果如下,到此编译运行成功。原创 2023-01-17 16:42:14 · 684 阅读 · 0 评论 -
android 技巧积累
【代码】android 技巧积累。原创 2022-10-12 12:55:27 · 553 阅读 · 0 评论 -
Filament Android 编译搭建(基于Ubuntu环境)
Android studio 直接open filament下的android目录运行即可。打开Android studio -> Tools -> SDK Manager。这里介绍通过Android studio方式安装,其他方式自行灵活安装。这个目录下包含了cmake 和 ninja。会在out 目录下生成release目录。添加, 路径换成自己的sdk目录。编译成功后会生成如下所示目录。本地安装了clang9。原创 2022-10-09 21:55:55 · 1333 阅读 · 0 评论 -
好用的Android软件汇总
https://download.csdn.net/download/ytuglt/86509918https://download.csdn.net/download/ytuglt/86509913原创 2022-09-05 21:57:07 · 445 阅读 · 0 评论 -
奇怪问题- app在配置minSdk<23正常,>=23后运行crash
解决方案原创 2022-07-08 10:36:32 · 561 阅读 · 0 评论 -
Android小工具- 安卓设备PC端控制软件
1、 Vysorvysor 不太清晰,因此可以直接使用scrcpy2、scrcpymac安装:安装:$ brew install scrcpy启动:$ scrcpy如果存在多设备连接,可以指定连接特定设备:$ scrcpy -s原创 2022-04-13 11:54:41 · 1377 阅读 · 0 评论 -
Android protoc 在MAC电脑M1处理器报错处理
1、问题报错Execution failed for task ':app:generateDebugProto'.> Could not resolve all files for configuration ':app:protobufToolsLocator_protoc'. > Could not find protoc-3.0.0-osx-aarch_64.exe (com.google.protobuf:protoc:3.0.0). Searched in th原创 2022-03-24 17:38:14 · 3875 阅读 · 0 评论 -
NanoPC T4开发板系列-Android10编译&烧写
1.编译系统1,环境要求:Ubuntu18,磁盘空间必须保证139G以上,因为编译完成后查看目录大小为139G,开始在一个空间小的电脑上编译,会发现一直报错,换大空间就好了具体编译可以参考友善wiki:https://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4/zh#.E7.BC.96.E8.AF.91Android10.E6.BA.90.E4.BB.A3.E7.A0.81如文档所示,安装好工具依赖我是按照如图框出来的编译的,正常会执行编译,编译原创 2021-07-08 20:12:40 · 879 阅读 · 2 评论 -
android adb常用命令汇总
1、选装屏幕adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:3其中最后 一个数字 为 0,1,2,3,用于控制旋转角度原创 2021-06-18 15:02:18 · 4261 阅读 · 0 评论 -
Android 通过adb禁止某个应用上网
#通过包名查找应用的uid➜ apk adb shell cat /data/system/packages.xml | grep com.xzh.hbls <package name="com.xzh.hbls" codePath="/data/app/com.xzh.hbls-htP4fJSjJ2QQGmIifZ6xpA==" nativeLibraryPath="/data/app/com.xzh.hbls-htP4fJSjJ2QQGmIifZ6xpA==/lib" publicFl原创 2021-02-27 23:15:55 · 14410 阅读 · 3 评论 -
Android-kotlin协程应用
1. 添加依赖dependencies { ... implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:x.x.x" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:x.x.x"}具体版本号去官网搜索即可2. 协程作用协程...原创 2020-04-20 19:30:41 · 421 阅读 · 0 评论 -
unable to resolve virtual method 错误
在项目移植二维码扫描时,刚开始有编译错误,把错误都解决之后,直接运行,但是打开扫描的时候报下面的错误,fetal exception,错误信息提示很少,找不到错误原因,在向上看有警告:11-17 13:43:20.541: W/dalvikvm(5930): VFY: unable to resolve virtual method 10674: Lcom/google/zxing/Plana原创 2015-11-17 15:44:58 · 2521 阅读 · 0 评论 -
smali 调试方法(动态调试)
smali文件1.下图为基本的smali结构一个smali文件对应一个class2.字段描述符‘Java中Void在smali中对应VVoid -> V其他具体描述符参考下面表格:下面粘贴两段例子代码对应看下: Android代码: package com.test.myapplication; import android.app.Activity; import andro原创 2017-07-30 11:54:23 · 1773 阅读 · 0 评论 -
java.lang.VerifyError: Verifier rejected class 问题解决
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.test.clock, PID: 12410原创 2017-04-10 19:25:02 · 14257 阅读 · 1 评论 -
ubuntu 下 Android Stuido 安装步骤
Installing Javasudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-java8-installersudo apt-get install oracle-java8-set-defaultInstall Android Studiosudo apt-原创 2017-03-28 12:45:17 · 453 阅读 · 0 评论 -
Android Sdudio gradle编译问题Error:(20, 1)
导入项目时遇到编译错误:Error:(20, 1) A problem occurred evaluating project ':library'.> No such property: sonatypeUsername for class: org.gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDepl原创 2017-01-12 20:58:37 · 594 阅读 · 0 评论 -
Android receiver 多次启动相同Activity
Android receiver 多次启动相同Activity在Receiver中多次启动相同的Activity,如果Intent是相同的是不会重新创建Activity的,只有Intent内容不同时才会启动多个Activity。TestActivity.java 代码段:package com.example.gonglt1.ltestapp;import android.app.Activity原创 2017-02-06 17:00:37 · 2452 阅读 · 1 评论 -
Thread join()使用说明
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。t.join(); //使调用线程 t 在此之前执行完毕。t.join(1000); //等待 t 线程,等待时间是1000毫秒测试demo:public class MainClas原创 2016-10-19 11:02:35 · 408 阅读 · 0 评论 -
android studio ndk 配置使用(好用的链接)
android studio ndk 配置使用转载 2016-10-17 14:38:58 · 242 阅读 · 0 评论 -
gradle 手动下载
手动下载gradle压缩包1、查看所需gradle版本 在gradle-wrapper.properties文件下查看 distributionUrl=https://services.gradle.org/distributions/gradle-3.3-all.zip2、根据需要手动下载新版Gradle 下载地址:https://services.gradle.org/dis原创 2017-07-26 15:00:18 · 2040 阅读 · 0 评论 -
Android 反编译&回编译
Android 反编译1.下载ShakaApktool工具1.从github上下载ShakaApktool GitHub2.为了方便,已在csdn上传资源ShakaApktool2.删除old框架window环境: 进入目录,C:\Users\用户名\apktool\framework,会发现有个1.apk的文件,将其删除3.开始反编译java -jar F:\study\Android\tool原创 2017-07-27 21:47:27 · 469 阅读 · 0 评论 -
android缓动函数 EaseAnimationInterpolater
缓动函数图例缓动函数速查表github android Interpolator Libraryhttps://github.com/Fichardu/EaseAnimationInterpolator/tree/211b39b100cbb988d6676e200a4628be58f4a43c原创 2018-01-09 17:41:34 · 1055 阅读 · 0 评论 -
子线程中的异常捕获
根据java线程的本质,当一个线程抛出异常时,在主线程中加try catch 是无法捕获到其抛出的异常的,如下面代码所示: private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super...原创 2018-11-12 17:13:56 · 265 阅读 · 0 评论 -
android 查看apk签名信息
1.直接查看apk的签名信息keytool -list -printcert -jarfile app-release-sign.apk 2.解压apk后查看签名信息解压apk,然后进入到 META-INF目录cd META-INFkeytool -printcert -file CERT.RSA...原创 2018-12-29 13:37:59 · 2014 阅读 · 0 评论 -
android 小技巧
通过adb 快速清除apk数据adb shell pm clear 包名原创 2019-03-14 09:54:41 · 191 阅读 · 0 评论 -
Ubuntu android 反编译
enjarify 反编译apk,jadx 查看jar源码1.enjarify 反编译apk$ git clone https://github.com/google/enjarify.git$ cd enjarify$ ./enjarify.sh yourapp.apk2.jadx 查看jar源码1.build jadx$ git clone https://github.com/...原创 2019-06-03 17:43:43 · 300 阅读 · 0 评论 -
android ble扫描功耗测试
1.背景我们在平时通过Android 调用标准接口做ble扫描时会调用andriod 公开接口,也就是BluetoothLeScanner中的startScan方法,短时间的扫描大家可能都不太注意功耗的问题,但是如果时间扫描长的话,肯定需要注意功耗带来的影响,本篇文章主要就是给这种长时间扫描,不,短时间扫描也要注意的功耗问题2.功耗测试a. 不添加过滤条件直接扫描直接调用如下: ble...原创 2019-09-20 14:00:21 · 970 阅读 · 0 评论 -
IntentService 示例与详解(看过写的不错的文章--链接地址)
http://www.jianshu.com/p/332b6daf91f0原创 2016-10-11 16:51:14 · 211 阅读 · 0 评论 -
android小技巧之---获取状态栏高度
/** * 用于获取状态栏的高度。 * * @return 返回状态栏高度的像素值。 */ private int getStatusBarHeight() { if (statusBarHeight == 0) { try { Class c = Class.forName("com.android.internal.R$dimen"); Objec原创 2016-09-22 14:59:28 · 195 阅读 · 0 评论