Linux命令:

  • touch 创建文件

touch framework/base/Android.mk // 创建文件夹

  • mkdir 创建文件夹
  • cat 显示文件所有内容(合并文件)

cat aa文件 bb文件(可以多个) > 合并到的aabb文件

cat framework/base/Android.mk // 查看文件

  • echo // 输出

echo hello world > framework/base/Android.mk //写入文件

export PATH=$PATH:/opt/android-sdk/tools //.bashrc配置环境变量 man echo // 查看echo命令

  • grep [-选项] '搜索内容串' 文件名
-a :将 binary 档案以 text 档案的方式搜寻数据-c :计算找到 '搜寻字符串' 的次数-n    显示匹配行及行号-i    忽略大小写-v    显示不包含匹配文本的所有行(相当于求反)grep    搜索内容串支持正则表达式
  • find 路径 -name 文件名

find ./ -name framework.jar

find -name ".mk" | xargs grep -r "PicoTts" //将find找到的每一个文件的名字用 grep -r来执行一下

  • cp from_path to_path //拷贝文件

cp -r jdk1.7.0_79 /home/pansen/ // 复制

  • mv from_path to_path // 重名名文件(当前目录下)
  • mv from_path to_path // 移动文件
  • tar -cvf test.tar 1.txt 2.txt 3.txt //打包
-c    生成档案文件,创建-v    显示进度-f    指定档案文件名称
  • gzip test.tar //压缩
  • gzip -d //解压缩
  • tar -zcvf test.tar.gz 需要压缩的文件.. //打包压缩(常用)
  • tar -zxvf text.tar.gz //解压缩 -C指定路径 //解压缩的路径
  • zip -r packages.zip packages //压缩
  • less /etc/passwd //查看长文件
  • chmod u+x helloworld //添加可执行权限
  • chmod 755 sub.tar //修改权限
  • pwd // 返回当前目录路径
  • source .bashrc //配置全局变量
  • nautilus . // 打开图形化页面
  • ln -s 源文件 链接文件 软链接
  • ln 源文件 链接文件 硬链接
  • tree
  • ctrl + z //可以将一个正在前台执行的命令放到后台,并且暂停
  • jobs // 查看当前有多少在后台运行的命令
  • fg // 将后台中的命令调至前台继续运行
如果后台有多个命令,可以用fg %jobnumber将选中的命令调出    %jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
  • bg // 将一个在后台暂停的命令,变成继续执行
如果后台有多个命令,可以用bg %jobnumber将选中的命令调出    %jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
  • > // 重定向
  • >> // 追加
  • ^ // 占位符,搜索xx开头的
  • $ // 占位符,搜索xx结尾的
  • * // 表示一个和多个
  • ? // 表示一个
  • [123] // 可有可无
  • \ // 转义
  • | // 管道:一个命令的输出可以通过管道做为另一个命令的输入
  • & // 这个用在一个命令的最后,可以把这个命令放到后台执行
  • cd - // 可进入上一次所在的目录
  • cd ~ // 快速回到home目录
  • -r // 递归
  • -f // 强制
  • gnome-system-monitor //打开系统监视器
  • ps 查看进程

-aux //查看所有进程

  • sudo -s //sudo指临时获取root权限,切换超级管理员
  • su [user_name] //su后面不加用户是默认切到root
  • su – username //是改变为切换到用户的变量

su只能获得root的执行权限,不能获得环境变量 而su -是切换到root并获得root的环境变量及执行权限

  • kill [pid] 杀进程
  • kill -9 [pid] //强制结束
  • shutdown -r now //重启
  • shutdown -h 20:25 //20:25关机
  • shutdown -h +10 //十分钟后关机
  • init 0 //关机
  • init 6 //重启
  • top //查看进程使用情况
  • df //检测磁盘空间
df -a //显示所有文件系统的磁盘使用情况df -m//以2014字节为单位显示df -t 显示指定文件系统的磁盘空间使用情况df -T显示文件系统
  • du检测当前目录占用情况

du -alh 当前文件占用情况

  • who
  • export //查看环境变量
  • Ctrl+Alt+f1-7 远程登录: ssh 用户名@192.168.21.67
  • bg
  • jobs
  • tail -f 8976.log
  • sudo /etc/init.d/networking restart //更新网络配置
  • top -m 10 -d 1 //打印CPU使用情况

编译命令

  • make -j32 > ~/8976.log 2>&1
  • make installclean // 清除out目录下对应修改过的文件
  • make snod //快速打包system.img
  • make update-api //更新API,Api记录在目录frameworks/base/api
  • make otapackage //生成OTA包
  • m //在源码根目录执行编译(编译整个android系统)
  • mm //编译当前路径下所有模块,但不包含依赖
  • mmm [module_path]//编译指定路径下所有模块,但不包含依赖
  • mma //编译当前路径下所有模块,且包含依赖
  • mmma [module_path]//编译指定路径下所有模块,且包含依赖
  • cgrep //cgrep所有C/C++文件执行搜索操作
  • jgrep //所有Java文件执行搜索操作
  • ggrep //所有Gradle文件执行搜索操作
  • mangrep [keyword] //所有AndroidManifest.xml文件执行搜索操作
  • sepgrep [keyword] //所有sepolicy文件执行搜索操作
  • resgrep [keyword] //所有本地res/*.xml文件执行搜索操作
  • sgrep [keyword] //所有资源文件执行搜索操作
  • croot //切换至Android根目录
  • cproj //切换至工程的根目录
  • godir [filename] //跳转到包含某个文件的目录
adb shellfastboot devices//切换到boot.img所在的目录fastboot flash boot boot.imgfastboot flash system system.imgfastboot reboot
Android编译系统Make文件分为三大类:
  • 系统核心的Make文件:定义了Build系统的框架,文件位于路径/build/core,其他Make文件都是基于该框架编写的
  • 针对产品的Make文件:定义了具体某个型号手机的Make文件,文件路径位于/device,该目录下往往又以公司名和产品名划分两个子级目录,比如/device/qcom/msm8976
  • 针对模块的Make文件:系统针对各个独立的模块配置的Make文件,名称统一为”Android.mk”,该文件定义了当前模块的编译方式.Build系统会扫描整个源码树中名为”Android.mk”的文件,并执行相应模块的编译工作

编译产物:

  • /out/host:Android开发工具的产物,包含SDK各种工具,比如adb、dex2oat、aapt等
  • /out/target/common:通用的一些编译产物,包含Java应用代码和Java库
  • /out/target/product/[product_name]:针对特定设备的编译产物以及平台相关C/C++代码和二进制文件
product目录中:system.img:挂载为根分区,主要包含AndroidOS的系统文件ramdisk.img:主要包含init.rc文件和配置文件等userdata.img:被挂载在/data,主要包含用户以及应用程序相关的数据

刷机:

cd build ./CopyImg.sh qucii3903acopy OUT Qucii_8939_50_qucii3903Flat Build  ->>  prog_emmc_firehose_8936.mbn  ->>  rawprogram_unsparse.xml  ->>  patch0.xmladb reboot edl编辑 art/build/Android.common_build.mk 文件找到第75行将 ifneq ($(WITHOUT_HOST_CLANG),true)修改为 ifeq ($(WITHOUT_HOST_CLANG),false)acopy OUT +文件名    //拷贝到windowsacopy IN /home/pansen/ +文件名    //拷贝到Ubuntuubuntu和windows之间复制粘贴:autocutsel -f VNC: 172.0.0.216:27    147258echo 6 > /sys/class/ktd20xx/ktd2026/led    //向对应节点写值6 cat /sys/class/ktd20xx/ktd2026/led        //查看对应节点的值/home/pansen/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml    //修改快捷键

VIM命令:

  • q! // 强制退出编辑器
  • :set number // 显示行号
  • :5 // 跳到第五行
  • vim text.py +5 // 打开test文件并跳到第五行
  • v // 进入预览模式
  • d // 剪切
  • dd // 剪切一行
  • 3dd // 剪切三行
  • y // 复制
  • yy // 复制一行
  • 3yy // 复制三行
  • p // 粘贴
  • u // 撤销上一个编辑操作
  • Ctrl+r // 恢复,即回退前一个命令
  • / // 向下查找
  • ? // 向上查找

n // 跳转下一个匹配

N // 跳转上一个匹配

导入源码到AS:

1. mmm development/tools/idegen/全局编译,然后编译idegen这个模块项目,然后生成idegen.jar文件1.2 如果源码没有编译,需要把idegen.jar copy到out/host/linux-x86/framework/目录下2. 运行development/tools/idegen/idegen.sh在根目录生成对应的android.ipr、android.iml IEDA工程配置文件(修改android.iml文件去掉不要的代码再导入)可以仿照上面这段代码的"file://$MODULE_DIR$/.repo"/>写法一样过滤掉不需要的内容,这样在导入时就会快很多3. 打开Android Studio,打开源码根目录下的android.ipr文件,等待...按住CTRL+鼠标左键跳转到Intent类你会发现跳转过去的是一个Intent.class文件,所以我们需要配置让其能跳转到Intent.java文件>>打开Module,删掉android依赖中的所有依赖,只保留<Module source>和Android API 23 Platform->>点击加号的JARs or directories将你源码的frameworks(base)及external和你用到的其他跳转目录添加到依赖中,然后apply即可(<Module source>移到最下)编译lunch选择一个Target(定义在/device/qcom/目录下),eng版target下编译只能生成apk,不会对该apk文件优化(将apk文件中的classes.dex单独提取,并将classes.dex生成经过优化的odex文件),user版target有定义WITH_DEXPREOPT := true,不过生成的apk和odex是不能push到/system/app目录,Android系统无法识别带有odex文件的apk,因为apk和odex都需要对Android系统其他library进行校验,由于library与通过Android源码生成的library不同,所以apk和odex不能通过验证;只有使用Android源代码生成的system.img文件刷机,或者替换相应的library才可以使用带有odex的apk程序.

JACK编译器三种模式:

LOCAL_JACK_ENABLED=$(DEFAULT_JACK_ENABLED) disabled: 是指关闭JACK编译,使用android old toolchainfull: 是指全部编译,即每次编译,都会将所有的code全部编译。incremental: 是指增量编译,即只会编译修改的代码。incremental模式默认是关闭的,需要设置(Incremental compilation is deactivated when shrinking, obfuscation, repackaging or multi-dex legacy is enabled.)在单独模块的Android.mk中设置LOCAL_JACK_ENABLED为disabled, full, incremental可配置JACK编译的模式配置默认JACK编译在/build/core/combo/javac.mk中ifndef ANDROID_COMPILE_WITH_JACK# Defines if compilation with jack is enabled by default.ANDROID_COMPILE_WITH_JACK := true把ANDROID_COMPILE_WITH_JACK改为false取消默认JACK编译./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar./jack-admin start-server./jack-admin list-server修改$HOME/.jack-settings和 $HOME/.jack-server/config.properties 端口号

更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. 如何在后台运行Linux命令?
  3. 一款常用的 Squid 日志分析工具
  4. No.11 使用firewall配置的防火墙策略的生效模式
  5. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  6. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  7. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  8. 如何快速修改/更换android应用的包名
  9. android gallery和Animation组合使用, 看美女美图

随机推荐

  1. android中httpclient和HttpURLConnection
  2. Android(安卓)界面适配笔记
  3. Android(安卓)Studio导入Fresco项目编译
  4. Android日常开发(24)[ERROR:ssl_client_soc
  5. 梳理Android的IPC进程间通信(最新Android
  6. Android(安卓)Adapter总结
  7. android 屏幕录像
  8. 全局获取Context的技巧(再也不要为获取Con
  9. Android:onNewIntent的使用
  10. android获取单个通讯录联系人信息并分享