Android笔记(一) 常用命令

驱动文件的编译

由于AndroidQBSP可以单独编译,因此,在bsp目录下执行source,lunch之后,可以单独编译ko模块,命令如下:

make modules m synaptics_dsx_td4310.ko

设置数据库步骤:

adb shell        ---->进入到进入模拟器的shell模式

ums9230_1h10_go:/ # settings get global(数据库名) cast_mode(字段)                                              //从数据库中得到数据

ums9230_1h10_go:/ # settings put global(数据库名) multidisplay_info(字段) unisoc(值)      //向数据库中插入数据

补充:

 * SettingsProvider对数据进行了分类,分别是Global、System、Secure三种类型,它们的区别如下:
 * Global:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;
 * System:包含各种各样的用户偏好系统设置;
 * Secure:安全性的用户偏好系统设置,第三方APP有读没有写的权限。

发送广播

adb shell am broadcast -a android.media.action.HDMI_AUDIO_PLUG --ei android.media.extra.AUDIO_PLUG_STATE 1                  //发送广播,并且附带数据状态值为1.

adb shell am broadcast -a android.media.action.HDMI_AUDIO_PLUG --ei android.media.extra.AUDIO_PLUG_STATE 0                  //发送广播,并且附带数据状态值为0.

adb shell am broadcast 后面的参数有:

<INTENT> specifications include these flags and arguments:

[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]

[-c <CATEGORY> [-c <CATEGORY>] ...]

[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]

[--esn <EXTRA_KEY> ...]

[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]

[--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]

[--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]

[--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> ...]

[--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]

[--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]

[--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]

(mutiple extras passed as Integer[])

[--eial <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]

(mutiple extras passed as List<Integer>)

[--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]

(mutiple extras passed as Long[])

[--elal <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]

(mutiple extras passed as List<Long>)

[--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]]

(mutiple extras passed as Float[])

[--efal <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]]

(mutiple extras passed as List<Float>)

[--esa <EXTRA_KEY> <EXTRA_STRING_VALUE>[,<EXTRA_STRING_VALUE...]]

(mutiple extras passed as String[]; to embed a comma into a string,

escape it using "\,")

[--esal <EXTRA_KEY> <EXTRA_STRING_VALUE>[,<EXTRA_STRING_VALUE...]]

(mutiple extras passed as List<String>; to embed a comma into a string,

escape it using "\,")

[--f <FLAG>]

[--grant-read-uri-permission] [--grant-write-uri-permission]

[--grant-persistable-uri-permission] [--grant-prefix-uri-permission]

[--debug-log-resolution] [--exclude-stopped-packages]

[--include-stopped-packages]

[--activity-brought-to-front] [--activity-clear-top]

[--activity-clear-when-task-reset] [--activity-exclude-from-recents]

[--activity-launched-from-history] [--activity-multiple-task]

[--activity-no-animation] [--activity-no-history]

[--activity-no-user-action] [--activity-previous-is-top]

[--activity-reorder-to-front] [--activity-reset-task-if-needed]

[--activity-single-top] [--activity-clear-task]

[--activity-task-on-home]

[--receiver-registered-only] [--receiver-replace-pending]

[--receiver-foreground]

[--selector]

[<URI> | <PACKAGE> | <COMPONENT>]

1

adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true

说明:--es 表示使用字符串类型参数  --ei 表示int类型参数  --ez 表示boolean类型参数  蓝色为key,红色为value

快速验证framework修改

以下是FW修改 framework下面的代码,方便快速放到手机进行调试的方法。

这种push的方法需要保证我们的手机的版本和本地代码相匹配(如果本地代码很久没有更新,手机使用了新的pac,有可能会发生系统服务运行crash)

Android 11& 12执行make framework-minus-apex可以编译出framework.jar Android10及其之前使用 make framework)。services.jar 编译命令依然是make services

service push目录

adb push $OUT/system/framework/services.jar* system/framework/;

adb push $OUT/system/framework/oat/arm/services.* system/framework/oat/arm/;

adb push $OUT/system/framework/oat/arm64/services.* system/framework/oat/arm64/

framework push目录

adb push $OUT/system/framework/framework.jar system/framework/;

adb push $OUT/system/framework/boot-* system/framework/;

adb push $OUT/system/framework/arm/boot-* system/framework/arm/;

adb push $OUT/system/framework/arm64/boot-* system/framework/arm64/

Git撤销,放弃本地修改

Git 撤销,放弃本地修改

如果在修改时发现修改错误,而要放弃本地修改时,

一,未使用 git add 缓存代码时。

可以使用 git checkout -- filepathname (比如: git checkout -- readme.md  ,不要忘记中间的 “--” ,不写就成了检出分支了!!)。放弃所有的文件修改可以使用 git checkout .  命令。

此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。

二,已经使用了  git add 缓存了代码。

可以使用  git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。

此命令用来清除 git  对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。

三,已经用 git commit  提交了代码。

可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard  commitid

你可以使用 git log 命令来查看git的提交历史。git log 的输出如下,可以看到第一行就是 commitid:

Git操作----删除untracked files

  # 删除 untracked files

    git clean -f

 # 删除指定路径下的没有被track过的文件

    git clean -f <path>

    git clean -f  packages/SystemUI/res-unisoc/layout/display_dialog_activity.xml

  # 连 untracked 的目录也一起删掉

    git clean -fd

  # 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)

    git clean -xfd

  # 在用上述 git clean 前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删

    git clean -nxfd

    git clean -nf

    git clean -nfd

  # 删除文件

     git rm test.txt

Git Reset三种模式

Git Reset 三种模式

问题:当前GIT库三个提交,希望把最近的两个提交合并为一个提交。

git reset --soft HEAD^

git commit --amend

git reset

reset(重置) 的本质:移动 HEAD 以及它所指向的 branch

git reset --soft HEAD^,git reset --hard HEAD^和git reset --mixed的区别

--hard 会清空工作目录和暂存区的改动,而 --soft则会保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区

reset 不加参数(mixed):保留工作目录,并清空暂存区.把所有差异都混合(mixed)放在工作目录中.

常用adb命令

1.用adb shell dumpsys meminfo package name看看当前进程的内存使用情况

2.可以在adb shell里输入getevent -ltr  这个可以看到Input上报的事件

3.adb shell pm clear com.android.wallpaper命令清除其数据

4.

        adb shell dumpsys wallpaper  > wallpaper.txt

        adb shell dumpsys SurfaceFlinger > surfaceflinger.txt

        adb shell dumpsys window windows > window.txt

5.android如何判断手机CPU是32位还是64位的?

adb shell getprop ro.product.cpu.abi 

C:\Users\ruya.zhao>adb shell getprop ro.product.cpu.abi

arm64-v8a

6.获得所有进程的列表

要获得所有进程的列表,可以执行命令 ps -ef(POSIX 风格)或 ps ax(BSD 风格)。进程名有方括号的是内核级的进程,执行辅助功能(比如将缓存写入到磁盘);所有其他进程都是使用者进程。您会注意到,就算是在您新安装的(最小化的)系统中,也会有很多进程在运行。熟悉它们,并把它们记录到文档中。

7.使用命令进入Settings

     adb shell am start com.android.settings

回退代码

1.repo sync 全部

2.回退到2022-08-25 20:00  ; 

3.执行repo manifest -r -o mymanifest2000.xml

4.make ; cp_sign; makepac; 生成pac

5.导出pac、mymanifest2000.xml

回退到某一个节点

//正确的命令

//正常会有如下流程

本地整编后打包pac

$make

按照提示执行命令

$make

$cp_sign

$makepac    // pac在out/xx/cp_sign/.pac

logcat

D:\软件\adb tools>adb shell

s9863a1h10:/ # logcat | grep "SurfaceFlinger"

多个筛选条件

logcat | grep -e aaa -e bbb -e ccc

logcat -s ruya ruya2 ruya3

D:\软件\adb tools>adb shell

s9863a1h10:/ # logcat | grep -e WindowManager -e SurfaceFlinger

logcat | grep -e WindowManager -e SurfaceFlinger

//打印出Native Crash的 log

adb shell logcat -v time | grep "Native Crash"

手动dump heap
adb shell am dumpheap pid >out.hprof

查看events.log中的ams log

adb logcat -b events | grep am_

查看kernel.log

C:\Users\ruya.zhao>adb shell

uis7862a_1h10:/ # logcat -b kernel

模拟菜单键事件

adb shell input keyevent 82模拟菜单键事件

如何打Trace

Log.d(TAG,Log.getStackTraceString(new Throwable()));

生成diff文件

git diff > 1613716.diff

跳转到相同目录执行下面命令,git apply 1613716.diff

禁用滑动特效

Android 禁用滑动到底的特效:overScrollMode=never

拉取代码

AndroidQ

1)$mkdir Android10_trunk_19c_rls1:第一次要新建文件夹Android10_trunk_19c_rls1

2)$cd Android10_trunk_19c_rls1

3)$repo init -u ssh://gitadmin@gitmirror.spreadtrum.com/platform/manifest.git -b sprdroid10_trunk_19c_rls1

4)$repo sync -cdq -j30     或者    $repo sync -cdq -j8(全拉)

repo sync只同步部分代码的方法

repo sync只同步部分代码的方法

首先打开源码目录下的.repo目录,打开manifest.xml,里面是一个子项目列表,针对不同种类的仓库进行一个总的分类,若是查看系统应用的仓库名,可以前往system文件夹下的default.xml文件查看

  <!-- Include system component repos -->

  <include name="system/default.xml" />

  <!-- Include common repos -->

  <include name="common/default.xml" />

  <!-- Include vendor component repos -->

  <include name="vendor/default.xml" />

  <!-- Include unisoc_bin.xml -->

  <include name="unisoc_bin.xml" />

.repo\manifests\system\default.xml,若是查看AOSP的仓库名,则前往system文件夹下的aosp.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<manifest>

  <!-- Include aosp.xml -->

  <include name="system/aosp.xml" />

  <!-- Include carriers.xml -->

  <include name="system/carriers.xml" />

  <include name="system/common.xml" />

  <!-- Include lego.xml -->

  <include name="system/lego.xml" />

  <!-- Include partner.xml -->

  <include name="system/partner.xml" />

  <!-- Include vendor_app.xml -->

  <include name="system/vendor_app.xml" />

</manifest>

找到需要同步的子仓库,例如launcher3

 <project name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3"  groups="pdk-fs"/>

执行以下命令同步该代码库

 repo sync platform/packages/apps/Launcher3

Android开发中获取SDK自带的图片

 在开发中要用到很多的图片,其实我们可以直接使用android sdk自带的图片,有大量供你选择,而且都有不同大小的图片来适应分辨率,很方便。

那么如何获取到这些图片呢?

在我的电脑上,路径是

/home/ruya.zhao/Android/Sdk/platforms/android-30/data/res/drawable-ldpi(Ubuntu) 或者 E:\Android\Sdk\platforms\android-30\data\res\drawable-ldpi(Windows)

 即路径为Sdk/platforms/android-30/data/res/drawable-ldpi

Java中String类下的isEmpty()android中的TextUtils.isEmpty( )区别:

Java中,String类下的isEmpty( )返回的只是字符串的长度是否为0,如果字符串为null就会直接报空指针。

源码如下:

public boolean isEmpty() {

    return count == 0;

}

android中,TextUtils.isEmpty(要判断的字符串)会对null和长度进行判断,所以不会报空指针。

源码如下:

public static boolean isEmpty(@Nullable CharSequence str) {

    if (str == null || str.length() == 0) {

        return true;

    } else {

        return false;

    }

}

切换屏幕分辨率

切HD: adb shell wm size 720x1440

             adb shell wm density 408

切HD+: adb shell wm size 1080x2160

              adb shell wm density 480

录屏方法

adb shell screenrecord data/1.mp4

adb pull data/1.mp4

从手机中pull出来手机录屏的视频

adb pull /storage/emulated/0/Movies/screen-20210305-023328.mp4 d:/films/3.mp4

截屏方法

adb shell screencap data/1.png

adb pull data/1.png d:/pictures/1.png

adb pull /storage/emulated/0/Pictures/Screenshots/Screenshot_20210429-165657.png d:/pictures/screenshot

查看数据库的值:

D:\软件\adb tools>adb shell

s9863a1h10_go_32b:/ # cd data/data/com.android.launcher3/databases

cd data/data/com.android.launcher3/databases

s9863a1h10_go_32b:/data/data/com.android.launcher3/databases # ls

ls

app_icons.db launcher.db widgetpreviews.db

s9863a1h10_go_32b:/data/data/com.android.launcher3/databases # sqlite3 launcher.db

qlite3 launcher.db                                                            <

SQLite version 3.22.0 2019-09-03 18:36:11

Enter ".help" for usage hints.

sqlite> select * from favorites;

select * from favorites;

Hotseat

Q:Launcher3中怎么修改让横屏的时候Hotseat是在屏幕底部

A:把config.xml里的hotseat_transpose_layout_with_orientation设置为false

adb 获取当前activity信息

8.1之前

window 通过adb shell dumpsys activity | findstr mFocus

Linux 通过adb shell dumpsys activity | grep mFocus

8.1之后

window 通过adb shell dumpsys activity | findstr mResume

Linux 通过adb shell dumpsys activity | grep mResume

12之后

window 通过adb shell dumpsys activity | findstr Resumed

Linux 通过adb shell dumpsys activity | grep mResume

如何快速定位当前的Activity和Fragment页面?

(1)查看当前Activity adb shell “dumpsys window w | grep name=”

(2)查看当前栈顶的Activity adb shell dumpsys activity | grep “mFocusedActivity” 

(3)查看当前栈顶的ActivityFragment adb shell dumpsys activity your.package.name

SecondaryDisplayLauncher

我们可以通过以下指令来启动SecondaryDisplayLauncher预览界面:

A10

AOSP版本:

adb shell am start -n com.android.launcher3/com.android.launcher3.SecondaryDisplayLauncher

Pixel机器:

adb shell am start -n com.google.android.apps.nexuslauncher/com.android.launcher3.SecondaryDisplayLauncher

A11/A12

AOSP版本:

adb shell am start -n com.android.launcher3/com.android.launcher3.secondarydisplay.SecondaryDisplayLauncher

Pixel机器:

adb shell am start -n com.google.android.apps.nexuslauncher/com.android.launcher3.secondarydisplay.SecondaryDisplayLauncher

Sensor

陀螺仪是测角速度的,G-Sensor是测重量加速度的,它是加速度计的一种。

G-sensor中文是加速度传感器的意思(英文全称是Accelerometer-sensor),它能够感知到加速力的变化,加速力就是当物体在加速过程中作用在物体上的力,比如晃动、跌落、上升、下降等各种移动变化都能被G-sensor转化为电信号

加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值