- 博客(61)
- 资源 (3)
- 收藏
- 关注
原创 android框架_5.recovery的流程中文件分析_012
一、bootable/recovery/common.h文件,有如下定义:#ifndef RECOVERY_COMMON_H#define RECOVERY_COMMON_H#include <stdio.h>#include <stdarg.h>#include <fcntl.h>#include <unistd.h>#include...
2020-09-18 13:39:39
273
原创 android框架_5.0的Recovery流程分析_012
Recovery流程分析之恢复出厂设置分析:/bootable/recovery/目录下:一、首先recovery.cpp文件分析,main()函数#define LAST_LOG_FILE "/cache/recovery/last_log"#if defined(CACHE_MERGE_SUPPORT)static const char *DATA_CACHE_ROOT = "/data...
2020-09-18 12:40:50
437
原创 android框架_5.0的USB授权弹框流程分析_011
android5.1的USB授权弹框流程分析一、在UsbDebuggingManager类中1、文件位置:frameworks/base/services/usb/java/com/android/server/usb/UsbDebuggingManager.java;public class UsbDebuggingManager implements Runnable { privat...
2020-09-18 12:40:30
396
原创 android框架_5.0的Settings模块的分析1_009
一、我们从最原始的AndroidManifest.xml文件开始分析:<manifest xmlns:android="http://schemas.android.com/ak/res/android" package="com.android.settings" coreApp="true" android:sharedUserId="an...
2020-09-18 12:40:06
265
原创 android框架_5.0的PolicyManager类分析_010
PolicyManager类分析相关的类路径如下:frameworks/base/core/java/com/android/internal/policy/PolicyManager.javaframeworks/base/policy/src/com/android/internal/policy/impl/Policy.javaframeworks/base/core/java/com/an...
2020-09-18 12:39:37
141
原创 android框架_xxx.prop编译顺序及原理_007
xxx.prop编译顺序及原理格式 key = valuexxx.propADDITIONAL_DEFAULT_PROPERTIES展开,如键重复取第一次取到的,后面重复的就忽略,通常定义 ro.zygote 之类的特别重要属性PRODUCT_DEFAULT_PROPERTY_OVERRIDES紧跟在 ADDITIONAL_DEFAULT_PROPERTIES 之后,优先级靠后由于这两个规则是取第...
2020-09-18 12:39:01
494
原创 android框架_常用编译变量总结_008
输出目录用得最多,所以先总结输出目录/core/envsetup.mkTARGET_OUT out/target/product/aeon6735_65c_s_l1/systemPRODUCT_OUTTARGET_OUT_INTERMEDIATES out/target/product/aeon6735_65c_s_l1/objTARGET_OUT_INTERMEDIATE_LIBRARIES 诸...
2020-09-18 12:38:42
185
原创 android框架_android build 先后顺序及调试总结_006
首先是 source build/envsetup.sh然后寻找 device vendor 下的 envsetup.sh (最多4层)下面 $(BUILD_SYSTEM) 值为 build\coreMakefile” “include build/core/main.mk”main.mkinclude $(BUILD_SYSTEM)/config.mk include $(BUILD_...
2020-09-18 12:38:23
332
原创 android框架_单独编译ota所需资源_005
首选需要 build 目录其次需要相应的 devices/xxx 目录cp ../k86/out/target/product/magc6580_we_l/cache.img out/target/product/magc6580_we_l/cache.imgmkdir -p out/host/linux-x86/bin/cp ../k86/out/host/linux-x86/bin/simg2...
2020-09-18 12:37:59
147
原创 android框架_自定义客制化_004
可能会用到的工具mkbootfssimg2simgmake_ext4fsmkbootimgsgs4ext4fsunpackbootimgext2simgimg2simgsimg2img所需系统 Ubuntu将刷机包 system.img 转换成 ext4 格式$ simg2img system.img system.raw.img挂载 ext4 格式到Ubuntu$ mount -t ext4 -...
2020-09-18 12:37:31
299
原创 android框架_Eclipse签名相关_013
如果要在Eclipse中调试Android源码中非test key签名的程序(也就是使用platform, media or shared key签名的程序),需要把Android源码中的公私钥对(build/target/product/security)转换为Eclipse能够使用的keystore。转换步骤如下:1、把build/target/product/security下面的某对需要转...
2020-09-18 12:35:53
119
原创 android框架_有用错误日志_003
程序出现问题的时候,需要一些有用的错误信息。其中logcat固然是最有用的一种,但是如果冲掉了就没用。MTK log 也是一个办法,但是也有冲掉的风险。然后就是 /data/anr 目录的文件有很多用处。但是系统还有一个记录的地方就是 dropbox ,这个记录的信息比较单纯,不是详细信息,但是好处是能保存比较多的错误。所以总结下系统出错时需要的信息:1、MTK LOG, 如果开了,这个一定要弄下...
2020-09-18 12:35:16
157
原创 android框架_待机电流问题分析文档_002
待机电流问题处理,分为无法待机和待机电流平均值高两种情况,请分类参考一、 无法进入待机的情况1:能够明显的查看到wakelock的存在cat /sys/power/wake_lock 或者 dumpsys power均可查看wakelock状态,一般情况下可以根据wakelock的名称来定位阻塞待机流程的模块。例如:“PowerManagerService.wakelock”这种锁是客户端申请用来...
2020-09-18 12:34:55
594
原创 android框架_打开和关闭虚拟按键_001
修改源码中system.prop中qemu.hw.mainkeys键值。1.system.prop文件所在位置:device\magcomm\”$Project”\,如:K26中:device\magcomm\magc6580_we_l\2.qemu.hw.mainkeys值为1隐藏虚拟按键,为0时显示。底部虚拟按键显示与隐藏只需修改这个属性即可...
2020-09-18 12:34:05
470
原创 android_View根据图片名字设置背景和监听事件_012
View根据图片名字设置背景和监听事件ImageView imageView = new ImageView(context); int resId = context.getResources().getIdentifier("资源文件drawable图片名字", "drawable", context.getPackageName()); im...
2020-09-18 11:48:50
157
原创 android_ 极光注册会生成相同注册ID的解决方法_011
极光注册会生成相同注册ID的解决方法一、极光不能接收到推送是因为不同设备注册生成了相同的注册ID1、问题根本原因是两个设备拿到同个注册regid ,而拿到同个regid原因是因为极光SDK延迟拿到imei , mac地址又取不到,但rom给的android id 一样,导致在mac地址拿不到的情况下根据Android id重复注册,从而使不同的设备拿到相同的注册regid(android id...
2020-09-18 11:48:17
424
原创 android_经纬度坐标系转换_010
public class CoordinateTrans { public static final String TAG = CoordinateTrans.class.getSimpleName(); private static double x_pi = 3.14159265358979324 * 3000.0 / 180.0; private static double PI ...
2020-09-18 11:48:00
343
原创 android_集成友盟SDK抓程序异常LOG_009
一、集成友盟SDK抓程序异常LOG友盟SDK版本: umeng-analytics-v6.0.1.jar:http://dev.umeng.com/analytics/android-doc/sdk-download让每个工程的 Action.MAIN 的Activity 继承 UmengLogBaseActivity二、UmengLogBaseActivity类代码如下:/*** * 集成 ...
2020-09-18 11:47:44
205
原创 android_MTK流量统计方法_008
Google在android2.2以上版本提供了android.net.TrafficStats类,来获取wifi,3G数据。Android 4.0开始引入流量监控的特性。他可以监控所有的数据流量,支持警告和限制流量使用。当超过特定quota值时,会触发notification或者禁止移动网络。流量监控可以追追踪每个应用的历史数据。用户可以限制特定的应用在后台运行时是否可以联网。通过设备dev_g...
2020-09-18 11:47:22
435
原创 android_AIDL的使用_007
一.什么是AIDLAIDL(Android Interface Definition Language)是一种接口定义语言,可实现进程间通信二.AIDL的使用1.创建aidl文件需要在aidl文件中写一个接口,接口里面写你想要回调的方法例如package com.ojr.aidl;import com.ojr.aidl.Person; interface IPerson{ Str...
2020-09-18 11:46:55
131
原创 android_Properties读取中文乱码解决方案_006
String result; InputStream in; in =mContext.getAssets().open("customer_name.cfg");//获取到输入流 Properties props=new Properties(); props.load(in); result=props.getProperty("key");//key是键 result...
2020-09-18 11:46:38
91
原创 android_获取当前网络ip和mac地址_005
1、获取当前网络ip和mac地址private static String getIpAndMacAddress() { String ip = ""; boolean isBreak = false; String name = ""; try { for (Enumeration<NetworkInt...
2020-09-18 11:46:20
105
原创 android_强制关闭应用的方法和第三方应用的服务_004
1、android中强制关闭应用的方法如下:需要系统权限//传入应用的包名即可kill掉应用private void forceStopApp(String packageName) { ActivityManager am = (ActivityManager) mContext .getSystemService(Context.ACTIVITY_SERVICE);...
2020-09-18 11:46:04
1207
原创 android_模拟发送系统按键值_003
import android.hardware.input.InputManager;import android.os.SystemClock;import android.view.InputDevice;import android.view.KeyCharacterMap;import android.view.KeyEvent;/** * <功能描述> 模拟发送...
2020-09-18 11:45:49
139
原创 android_Toast消息不重复显示_002
Toast消息不重复显示private Toast mToast;//传入字符串的IDpublic void showToast(int strId) { if (mToast == null) { mToast = Toast.makeText(this, strId, Toast.LENGTH_SHORT); } else { mToast....
2020-09-18 11:45:31
74
原创 android_两张图片合成一张图片_001
两张图片合成一张图片(竖屏)public static Bitmap add2Bitmap_port(Bitmap first, Bitmap second) { if (first == null || second == null) { return null; } int height = first.getHeight() + second.getH...
2020-09-18 11:44:56
234
原创 PackageManagerService Android 8.1 源码解读 07
继续上一篇:PackageManagerService Android 8.1 源码解读 06h、requestPermissions源码流程解析:1、android6.0 动态申请权限的前戏:Google在 Android 6.0 开始引入了权限申请机制,将所有权限分成了正常权限和危险权限。注意:App每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。2、权限的分类:系统权限分为两类:正常权限 和 危险权限。2.1、正常权限不会直接给用户隐私权带来风险。如果您的应用在其清单中列
2020-09-18 11:11:16
381
原创 PackageManagerService Android 8.1 源码解读 06
接力上一篇:PackageManagerService Android 8.1 源码解读 05六、五部曲 - PMS之权限扫描a、分析此 “PMS之权限扫描” 的目标是: PackageManagerService中执行构造函数()后,需求对【/system/etc/permissions】中的各种xml进行扫描,进行相应的权限存储,让以后可以使用,这就是本次“PMS之权限扫描”分析的目的。b、权限扫描:PackageManagerService执行构造函数()时,通过单例对象SystemCo
2020-09-17 17:28:26
316
原创 PackageManagerService Android 8.1 源码解读 05
继续上一篇:PackageManagerService Android 8.1 源码解读 04这篇主要是讲解apk安装的主要流程代码:f、点击一个apk后,会弹出【安装界面】,同时显示一个“来历不明的应用......”相关字样的对话框,点击“继续”按钮,执行【PackageInstallerActivity.initiateInstall()】方法;这个方法的主要作用是判断apk是否已经安装/** * Dialog to show when the source of apk can not
2020-09-17 16:53:27
304
原创 PackageManagerService Android 8.1 源码解读 04
PackageManagerService Android 8.1 源码解读 03接力上文:五、四部曲 - APK的安装:安装步骤一: 把【Apk的信息】通过【IO流】的形式写入到【PackageInstaller.Session】中 安装步骤二: 调用PackageInstaller.Session的【commit】方法, 把Apk的信息交给PKMS处理 安装步骤三: 进行Apk的【Copy操作】, 进行安装 a、安装的三步走, 整体描述图b、用户从文件管理应用中点击 【..
2020-09-17 14:37:08
492
原创 PackageManagerService Android 8.1 源码解读 03
接力上一篇:PackageManagerService Android 8.1 源码解读 02四、三步曲 - APK的扫描:PKMS的构造函数中调用了 scanDirTracedLI方法 来扫描某个目录的apk文件,8.1,MT6737芯片包含apk文件的目录/vendor/overlay 系统的APP类别/system/framework 系统的APP类别/system/priv-app 系统的APP类别/system/app 系统的APP类别/vendor/app 系统的APP类别
2020-09-17 14:36:48
555
2
原创 PackageManagerService Android 8.1 源码解读 02
接上文:PackageManagerService Android 8.1 源码解读 01d、第三步细节:PKMS.main(),main函数主要工作:【检查】Package编译相关系统属性 【调用】PackageManagerService【构造方法】 【启用】部分【应用服务】于多用户场景 【注册】服务【”package”】和【”package_native”】到ServiceManager中。public static PackageManagerService main(Context
2020-09-16 19:02:21
841
原创 PackageManagerService Android 8.1 源码解读 01
一、PackageManagerService 是什么?答: PackageManagerService(简称 【PKMS】),是 Android 系统中核心服务之一,负责应用程序的安装,卸载,信息查询,解析等工作。与apk相关的信息都在这个服务里可以查询到。二、PKMS 概述信息:Android系统启动时,由【system-server进程】来启动(应用程序的管理服务器PKMS),这个服务类负责【扫描】系统中【特定的目录】,【寻找】目录中的【APK格式的文件】,再对这些文件进行【解析】..
2020-09-16 18:59:04
453
原创 TCP/IP四层模型与OSI七层模型
学习目标:熟悉HTTP协议的知识学习内容:一、TCP/IP通信传输流二、http协议的定义三.HTTP协议基础四.HTTP协议报文结构提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总
2020-08-27 18:17:51
764
原创 Android中的自定义组件和android的动画
自定义ViewActivity、PhoneWindow、DecorView、ViewRoot1、Activity 控制器a、【Activity】并【不负责视图控制】,它只是控制【生命周期】和【处理事件】。【真正控制视图】的是【Window】。b、【一个Activity】包含了【一个Window】,【Window】才是【真正代表一个窗口】。c、【Activity】就像【一个控制器】,【统筹视图】的【添加与显示】,以及通过其他回调方法,来与Window、以及View进行交互。2、W..
2020-08-26 21:51:50
598
原创 Java中的抽象类与接口以及区别和优缺点对比
抽象类&接口?区别?优缺点?适用场景?菜鸟教程:抽象类 & 接口抽象类 & 接口抽象类不能实例化对象的类。通过abstract class来定义抽象类。抽象类必须被继承,才能被使用。abstract可声明抽象方法,抽象方法只包含方法名,没有方法体,具体实现由它的子类确定。抽象方法有两条规则:(1)包含抽象方法的类必定是抽象类(但抽象类不一定有抽象方法)(2)任何子类必须重写父类的抽象方法,或者声明自身为抽象类// 抽象类public abstract
2020-08-19 16:56:04
1322
原创 String的原理 & 不可变性
原理 & 不可变性内部在 Java 8 中,String 内部使用 char 数组存储数据。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[];}在 Java
2020-08-19 11:34:04
2264
1
原创 Java中原码、补码与反码与float,double精度问题
Java中原码、补码与反码用int型(4字节)的整数6及-6看原码,反码和补码;正数的原码,反码,补码都是一样的;6的原码:00000000 00000000 00000000 000001106的反码:00000000 00000000 00000000 000001106的补码:00000000 00000000 00000000 00000110负数的原码,反码,补码不一样:-6的原码:10000000 00000000 00000000 00000110-6的反码:1111
2020-08-19 10:43:49
876
1
原创 003_Java面向对象的五大基本原则
单一职责原则SRP(SingleResponsibilityPrinciple)是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。开放封闭原则OCP(Open-ClosePrinciple)一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只有服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户...
2020-08-18 18:41:19
141
[Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker
2014-01-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人