秋过冬漫长

没有比脚更长的路,走过去,前面是个天!


  • 首页

  • 归档

  • 标签

  • 搜索

Android下的Linux

发表于 2017-05-01 | 分类于 android |

1. Android目录结构

android

  • data

    • app:用户安装的应用
    • data:应用的专属文件夹
    • system:系统的配置信息,注册表文件
    • anr:anr异常的记录信息
  • dev:devices的缩写

    • 存放设备所对应的文件
  • mnt:mount的缩写

    • 挂载在系统上的设备:sdcard,u盘
  • proc:硬件配置,状态信息

    • cpuinfo、meminfo
  • sbin:system bin

    • 系统重要的二进制执行文件
    • adbd:服务器的adb进程
  • system:

    • app:存放系统应用,默认不能删除
    • bin:Android中可执行的linux指令文件
    • etc:host:主机名和ip地址的映射
    • fonts:Android中自带的字体
    • framework:存放谷歌提供的java api
    • lib:核心功能的类库,C/C++文件
    • media/audio:存放Android的音效文件
    • tts:语音发声引擎,默认不支持中文
    • usr:用户设备的配置信息,键盘编码和按键编码的映射
    • xbin:是专为开发人员准备的二进制指令
阅读全文 »

Linux常用指令

发表于 2017-05-01 | 分类于 android |

Linux常用指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
1. 查看目录下有什么文件/目录
> ls //list列出目录的文件信息
> ls -l 或ll //list -list以“详细信息”查看目录文件
> ls -a //list -all查看目录“全部”(包括隐藏文件)文件
> ls -al //list -all list 查看目录“全部”(包括隐藏文件)文件,以“详细信息”展示
> ls 目录 //查看指定目录下有什么文件
> ls -i //查看文件索引号码
2. 进行目录切换
> cd dirname //进行目录切换
> cd .. //向上级目录切换
> cd ~ 或 cd //直接切换到当前用户对应的家目录
3. 查看完整的操作位置
> pwd
4. 用户切换
> su - 或 su - root //向root用户切换
> exit //退回到原用户
> su 用户名 //普通用户切换
多次使用su指令,会造成用户的“叠加”:
(su和exit最好匹配使用)
jinnan--->root--->jinnan--->root--->jinnan
5. 查看当前用户是谁
> whoami
6. 图形界面 与 命令界面 切换
root用户可以切换
># init 3
># init 5
7. 查看一个指令对应的执行程序文件在哪
> which 指令
8. 目录相关操作
1) 创建目录 make directory
> mkdir 目录名字
> mkdir -p newdir/newdir/newdir //递归方式创建多个连续目录
//新的多级目录数目如果大于等于2个,就要使用-p参数
mkdir dir/newdir //不用-p参数
mkdir -p dir/newdir/newdir //使用-p参数
mkdir -p newdir/newdir/newdir //使用-p参数
2) 移动目录(文件和目录) move
> mv dir1 dir2 //把dir1移动到dir2目录下
> mv dir1/dir2 dir3 //把dir2移动到dir3目录下
> mv dir1/dir2 dir3/dir4 //把dir2移动到dir4目录下
> mv dir1/dir2 ./ //把dir2移动到当前目录下
3) 改名字 (文件和目录)
> mv dir1 newdir //修改dir1的名字为newdir
mv是“移动” 和 “改名字” 合并的指令
> mv dir1 ./newdir //dir1移动到当前目录下 并改名字为newdir
> mv dir1/dir2 dir3 //dir2移动到dir3目录下, 并改名字为“原名”
> mv dir1/dir2 dir3/newdir //dir2移动到dir3目录下,并改名字为“newdir”
> mv dir1/dir2 dir3/dir4 //dir2移动到dir4目录下, 并改名字为“原名”
> mv dir1/dir2 dir3/dir4/newdir //dir2移动到dir4目录下, 并改名字为“newdir”
4) 复制(改名字)(文件和目录) copy
① 文件的复制
> cp file1 dir/newfile2 //file1被复制一份到dir目录下,并改名字为“newfile2”
> cp file1 dir //file1被复制一份到dir目录下,并改名字为“原名”
> cp dir1/filea dir2/newfile //filea被复制一份到dir2目录下,并改名字为“newfile”
② 目录的复制(需要设置-r[recursive递归]参数,无视目录的层次)
> cp -r dir1 dir2 //dir1被复制到dir2目录下,并改名字为"原名"
> cp -r dir1/dir2 dir3/newdir //dir2被复制到dir3目录下,并改名字为"newdir"
> cp -r dir1/dir2 dir3/dir4 //dir2被复制到dir4目录下,并改名字为"原名"
> cp -r dir1/dir2 dir3/dir4/newdir //dir2被复制到dir4目录下,并改名字为"newdir"
> cp -r dir1 ../../newdir //dir1被复制到上两级目录下,并改名字为"newdir"
⑤ 删除(文件和目录)remove
> rm 文件
> rm -r 目录 //-r[recursive递归]递归方式删除目录
> rm -rf 文件/目录 //-r force 递归强制方式删除文件
force强制,不需要额外的提示
rm -rf /
9. 文件操作
1) 查看文件内容
cat filename //打印文件内容到输出终端
more filename //通过敲回车方式逐行查看文件的各个行内容
//默认从第一行开始查看
//不支持回看
//q 退出查看
less //通过“上下左右”键查看文件的各个部分内容
//支持回看
//q 退出查看
head -n filename //查看文件的前n行内容
tail -n filename //查看文件的最末尾n行内容
wc filename //查看文件的行数
2) 创建文件
> touch dir1/filename
> touch filename
3) 给文件追加内容
> echo 内容 > 文件名称 //把“内容”以[覆盖写]方式追加给“文件”
> echo 内容 >> 文件名称 //把“内容”以[追加]形式写给“文件”
(如果文件不存在会创建文件)
10. 用户操作
配置文件:/etc/passwd
1) 创建用户 user add
># useradd
># useradd liming //创建liming用户,同时会创建一个同名的组出来
># useradd -g 组别编号 username //把用户的组别设置好,避免创建同名的组出来
># useradd -g 组编号 -u 用户编号 -d 家目录 username
2) 修改用户 user modify
># usermod -g 组编号 -u 用户编号 -d 家目录 -l 新名字 username
(修改家目录时需要手动创建之)
3) 删除用户 user delete
># userdel username
># userdel -r username //删除用户同时删除其家目录
4) 给用户设置密码,使其登录系统
> passwd 用户名
11. 组别操作
配置文件: /etc/group
1) 创建组 group add
># groupadd music
># groupadd movie
># groupadd php
2) 修改组 group modify
># groupmod -g gid -n 新名字 groupname
3) 删除组 group delete
># groupdel groupname //组下边如果有用户存在,就禁止删除
12. 查看指令可设置的参数
> man 指令
13. 给文件设置权限
1) 字母相对方式设置权限
// 针对一个组别设置权限,其他组别权限没有变化,称为“相对方式”权限设置
chmod指令
chmod u+rwx filename //给filename文件的主人增加“读、写、执行”权限
chmod g-rx filename //给filename文件的同组用户 删除“读、执行”权限
chmod u+/-rwx,g+/-rwx,o+/-rwx filename
说明:
① 每个单元"+" "-"只能使用一个
② 可以同时给一个组或多个组设置权限,组别之间使用","分割
③ 每个单元的权限可以是"rwx"中的一个或多个
>chmod u+w,g-rx,o+rw filename //给filename文件主人增加写权限,同组删除读、执行权限,其他组增加读、写权限
>chmod u+w,u-x filename //给filename文件主人“增加写权限”同时“删除执行权限”
chmod +/-rwx filename //无视具体组别,统一给全部的组设置权限
>chmod +rw filename //给filename全部用户增加“读、写”权限
2) 数字绝对方式设置权限
r读:4 w写:2 x执行:1
0: 没有权限
1:执行
2:写
3:写、执行
4:读
5:读、执行
6:读、写
7:读、写、执行
chmod ABC filename //ABC分别代表主人、同组、其他组用户的数字权限
>chmod 753 filename //主人读、写、执行;同组读、执行;其他组写、执行
问:字母相对 和 数字绝对 方式权限设置取舍?
答:修改的权限相对“比较少”的时候使用“字母”方式
相反,权限变动“非常多”的时候就使用“数字”方式
14. 在文件中查找内容
grep 被搜寻内容 文件
> grep hello passwd //在passwd文件中搜索hello内容
//会把hello所在行的内容都打印到终端显示
15. 计算文件占据磁盘空间大小
> du -h 文件(目录)
16. 文件查找
find 查找目录 选项 选项值 选项 选项值 ...
1) -name选项 根据名字进行查找
> find / -name passwd[完整名称] //"递归遍历"系统全部目录,寻找名称等于"passwd"的文件
> find / -name "pas*"[模糊查找] //在系统全部目录,模糊查找一个名字是“pas”开始的文件
> find / -name "*er*" //文件名字有出现“er”字样即可,不要位置
2) 限制查找的目录层次 -maxdepth -mindepth
-maxdepth 限制查找的最深目录
-mindepth 限制查找的最浅目录
> find / -maxdepth 4 -name passwd
> find / -maxdepth 4 -mindepth 3 -name passwd
3) 根据大小为条件进行文件查找
-size +/-数字
+号表示大小大于某个范围
-号表示大小小于某个范围
大小单位:
-size 5 //单位是“512字节” 5*512字节
-size 10c //单位是“字节” 10字节
-size 3k //单位是“千字节” 3*1024字节
-size 6M //单位是“1024*千字节” 6M兆字节
> find ./ -size 14c //在当前目录查找大小等于14字节的文件
> find / -size +50M //在系统全部目录里边查找大小大于50M的文件
阅读全文 »

JNI与底层调用2

发表于 2017-05-01 | 分类于 android |

JNI与底层调用1:http://blog.csdn.net/axi295309066/article/details/60758515
JNI与底层调用2:http://blog.csdn.net/axi295309066/article/details/60778076
C/C++在Android开发中的应用:http://blog.csdn.net/axi295309066/article/details/60954771

1. 掌握如何使用广播接收者拦截电话和短信

在日常生活中,当手机丢失后,我们可以启动一系列的措施来获取丢失手机的位置信息,或者清楚丢失手机的数据来防止隐私数据泄露,本章就针对这些防盗保护措施进行讲解。

阅读全文 »

JNI与底层调用1

发表于 2017-05-01 | 分类于 android |

1. JNI 简介

1.1 什么是JNI

Java Native Interface(JNI),它允许Java 代码和其他语言写的代码进行交互。JNI 一开始是为了本地已编译语言,尤其是C 和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。

Java Native Interface,java本地接口,Native本地,当前系统用什么语言开发的那么 这种语言对于这个系统而言就是本地语言,android底层是linux linux是c/c++开发的 所以对于android来说 c/c++就是本地语言。JNI 可以看做是一个翻译 实现JAVA语言和本地语言之间的相互调用

1.2 为什么用JNI

  • JNI 扩展了Java 虚拟机的能力,因为Java 不能直接和硬件交互, 不能开发驱动
  • Java 代码效率一般要低于C 代码,而Native code 效率高,因此在数学运算,实时渲染的游戏上以及
    音视频处理上都需要用Java 调用C 语言
  • 复用C/C++代码,C 语言经过几十年的发展,已经形成了强大的类库(比如文件压缩,人脸识别opencv,7zip,ffmpeg 等),这些类库我们没必要用java 语言重新实现一遍,通过JNI 直接调用这些类库即可
  • 特殊的业务场景,比如电视、车载系统、微波炉等跟硬件直接相关的开发
  • java代码 不可以直接操作硬件 硬件的驱动基本都是C代码写的 如果想操作硬件必须得让java代码可以调用C,这个时候JNI就发挥作用了 可以扩展JAVA代码的性能
  • java代码安全性比较差 java->,class->. C安全性相对高一些 C编译之后直接生成机器码 机器码可以反汇编 汇编代码可以猜出C的源代码 伪代码 有些时候跟源代码有区别 比如登录先关 跟钱打交道的应用 可以通过JNI把加密的业务逻辑放到C里面实现
  • Java特点 跨平台 一处编译到处运行 通过虚拟机来实现的 java是解释型语言 效率相对比较低在要求效率的地方 java性能会差一些 大型3d游戏 c/c++ 音视频解码 JNI可以提升java的效率 复式投注 需要效率的时候可以通过JNI来调用C/C++来实现
  • c1972年 c++ java 1995年 ffmpeg音视频解码 opencv 图像处理 人脸识别 使用JNI可以让java代码调用 c/c++写的优秀开源项目,学习JNI目的是满足自己项目的需求
阅读全文 »

C和C++在Android开发中的应用

发表于 2017-05-01 | 分类于 android |

1. 前言

1.1 Android SDK介绍

Android是基于Linux内核的一个手机操作系统,谷歌提供了开发包(Android SDK),程序员可以通过开发包开发Android App(应用程序)。Android SDK提供Java语言接口,因此Android应用是使用Java开发的。

1.2 使用纯Java开发App的缺点

在某些场合下,使用纯Java开发Android应用程序不完美,比如:

  • 有高性能算法,Java语言无法满足
  • 有跨平台需求,希望将App移植到iOS
  • 已有代码的重用

1.3 引入NDK

早在Android 1.6(2009年)时,google就提供了NDK(native development kit),NDK包括了一套Android的交叉编译环境和开发库,利用它可以编写C/C++程序,并编译成Android环境下使用的动态库,Java代码通过Jni规范,调用C/C++写的动态库。

目前最新的Android Studio 2.2中,集成了C/C++开发环境,开发人员在使用C/C++更加简单了。

阅读全文 »
1…789…17
JackChan

JackChan

生活不止眼前的苟且,还有诗和远方!

84 日志
11 分类
49 标签
GitHub GitBook 微博 CSDN
友情链接
  • 郭霖
  • 鸿洋
  • 张帅
  • 极客导航
© 2017 JackChan
由 Hexo 强力驱动
主题 - NexT.Pisces