自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 收藏
  • 关注

原创 Android加密之文件级加密

前置文章《Android加密之全盘加密》《Android系统之System Server大纲》前言Android 的安全性问题一直备受关注,Google 在 Android 系统的安全方面也是一直没有停止过更新,努力做到更加安全的手机移动操作系统。在 Android 的安全性方面,有很多模块:内核安全性 应用安全性 应用签名 身份验证 Trusty TEE SELinux 加密 等等其中,加密又分全盘加密(Android 4.4 引入,《Android加密之全盘加密》

2020-06-06 16:32:46 4545 2

原创 性能优化——ZRAM

[FAQ21507]zram 原理及其配置[DESCRIPTION]swap分区其实就是 zram 部分的内容,两个可以认为是相同的东西其中swappiness 管理的是什么情况下放入到swap 分区,而 zram 管理了这个分区,包括分区的大小、压缩算法等[SOLUTION]1. 是否开机zram方法有两个:方法一 :CONFIG_ZSMALLOC=...

2019-12-21 14:52:46 3580

转载 PowerManager深入分析

概述一直以来,电源管理是电子产品设计中非常重要的环节,也是任何电子设备中最为重要的系统模块之一,优秀的电源管理方案,能够提供持久的续航能力,良好的用户体验,更能提升电子产品的竞争力。移动设备的电量主要由两种元件消耗:CPU和显示屏,因此设法降低这两种元件的耗电量就是电源管理的关键,为移动设备设计的CPU大多有两种工作频率,为了省电,大部分时间内cpu都工作在降低频率下,只有进行密集计算时,如视频解...

2018-05-23 15:29:46 1005

原创 [FAQ05660] [BMT]89平台关机充电第一张低电的图片如何克制化

[DESCRIPTION]89平台关机充电第一张低电的图片如何克制化[PLATFORM] MT6589[SOLUTION]1.       Alps\mediatek\platform\mt65xx\lk\mt_logo.c              添加相应的api(参照mt_disp_show_low_battery())2.       Alps\mediatek\platform\mt65...

2018-05-23 15:09:04 323

原创 [FAQ18017] recovery mode开机闪屏问题分析

[DESCRIPTION] 通过长按power key + volume up开机,在lk出现如下左图单独画面,然后在此模式下直接选择 recover mode开机,出现右边的闪屏残影画面,看起来一般闪屏,操作和现象如下图所示。     闪屏的原因是:选择recovery mode开机,系统并不会重启,而是直接从lk当前的菜单画面进入到lk logo界面。在LK階段vdo mode都是刷同一塊bu...

2018-05-23 15:04:56 1202

原创 [FAQ04327] 如何修改默认输入法

[Description]如何修改默认输入法?[Solution]一、适用于ICS(Android V4.0)之前的版本:1. 安装需要用的默认输入法(.apk)到system/app2. 修改文件 frameworks/base/packages/SettingsProvider/res/values/defaults.xml<string name="default_input_meth...

2018-05-15 12:12:20 461

原创 关机充电动画及recovery动画横竖屏修改

关机充电动画横竖屏修改打开充电log/vendor/mediatek/proprietary/external/libshowlogo/charging_animation.cpp改前9#define MTK_LOG_ENABLE 0改后9#define MTK_LOG_ENABLE 1根据下面log打印的值,再把phical_screen多旋转90度试试。717 if (MTK_LOG_ENAB...

2018-05-15 12:06:10 2888

原创 [FAQ02484] [BMT]关机充电动画客制化以及错位调整

[Description]关机充电动画客制化以及错位调整 [Solution]一、客制化1,关机充电logo图片都在alps/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo目录下,在这里可以看到多个包含不同size图片的子目录,具体使用哪个子目录下的图片由${BOOT_LOGO}决定。    note:如果客户想要使用客制化的...

2018-05-15 11:55:53 935

原创 彻底卸载 MediaTek\SP Driver

最近使用Pad在调试时,已经默认打开了USB调试,想要打印开机启动的log,发现并不能。需要开机后选择USB的连接模式为MTP才能打印log(默认连接模式是只充电)。而同事电脑连接上就可以打印,可以打印开机log。于是猜想是我的驱动跟他的不一样。于是开始折腾:简介:我想在电脑上清除所有USB设备的使用记录。在Windows XP时代,可以通过移除设备管理器中USB Root Hub,并在注册表中删...

2018-04-13 12:24:49 5610

原创 Git初体验

pwd命令用于显示当前目录通过git init命令把这个目录变成Git可以管理的仓库工作区(Working Directory)就是你在电脑里能看到的目录,比如我的gitdemo文件夹就是一个工作区.版本库(Repository)工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我...

2018-04-09 11:19:33 365

原创 Android N 限制应用使用非公共NDK——内置应用改为可卸载时报错

最近CTA项目,要求部分内置应用改为可卸载:电子邮件、计算器、录音机、相机、音乐、Android Easter Egg、FM 电台、MusicFX改成可卸载后,唯独FM电台报错:01-01 00:00:27.963 3728-3728/? E/linker: library "/system/lib64/libfmjni.so" ("/system/lib64/libfmjni.so") need...

2018-04-02 16:40:27 1398 3

原创 android Launcher3中定制第三方apk图标,实现类似主题功能

最近遇到在Launcher中对于指定的app需使用使用指定的图标,实现类似于主题的功能。要实现这样的功能就要弄清楚Launcher是如何加载app图标的。首先定位到com.android.launcher3.IconCache.java这个类的cacheLocked()方法private CacheEntry cacheLocked(ComponentName componentName, Lau...

2018-03-12 11:53:57 1029

原创 [FAQ14456] system.img>2G导致编译otapackage时报错如何处理

[DESCRIPTION]当system分区预制过多apk时如果image size超过2G 在make otapackage时会报如下错误 zipfile.LargeZipFile: Zipfile size would require ZIP64 extensions或 in writestr zinfo.CRC = crc32(bytes) & 0xffffffff # CRC-32...

2018-03-12 11:50:47 514

原创 [FAQ20105] 如何在同一个image实现单双卡兼容?

[DESCRIPTION]有些时候为了应对不同市场的需求做了不同的硬件设计,但是又希望使用同一套软件镜像自动适应。此FAQ即是解决单双卡兼容的问题,即同一包软件根据不同的硬件ID自动套用单卡或者双卡的设定。   [SOLUTION]首先前提条件是硬件上做了可以区分不同设计的方案,常规的做法有:透过GPIO电平的方式区分,1个GPIO有3种状态,高,低,悬空,2个GPIO就可以区分出9种不同的硬件。...

2018-03-12 11:38:31 215

原创 android framework的一些默认配置修改

在最新代码中不一定完全一样修改,但是可以参考思路。Launcher 总结:1、launcher的布局太居中,要想两边拉伸<\packages\apps\Launcher2\res\values\dimens.xml>    <dimen name="apps_customize_pageLayoutPaddingLeft">40dp</dimen>    &lt...

2018-03-12 11:37:16 2123 1

原创 [FAQ04184] [NVRAM] 如何添加驱动访问NVRAM的进程

[Description]驱动访问NvRAM数据,建议添加一个进程,并在init.rc里面启动。这个做法的好处:NvRAM文件有设访问权限,以避免不必要的访问导致数据篡改。在init.rc添加进程,设置权限,使得访问变得可控。 [Solution]1.       驱动如要访问NVRAM,需要添加一个NVRAM Agent(进程),如下示意图: 2.       举例添加一个NVRAM Agent...

2018-03-12 11:31:05 1023

原创 [FAQ04545] 【NvRAM】Native层读写nvram

[DESCRIPTION]     Native层中调用NVM_GetFileDesc()读写nvram [SOLUTION]    写nvram的流程:      1,NVM_GetFileDesc(file_lid, &rec_size, &rec_num,true);//读打开      2,read      3,NVM_CloseFileDesc      4,NVM_G...

2018-03-12 11:26:20 917

原创 NvRam增加记录恢复出厂设置次数(下)

恢复出厂设置会发出android.intent.action.MASTER_CLEAR广播,发现最终在\frameworks\base\services\core\java\com\android\server\MasterClearReceiver.java中实现。直接上代码。1.添加private static final String MASTERCLEAR_TIMES_FILE = "/d...

2018-03-12 11:23:27 1088

原创 NvRam增加记录恢复出厂设置次数(上)

NvRam增加记录恢复出厂设置次数1. 定义所需要保存的结构体。添加以下头文件\vendor\mediatek\proprietary\custom\rlk8783_f6_rc\cgen\cfgfileinc\CFG_Custom_MasterClear_File.h#ifndef _CFG_MASTERCLEAR_CUSTOM_FILE_H#define _CFG_MASTERCLEAR_CUS...

2018-03-12 11:07:48 1603 1

原创 Android System Server大纲之ContentService和ContentProvider原理剖析

前言ContentService是Android四大组件之一的ContentProvider密切相关的一个系统服务,且和AccountManagerService也有着紧密的联系。ContentService以功能来划分,就两大模块:提供管理通知监听ContentProvider数据变化的观察者的服务同步功能:同步日历、Email等第一个功能,对于很多开发者来说可能熟悉。而对于第二个,可能就会陌生...

2018-03-06 15:24:40 508

原创 Android系统之System Server大纲

前言System Server是android 基本服务的提供者,是android系统运行的最基本需求,所有server运行在一个叫system_process的进程中,system_process进程是android java虚拟机跑的第一个进程,从Zygote 创建而来,是andorid系统最重要的java虚拟机。可以说,整个android系统的业务都是围绕system server而展开,所...

2018-03-06 14:53:43 444

原创 Launcher进阶四——Launcher 记录自定义桌面

前言我们在使用手机的过程中,都会把我们手机的桌面布置成我们最喜欢,最习惯,最便捷的桌面。对手机而言,我们每一次对桌面的布置都会使数据发生变化,而数据在内存中是临时的,手机一旦关机,内存的数据就全部丢失了,因此,我们需要把自定义桌面的数据保存起来。在 Launcher,选择数据库来保存自定义桌面的数据。本文以 Android 的 Launcher3 为例,简述我们自定义桌面的时候,数据的产生、变...

2018-03-06 14:46:16 715 1

原创 Launcher进阶三——Launcher拖拽框架

前言在手机桌面,我们经常会把一个应用的图标从菜单里面,拉到桌面。或者把一个应用的图标移到自己更加喜欢的位置。这个过程,我们叫它拖拽。拖拽能够让用户方便的把应用放到用户可记得易操作的位置,从而能够让用户快捷的打开高频使用的应用。同时,拖拽也可以让用户能够布置自己的桌面,能够把应用进行分类的存放。因此,Launcher拖拽让用户可自定义桌面。本文所使用代码和任何展示均是使用Launcher3。拖拽演示...

2018-03-06 14:27:48 1094

原创 Launcher进阶二——Launcher界面结构

前言Launcher(启动器)作为Android系统的桌面,是Android系统面向用户的窗口,Launcher在一定程度上决定了当前设备的UI美观、性能和体验,因为这是最直接最优先带给用户使用设备的感受。所以在UI上,Launcher应该提供给用户更多的自由,更多的自定义,因为每个用户都有装扮自己手机等设备桌面的习惯和需求,如定义应用的分类,定义应用的快捷启动方式等等。Launcher UI分析...

2018-03-06 14:14:31 720

原创 Launcher进阶一——Launcher的启动过程

前言Launcher即桌面,是Android智能设备的窗口,用户使用最频繁的软件之一。Launhcer是Android所有应用的入口,也提供窗口小部件等功能。如下图:当然,Launcher本身就是一个APP,一个提供桌面的APP,我们也可以开发一款Launcher APP作为手机的桌面。Laucher有很多和普通APP不同的地方。Launcher是顶部APP,即任何应用返回后都是到Launcher...

2018-03-06 14:10:36 906

原创 Android 7.0 Camera架构源码分析

Android 7.0之前CameraService是在mediaserver进程中注册的,看下Android 6.0的代码: //path: frameworks\av\media\mediaserver\main_mediaserver.cpp int main() { sp<ProcessState> proc(ProcessState::s...

2018-03-06 11:05:28 2197

原创 android拍照角度转换问题

一、部分Android手机拍照后照片被旋转的解决方案在部分Android手机(如MT788、Note2)上,使用Camera拍照以后,得到的照片会被自动旋转(90°、180°、270°),这个情况很不符合预期。仔细分析了一下,因为照片属性中是存储了旋转信息的,所以要解决这个问题,可以在onActivityResult方法中,获取到照片数据后,读取它的旋转信息,如果不是0,说明这个照片已经被旋转过了...

2018-03-06 10:39:58 416

原创 Android相机的角度问题

由于Android系统的开放策略,Android手机呈现碎片化的趋势,兼容性问题一直是Android App 开发者头疼的难题。本文以Android相机预览方向为例,探索在Android机型适配上的一些思路。1. android相机简介由于Android系统的开放策略,Android手机呈现碎片化的趋势,兼容性问题一直是Android App 开发者头疼的难题。本文以Android相机预览方向为例...

2018-03-06 10:20:16 774

原创 android 6.0,为何Launcher3桌面和主菜单图标字体大小不跟随系统发生变化?

Launcher3在初始化图标字体的时候使用了TypedValue.COMPLEX_UNIT_PX属性,所以字体大小不跟随系统发生变化!如需要桌面和主菜单图标字体大小跟随系统变化,请做如下修改:定位到Launcher的BubbleTextView.java文件:         if (display == DISPLAY_WORKSPACE) {-           

2018-02-27 10:51:37 438

原创 Android 通过hosts屏蔽指定ip的网络访问

通过指定对应ip的域名解析为localhost就可以屏蔽网络访问,以下是禁用讯飞输入法一些网络访问的例子:hosts位置:system/core/rootdir/etc/hosts[plain] view plain copy127.0.0.1                  localhost 

2018-02-27 10:49:57 3274

原创 [FAQ11476] Launcher3如何设置桌面的行数和列数?

[DESCRIPTION]Launcher3桌面的行数和列数是动态计算的,如何修改?[SOLUTION]Launcher3桌面的行数和列数都是在InvariantDeviceProfile.java和DeviceProfile.java中动态计算的,xml中无法配置。Note:L版本无InvariantDeviceProfile.java,是DynamicGrid.

2018-02-27 10:39:37 237

原创 [FAQ14558] [camera] 修改cfg文件后方向无效问题

[DESCRIPTION] 修改cfg_setting_imgsensor.cpp 后发现无效。   [SOLUTION] 由于目前在MT8163、MT8173、MT8735、MT8735m等平台上会使用到metadata。 当使用metadata配置方向信息会从metadata中获取,从而导致修改cfg文件无法改变方  向。如果想修改方

2018-02-27 10:29:48 773

原创 [FAQ20069] 微信打开相机按钮,提示camera不能使用

[DESCRIPTION] 微信打开相机按钮,提示camera不能使用  这类问题主要发生在:客户是横屏平台;而我们公版是竖屏平台,所以公版经常无法复现.  [SOLUTION]1,如果客户是横屏的平台,改成竖屏;2,如果客户camera sensor角度是0,90.请客户改成:main 修改成90 度,sub 修改成270度。

2018-02-27 10:28:04 1714

原创 Android之动态修改system/etc目录下文件的一种实现方式-SELinux

在没有root的前提下,system分区为只读,若要动态修改该分区下的文件,可以按照下面流程实现:1.写执行脚本,这里以修改system/etc/hosts文件为例,在/device/mediatek/mt67xx目录下创建名为modifyhosts.sh的文件,文件内容如下:[python] view plain copy# 修改s

2018-02-27 10:25:46 2699 2

原创 Android的SELinux——SEAndroid

SEAndroid简介  SEAndroid是Google在Android4.4上正式推出的一套以SELinux为核心的系统安全机制。而SELinux则是由NSA(美国国安局)在Linux社区的帮助下设计的一个针对Linux的安全强化系统。  NSA最初设计的安全模型叫FLASK,全称为FluxAdvanced Security Kernel(由Uta大学和美国国防部开

2018-02-27 10:20:14 1948

原创 [FAQ15952] [Others] Camera 相关的Makefile Option详解

[DESCRIPTION]列举了所有Camera相关的Makefile Option,并对其功能含义和Option Values做了详细的解释。[KEYWORD]Others[SOLUTION]YUVCAM_INTERPOLATION # Description:  #   决定是否需要插值以及用什么方式进行插值(所谓插值就是拍照的照片比Sensor实际的像素还要大,如Sensor是2M的,但实际...

2018-02-23 09:39:54 231

原创 Android实现异步的几种方法

在Android项目中,有经验的开发人员都知道,一些耗时的IO操作等都必须在子线程中去操作,那么可以有哪些方法来开启子线程呢,一般可以使用Java中自带的几种方法,也可以使用Andorid特有的一些类。用Java来实现异步主要有两种方法来实现异步,继承Thread类和实现Runnable接口1.继承Thread类先上代码public class MyThread extends Thread {

2017-12-08 16:59:18 894

转载 Android O 指纹识别解析

一、前言 - Project Treble众所周知,Android 碎片化问题比较严重,新版本更新效率比较低,Google 为了解决此类问题,发布了 Project Treble 项目。Google 在Android O上,修改了框架.Android O与之前的Android 版本相比,多出了一个vendor.img分区.在此之前的Android 系统架构当中,Android Framework ...

2017-12-07 15:50:16 4414

原创 Android 指纹识别App开发demo

在Android 6.0中google终于给android系统加上了指纹识别的支持,这个功能在iPhone上早就已经实现了,并且在很多厂商的定制的ROM中也都自己内部实现这个功能了,这个功能来的有点晚啊

2017-12-07 11:39:36 1822

原创 APK安装时的过滤方式:包名白名单、证书认证

有些项目不允许所有APK都拥有安装权限,例如apk只能通过应用商城来安装或者升级,只允许某些特定的apk自升级,不允许pm install等。这就需要添加安装权限白名单来控制。先介绍android中常用的几种安装方式,好针对这几种进行修改 1、 直接调用安装接口。Uri mPackageURI = Uri.fromFile(new File(Environment.getExter

2017-12-05 16:04:58 5580 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除