我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android开发必备知识点有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android开发必备知识点有哪些

这篇文章主要介绍“Android开发必备知识点有哪些”,在日常操作中,相信很多人在Android开发必备知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android开发必备知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、查看CPU 温度

  • 使用ADB 查看CPU温度(debug版本)

查看CPU命令如下:

adb shell cat /sys/class/thermal/thermal_zone*/temp
  • 查看CPU 返回内容对应分类信息

adb shell cat /sys/class/thermal/thermal_zone*/type

Android开发必备知识点有哪些

CPU 温度查看命令方法

由此查看的 CPU 温度包含小数点后三位,小数点省去,此方法适用于MTK 平台。

  • MTK log 中查看CPU 温度

kernel log中 搜索关键字 T_AP 查看CPU 温度。

Android开发必备知识点有哪些

二、 开机向导调试相关方法

1.debug 版本跳过开机向导方案

  • 点击四次快捷操作
    连续点击屏幕四角(左上-->右上-->右下-->左下),既可跳过开机向导。

  • adb 命令disable 开机向导

adb shell settings put secure user_setup_complete 1adb shell settings put global device_provisioned 1adb shell pm disable com.google.android.setupwizard/.SetupWizardActivity

2.debug 重启 开机向导方案

跳过开机向导 后 又想重新走开机向导,可以尝试以下命令。

  • 将开机向导 完成后设置的值复位

命令如下:

adb shell settings put secure user_setup_complete 0adb shell settings put global device_provisioned 0
  • 设置开机向导可用,并启动

过完开机向导后,会设置开机向导apk不可用。
此时我们应该设置开机向导为enble状态。

adb shell pm enable com.google.android.setupwizard/.SetupWizardActivityadb shell am start -n com.google.android.setupwizard/.SetupWizardActivity

3. 开机向导 log 调试

打开开机向导调试Log方式如下:

adb shell setprop log.tag.SetupWizard VERBOSE

4. 代码中跳过开机向导的方法

在代码中跳过开机向导的方法如下:

        private  void  SkipSetupwizard(){            ActivityManager activityAanager = (ActivityManager) mContext                .getSystemService(Context.ACTIVITY_SERVICE);            ComponentName cn = activityAanager.getRunningTasks(1).get(0).topActivity;            String pName = cn.getPackageName();            if("com.google.android.setupwizard".equals(pName))            {                Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);                Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);                activityAanager.forceStopPackage("com.google.android.setupwizard");                Log.i("wjwj","----------skip com.google.android.setupwizard--------");            }               }

三、查看APP启动时间

1.使用adb 命令抓log 查看

adb logcat | findstr Displayed
或者直接抓取 adb Log, 然后搜索关键字 Displayed

Android开发必备知识点有哪些

APP 冷启动时间统计

Android开发必备知识点有哪些

adb Log 中搜索关键字Display

2.查看多次 app 冷启动的方法

测试 10次 Chrome 冷启动的方法如下:
adb shell am start -S -R10 -W com.android.chrome/com.google.android.apps.chrome.Main

测试结果如下:

C:\Users\Administrator>adb shell am start -S -R10 -W com.android.chrome/com.google.android.apps.chrome.MainStopping: com.android.chromeStarting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.chrome/com.google.android.apps.chrome.Main }Status: okActivity: com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivityTotalTime: 1514WaitTime: 1525CompleteStopping: com.android.chromeStarting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.android.chrome/com.google.android.apps.chrome.Main }Status: okActivity: com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivityTotalTime: 534WaitTime: 549Complete

四、判断 user ,userdebug 版本的方法

private static final boolean USER_BUILD = android.os.Build.IS_USER;

查看 Build.java 发现,这些是对外部apk 隐藏的方法,只有系统平台 签名的应用才可以使用。

        public static final boolean IS_ENG = "eng".equals(TYPE);        public static final boolean IS_USERDEBUG = "userdebug".equals(TYPE);        public static final boolean IS_USER = "user".equals(TYPE);

五、修改截屏默认存储路径

/frameworks/base/packages/SystemUI/class="lazy" data-src/com/android/systemui/screenshot/GlobalScreenshot.java

       // import com.mediatek.storage.StorageManagerEx;       String defaultWritePath = StorageManagerEx.getDefaultPath()+File.separator+"Pictures";        mScreenshotDir = new File(defaultWritePath, SCREENSHOTS_DIR_NAME);

六、解析 kernel dump 方法

1.将所有的systemdump 文件追加到一个文件中

首先我们需要抓到dumpsys log,然后将所有的systemcore* 文件 追加到一个文件中。

cat systemcore* > all

Android开发必备知识点有哪些

将sysdump 所有文件 追加到一个文件中

2. 使用对应版本的vmlinux 解析dump文件

使用 crash_arm 命令对 dump 文件进行解析

  • 32位系统使用如下:
    ./crash_arm vmlinux all -m phys_base=0x80000000

  • 64位系统使用如下命令:
    ./crash_arm64 vmlinux all -m phys_offset=0x80000000

3.解析成功后进行调试

成功解析dump后解析log方法
log > log.txt

Android开发必备知识点有哪些

使用 log 命令 读取log 到指定文件

七、SPRD 默认打开 Ylog 以及dumpsys enable方法

修改 device\sprd\xxxx\common\rootdir\root\init.common.rc
on post-fs-data 中添加如下内容:

on post-fs-data     .....       setprop persist.ylog.enabled 1//增加这一句用于打开ylog       setprop  debug.sysdump.enabled  true //增加这一句用于打开sysdump       setprop   persist.sys.eng.reset 1 //再增加这一句       start ylog

八、判断是否正在 monkey 测试的方法

    public boolean isMonkeyRunning() {        return ActivityManager.isUserAMonkey();    }

九、修改MTK log 模式的方法

修改以下路径下配置的属性值既可alps\device\mediatek\common\mtklog
false 改为true就可以打开对应的log

mtklog_path = internal_sdcom.mediatek.log.mobile.enabled = falsecom.mediatek.log.mobile.maxsize = 500com.mediatek.log.mobile.totalmaxsize = 1000com.mediatek.log.modem.enabled = falsecom.mediatek.log.modem.maxsize = 2000com.mediatek.log.net.enabled = falsecom.mediatek.log.net.maxsize = 600com.mediatek.log.gps.enabled = false

十、MTK平台 只开Mobile log方法

输入暗码 *#*#3646633#*#*,进入MTK Logger 界面,右上角打开Logger Setting,手动关闭除Moblie Log之外的开关。

关闭方法请看下图:

Android开发必备知识点有哪些

mtk 平台开启 Mobile log 参考图

十一、SPRD平台 只开Android log方法

输入暗码 *#*#83781#*#*,进入SPRD Logger 界面,右上角打开Settings, 点击Custom scene,关闭除Android log之外的开关,关闭方法请看下图。

Android开发必备知识点有哪些

SPRD 平台开启 Android log 参考图

十二、SPRD 平台功耗 Log 注意事项

  1. 只开 Android Log(参考十一、SPRD平台 只开Android log方法

  2. 进入DEBUG&Log界面,system info-> Power Log;

  3. 打开PowerGuru logwakelock log

  4. 重启设备。

  5. 使用下面命令,复位一下battery history

adb shell dumpsys batterystats --enable full-wake-historyadb shell dumpsys batterystats --reset
  1. 测试完成后,使用下面命令,抓取bugreport

adb rootadb bugreport > bugreport.zip
  1. 最后将andorid logbugreport.zip 都提供出来。

十三、获取Top Activity 包名

获取Activity Top的方法如下:

//import android.app.ActivityManager;//import android.app.ActivityManager.RunningTaskInfo;//import android.content.ComponentName;//import java.util.List;// 获取top Activity apk        public String getTopActivityPackageName(Context context) {            String topActivityPackage = null;            ActivityManager activityManager = (ActivityManager) (context                    .getSystemService(android.content.Context.ACTIVITY_SERVICE));            List<RunningTaskInfo> runningTaskInfos = activityManager                    .getRunningTasks(1);            if (runningTaskInfos != null) {                ComponentName f = runningTaskInfos.get(0).topActivity;                topActivityPackage = f.getPackageName();                 //Slog.e("wangjie", "------topActivityPackage---------"+topActivityPackage);            }            return topActivityPackage;        }

十四、 修改Google 开机向导欢迎语

孟加拉语开机向导欢迎语不对,客户要求去掉开机向导界面欢迎语方法。

idh.code/frameworks/base/core/java/android/widget/TextView.java

public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {... ...     public void setTextLocale(@NonNull Locale locale) {+        // add for  Bangla language+        if (getContext().getClass().getName().equals("com.google.android.setupwizard.user.WelcomeActivity") &&+                locale.getLanguage().equals("bn") && locale.getCountry().equals("BD"))+        {+            Log.i(LOG_TAG, "find text:" + getText());+            if (!getText().equals("") && !getText().toString().contains("("))+            Log.i(LOG_TAG, "set text:" + getText());+            setText("");+        }+        // add for  Bangla language         mLocalesChanged = true;         mTextPaint.setTextLocale(locale);         ... ...          }... ...}

十五、修改状态栏 时间显示秒

展讯平台修改状态栏 时间显示秒方法如下

adb shell pm enable com.android.systemui/com.android.systemui.tuner.TunerActivityadb shell am start -n com.android.systemui/com.android.systemui.tuner.TunerActivity

进入设置--系统--界面界面调谐器--状态栏--时间--显示时分秒。

十六、判断多用户方法

判断多用户方法如下:

// import android.os.UserHandle;if(UserHandle.myUserId() != UserHandle.USER_OWNER){   // 给管理员用户 进行操作}

十七、低RAM(1G)下的模糊效果去除

Android GO 版本下,为了兼容系统性能,牺牲部分UI体验,比如 最近任务列表模糊,Settings 界面加载由模糊到清晰,Launcher 图标加载由模糊到清晰,但是这个很影响用户体验,个人认为不太好,去掉模糊效果的方案如下:

1.需要修改的文件如下:

 frameworks/base/services/core/java/com/android/server/wm/AppWindowContainerController.java  frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotController.java     frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
  • AppWindowContainerController 修改方法

在AppWindowContainerController.java 类中,请注释掉scheduleAddStartingWindow方法实现。

public class AppWindowContainerController        extends WindowContainerController<AppWindowToken, AppWindowContainerListener> {... ...// 注释掉该方法    void scheduleAddStartingWindow() {        // Note: we really want to do sendMessageAtFrontOfQueue() because we        // want to process the message ASAP, before any other queued        // messages.            }... ...}
  • TaskSnapshotController 修改方法

将系统手动设置为非低内存设备,比如将isLowRamDevice =false状态。

class TaskSnapshotController {... ...// 将系统手动设置为非低内存设备  final boolean isLowRamDevice = false; //final boolean isLowRamDevice = ActivityManager.isLowRamDeviceStatic();... ...
  • TaskSnapshotPersister 修改方法

在TaskSnapshotPersister 类中,将DISABLE_FULL_SIZED_BITMAPS状态设置为false。

class TaskSnapshotPersister {... ...// 将DISABLE_FULL_SIZED_BITMAPS状态设置为false。 static final boolean DISABLE_FULL_SIZED_BITMAPS = false;//static final boolean DISABLE_FULL_SIZED_BITMAPS = ActivityManager.isLowRamDeviceStatic();... ...}

十八、屏幕四周圆角方案

SPRD屏幕四周圆角方案需要修改***.dtsi 文件。
以sc7731e.dtsi 为例,需要修改的文件路径为kernel4.4/arch/arm/boot/dts/sc7731e.dtsi,其中15 表示圆角的弧度,默认直角90度
修改方法如下:

soc: soc {        ap-ahb {            dispc0: dispc@20800000 {                ... ...                sprd,ip = "dpu-lite-r1p0";                sprd,soc = "pike2";                                // 15 表示圆角的弧度                sprd,corner-radius = <15>;                                port {                    dispc0_out: endpoint@0 {                        remote-endpoint = <&dsi0_in>;                    };                };            };... ...}

到此,关于“Android开发必备知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android开发必备知识点有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android开发必备知识点有哪些

这篇文章主要介绍“Android开发必备知识点有哪些”,在日常操作中,相信很多人在Android开发必备知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android开发必备知识点有哪些”的疑惑有所
2023-06-04

前端必备的nginx知识点有哪些

本篇内容主要讲解“前端必备的nginx知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“前端必备的nginx知识点有哪些”吧!nginx简介Nginx是一款轻量级、高性能的 Web 服务
2023-07-05

域名必备知识有哪些

这篇文章主要介绍了域名必备知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.域名后缀有什么含义?如何选择使用这些后缀域名?在国内主要有com、net、cn、org等
2023-06-10

Android开发使用Message对象分发必备知识点详解

这篇文章主要为大家介绍了Android开发使用Message对象分发必备知识点详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Node.js开发的知识点有哪些

这篇文章主要介绍“Node.js开发的知识点有哪些”,在日常操作中,相信很多人在Node.js开发的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js开发的知识点有哪些”的疑惑有所帮助!
2023-06-17

web网页开发面试笔试必备小知识有哪些

今天就跟大家聊聊有关web网页开发面试笔试必备小知识有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。HTML中行内元素与块级元素的区别:在标准文档流里面,块级元素具有以下特点:①
2023-06-08

Java必会的知识点有哪些

本篇内容主要讲解“Java必会的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java必会的知识点有哪些”吧!基础部分知识点1.java开发环境搭建,建议从jdk1.8开始学习,下载
2023-06-16

Jspxcms二次开发的知识点有哪些

这篇文章主要介绍“Jspxcms二次开发的知识点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Jspxcms二次开发的知识点有哪些”文章能帮助大家解决问题。作为通用的网站内容管理系统,只能尽可
2023-06-26

Python开发常用的知识点有哪些

这篇文章主要介绍“Python开发常用的知识点有哪些”,在日常操作中,相信很多人在Python开发常用的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python开发常用的知识点有哪些”的疑惑有所
2023-06-27

PHP中必须知道的知识点有哪些

这篇文章主要介绍“PHP中必须知道的知识点有哪些”,在日常操作中,相信很多人在PHP中必须知道的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中必须知道的知识点有哪些”的疑惑有所帮助!接下来
2023-06-20

了解Golang:开发者必备知识

Golang,又称为Go语言,是一种由Google开发的开源编程语言。自2007年发布以来,Golang在软件开发领域逐渐崭露头角,得到了越来越多开发者的青睐。作为一种静态类型、编译型语言,Golang拥有诸多优点,如高效的并发处理能力、简
了解Golang:开发者必备知识
2024-02-23

域名备案知识点有哪些

这篇文章主要介绍域名备案知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 网站备案是根据国家法律法规需要网站的所有者向国家有关部门申请的备案,主要有ICP备案和公安局备案。1、域名备案网站接入方式:专线、主
2023-06-06

Java并发知识点有哪些

本篇内容主要讲解“Java并发知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java并发知识点有哪些”吧!1.并行跟并发有什么区别?从操作系统的角度来看,线程是CPU分配的最小单位。
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录