在安卓开发过程中,应用打包是必不可少的一部分。无论是开发者还是测试人员,都需要掌握应用打包的方法,以便在应用发布的时候能够正确地进行操作。而其中一个重要的工具就是aapt命令,一个在Linux系统下的android应用打包工具。本文将介绍aapt命令的详细用法和作用,以及如何使用aapt命令来打包应用程序。
一、aapt命令的介绍
aapt命令是Android应用打包工具中的一个命令,全称为Android Asset Packaging Tool,即安卓资源打包工具。它可以解决应用程序的资源文件、类包、应用图标等打包时需要的工作,将多个文件打包成一个可执行的APK文件,使得安卓开发者可以更方便地打包和发布自己的应用程序。
aapt命令在Linux系统下可以使用,同时也支持Windows系统和Mac系统。但是,本文主要介绍aapt在Linux系统下的使用方法。
二、aapt命令的作用
aapt命令可以完成以下几项功能:
1. 打包资源:将应用的资源文件打包成一个整体,方便应用发布和传输。
2. 解析已有的APK文件:aapt可以解析已有的APK文件,并从中提取出资源文件、应用图标等信息。
3. 生成R.java文件:在应用开发过程中,aapt命令可以生成R.java文件,此文件用来存放应用代码中的资源ID,方便应用程序的资源文件与代码文件关联。
4. 生成APK文件:aapt命令可以将应用程序的资源文件、类包等打包成APK文件,以便上传到Google Play等应用市场。
三、aapt命令的详细用法
下面我们来介绍aapt命令的详细使用方法。
1. 打印应用程序信息
执行以下命令可以打印应用程序的信息:
aapt dump badging
例如:
aapt dump badging HelloWorld.apk
输出如下:
package: name=’com.example.myapplication’ VersionCode=’1′ versionName=’1.0′ platformBuildVersionName=’7.1.1 NMF26F’
uses-permission: name=’android.permission.INTERNET’
application-label:’My Application’
application-icon-120:’res/drawable-ldpi-v4/ic_launcher.png’
application-icon-160:’res/drawable-mdpi-v4/ic_launcher.png’
application-icon-240:’res/drawable-hdpi-v4/ic_launcher.png’
application-icon-320:’res/drawable-xhdpi-v4/ic_launcher.png’
application: label=’My Application’ icon=’res/drawable-mdpi-v4/ic_launcher.png’
2. 打印应用程序的资源
执行以下命令可以打印应用程序的资源:
例如:
aapt list HelloWorld.apk
输出如下:
res/drawable-mdpi-v4/ic_launcher.png
res/drawable-hdpi-v4/ic_launcher.png
res/drawable-xhdpi-v4/ic_launcher.png
res/drawable-ldpi-v4/ic_launcher.png
res/layout/activity_mn.xml
res/menu/mn.xml
res/values/strings.xml
res/drawable-mdpi-v4/bg_mn_activity.xml
res/layout/mn.xml
res/xml/preferences.xml
3. 打印应用程序的xml文件
执行以下命令可以打印应用程序的xml文件:
aapt dump xmltree
例如:
aapt dump xmltree HelloWorld.apk res/layout/activity_mn.xml
将输出activity_mn.xml文件内容。
4. 生成R.java文件
执行以下命令可以生成R.java文件:
aapt package -f -m -J -S -I
例如:
aapt package -f -m -J gen -S res -I $ANDROID_HOME/platforms/android-27/android.jar
其中,-f表示强制更新,-m表示按照manifest文件进行处理,-J表示输出目录,-S表示资源目录,-I表示android.jar路径。

5. 打包APK文件
执行以下命令可以打包APK文件:
aapt package -f -m -F -M -S -I
例如:
aapt package -f -m -F MyApplication.apk -M AndroidManifest.xml -S res -I $ANDROID_HOME/platforms/android-27/android.jar
其中,-f表示强制更新,-m表示按照manifest文件进行处理,-F表示输出APK文件名,-M表示AndroidManifest.xml的路径,-S表示资源文件目录,-I表示android.jar的路径。
四、结语
相关问题拓展阅读:
Linux命令的命令
tar与gzip
tar命令
tar 文件与目录….
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
–exclude FILE:在压缩的过程中,不要将 FILE 打包!
查看包文件的内容
#tar -tf 文件名.tar
向已有的包中添加新文件
释放包文件#tar -xvf 文件名.tar
gz压缩文件#gzip 文件名
解压缩文件
#gzip -d 文件名.gz 或#gunzip 文件名.gz
创建压缩包
查看压缩包中的内容
#tar -ztf 文件名.tar.gz
释放压缩包
#tar -zxvf 文件名.tar.gz
mount,umount
mount是Linux下的一个命令,它可以将分区作为Linux的一个“文件”挂接到Linux的一个空文件夹下,从而将分区和/mnt这个目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。目前mount已经不仅仅局限于Linux了,在Windows系统下的应用也越来越广了,多用在虚拟光驱类软件上,比如Clone CD,Daemon tool,WinMount等。
注意事项
1、必须将光盘、U盘等放入驱动器在实施挂载操作
2、不能在挂载目录下实施挂载操作,至少在上一级
3、不能在同一目录下挂载两个以上的文件系统
4、Linux预留挂载目录为/mnt
5、不能在挂载目录下实施卸载操作
6、挂载目录必须事先存在
挂载光盘
#mount -t iso9660 /dev/cdrom /mnt/cdrom
卸载光盘
#umount /mnt/cdrom或#umount /dev/cdrom或#cd;eject
挂载U盘
#mount /dev/sdb1 /mnt/u
挂载iso镜像
#mount -t iso9660 -o loop iso镜像文件/mnt/cdrom
基础命令
* LINUX图形界面和命令行界面的切换进入Ubuntu桌面环境后,可以使用键盘上的“Ctrl+Alt+F1~F6“组合键来切换不同的tty界面,Linux默认提供了6个命令行界面(F1-F6),比如”Ctrl+Alt+F1″就是切换到tty1:1 /*最上面显示的是Ubuntu的版本计算机名称和tty号*/2 Ubuntu 12.04.1 LTS qingsword tty14 /*输入用户名和密码即可登录tty1*/5 qingsword login: root6 Password:在命令行模式下,想要切换回图形界面可以使用组合键”Ctrl+Alt+F7“。另外,如果不携绝是从图形界面切换到tty模式,而是系统启动时候直接进入的命数隐信令行模式,在登陆后可以使用”startx”来启动图形界面。PS:在图形界面下使用”Ctrl+Alt+T“可以快速启动Linux的命令行终端。
* 列出目录中的文件(LS)在Linux命令行终端中使用的最多的命令就是这个ls,它可以帮助我们列出当前目录下都有哪些文件,下面是一些实例:1 /*2 * 使用pwd,查看当前是在哪个目录中,3 * 显示为“/home/qingsword”,这就是当前命令行所在的目录。4 */5 $ pwd6 /home/qingsword8 /*切换到根目录*/9 $ cd /11 /*验证一下,确实在根目录下了*/12 $ pwd13 /15 /*查看根目录下面都有哪些文件和文件夹*/16 $ ls17 bin dev home lost+found mnt proc in srv tmp var18 boot etc lib media opt root selinux sys usr20 /*可以使用两个ll详细输出,这个命令和ls -l效果相同*/21 $ ll22 totaldr-xr-xr-x. 2 root root 4096 Aug 9 01:21 bin24 dr-xr-xr-x. 5 root root 1024 Aug 8 23:54 boot25 drwxr-xr-x. 18 root root 3820 Aug 8 17:41 dev26 drwxr-xr-x. 88 root root 4096 Dec 24 10:39 etc27 …../*省略部分输出*/…..29 /*详细输出,并且显示隐藏的文件和文件夹,或ls -al*/30 $ ll -a31 totaldr-xr-xr-x. 21 root root 4096 Aug 8 17:39 .33 dr-xr-xr-x. 21 root root 4096 Aug 8 17:39 ..34 -rw-r–r–. 1 root root 0 Aug 8 17:39 .autofsck35 dr-xr-xr-x. 2 root root 4096 Aug 9 01:21 bin36 …../*省略部分输出*/…..上面为ls常见的用法,下面是一些其他用法:1 /*2 * 使用递归模式,显示目录以及下级子目录,3 * 后面的more是当输出超出终端显示范围时,显示一个more,4 * 按任意键可以继续显示下面的内容。5 */6 $ ls -R | more8 /*按时间先后显示*/9 $ ls -t11 /*横排输出,中间用逗号分隔*/12 $ ls -m14 /*按大小排列,先大后小*/15 $ ls -S除此之外ls会显示不同颜色,下面是这些颜色的含义:蓝色—目录绿色—可执行文件红色—压缩文件浅蓝色—链接文件粉红色—图片文件黄色—设备文件灰色—其他文件可以切换到/dev目录下用ls查看一下,会看到大部分为设备文件。* 目录切换(CD)使用cd(Change Directory)命令可以在不同目录之间切换,下面是一些实例:1 /*当前目录是根目录*/2 $ pwd3 /5 /*使用cd切换到/dev这个目录*/6 $ cd /dev$ pwd9 /dev11 /*查看一下当前目录下面的文件*/12 $ ls14 /*这条命令可以用来跳到前一个工作目录,即根目录*/15 $ cd/18 /*跳到当前用户的家目录*/19 $ cd ~20 $ pwd21 /home/qingsword23 /*返回上一层目录*/24 $ cd ..25 $ pwd26 /home* 创建、移动、复制、删除文件的操作可以使用下面的命令来创建一个目录,或者嵌套的目录:1 /*我在当前用户的家目录中,首先创建一个单层目录*/2 $ mkdir qing3 $ ls4 qing6 /*试着创建一个嵌套的目录,提示错误*/7 $ mkdir top/sub/sub28 mkdir: cannot create directory `top/sub/sub2′: No such file or directory10 /*添加-p参数才能创建多层的嵌套目录*/11 $ mkdir -p top/sub/sub212 $ ls13 qing top15 /*16 * 使用递归显示当前目录下面文件,17 * “.”代表当前目录,下面表示这个目录下面的子目录和文件。18 */19 $ ls -R20 .:21 qing top23 /*”qing”这个目录下面是空的,没有其他文件和文件夹*/24 ./qing:26 /*”top”目录下还有个子目录”sub”*/27 ./top:28 sub30 /*sub目录下还有个sub2*/31 ./top/sub:32 sub234 /*sub2下面是空的*/35 ./top/sub/sub2:删除目录或者文件:1 /*强制删除刚才创建的top目录,”rm -rf”后面可以接任何目录或者文件*/2 $ rm -rf top创建文本文件:1 /*使用touch命令可以创建一个空文本文件*/2 $ touch testfile4 /*使用echo命令将hello这几个字符写入这个文件中*/5 $ echo hello>>testfile7 /*使用more命令显示这个文件中的内容*/8 $ more testfile9 hello11 /*追加一行,再次显示*/12 $ echo My name is QingSword>>testfile13 $ more testfile14 hello15 My name is QingSword复制文件或文件夹:1 /*首先创建两个文件夹*/2 $ mkdir dir13 $ mkdir dir24 $ ls5 dir1 dir2 qing testfile7 /*将testfile这个文本文件复制到dir2目录中*/8 $ cp testfile dir29 $ ls dir210 testfile12 /*将dir2目录复制到dir1目录中,复制非空目录要添加参数-r*/13 $ cp -r dir2 dir114 $ ls -R dir115 dir1:16 dir218 dir1/dir2:19 testfile21 /*22 * 复制多个目标到一个文件夹中,23 * 将dir1和dir2这两个文件夹以及testfile这个文本文件,复制到后面的qing文件夹中。24 */25 $ cp -r dir1 dir2 testfile qing移动目录或文件(剪切):1 /*mv可以操作目录和文件,同样可以一次性操作多个目标*/2 $ mv dir1 qing3 $ ls4 dir2 qing testfile6 $ mv testfile dir2 qing7 $ ls8 qing9 $* 重启和关机使用下面的命令重启和关机(这个命令必须使用root用户才能执行):1 /*首先切换到root权限*/2 $ su3 Password:5 /*一分钟后关机*/6 # shutdown -h 18 /*如果是定时关机,可以打开另外一个终端,使用下面这个命令取消关机*/9 # shutdown -c11 /*马上关机*/12 # shutdown -h now14 /*下面这两条命令也是马上关机*/15 # init# poweroff18 /*下面这两条命令都能马上重启*/19 # reboot20 # init 6
–去除重复行
下面的示例演示如何grep的唯一相关的交易,削减不必要的信息,并获得计数。
jfields$ cat order.out.log | grep \(Kindle\|Hardcover\) | cut -d, -f3 | sort | uniq -c
1 Joy of Clojure
2 Patterns of Enterprise Architecture
jfields$ cat order.out.log | grep \(Kindle\|Hardcover\) | cut -d, -f3 | sort | uniq
Joy of Clojure
Patterns of Enterprise Architecture
命令ls
这个命令就相当于dos下的dir命令一样,这也是Linux控制台命令中最为重要几个命令之一。Linux上的文件以“.”开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来。
ls -l(这个参数是字母L的小写,不是数字1)【直接输入ll 等价于 ls -l的效果】
这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。例如我在某个目录下键入ls -l可能会显示如下信息(最上面两行是我自己加的):
位置
drwxGuest users 1024 Nov 21 21:05 Mail
-rwx–x–x 1 root rootNov 7 22:41 tar*
-rwxr-xr-x 1 root bin 5013 Aug 15 9:32 uname*
lrwxrwxrwx 1 root root 4 Nov 24 19:30 zcat->gzip
-rwxr-xr-x 1 root binNov 29 7:43 zsh*
-rwsr-x— 1 root bin 9853 Aug 15 5:46 su*
下面,我为大家解释一下这些显示内容的意义。
之一个栏位,表示文件的属性。Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。但是这里有十个格子可以添(具体程序实现时,实际上是十个bit位)。之一个小格是特殊表示格,表示目录或连结文件等等,d表示目录,例如drwx——;l表示连结文件,如lrwxrwxrwx;如果是以一横“-”表示,则表示这是文件。其余剩下的格子就以每3格为一个单位。因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,其文件的权限位置排列顺序是(以-rwxr-xr-x为例):
rwx(Owner)r-x(Group)r-x(Other)
这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。另外,有一些程序属性的执行部分不是X,而是S,这表示执行这个程序的使用者,临时可以有和拥有者一样权力的身份来执行该程序。一般出现在系统管理之类的指令或程序,让使用者执行时,拥有root身份。
第二个栏位,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是空目录的话,那它的数目就是2,非空目录等于该目录中的目录个数加上2了。
第三个栏位,表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一栏大概都是它的账号名称。
第四个栏位,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。
第五栏位,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,你当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb来显示一个文件的大小单位,不过一般我们还是以byte为主。
第七个栏位,表示文件名。我们可以用ls –a显示隐藏的文件名。
ls –F(注意,是大写的F)
使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。
aapt linux使用命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于aapt linux使用命令,「aapt Linux命令解析」:轻松掌握Android应用打包工具!,linux命令的命令的信息别忘了在本站进行查找喔。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
安卓手机如何打开.so文件?
安卓手机打开文件需要下载Native Libs Monitor这个app,这个应用可以帮助我们理解手机上安装的APK用到了哪些文件,以及文件来源于哪些函数库或者框架。 我们也可以自己对app反编译来获取这些信息。
so文件是手机的一些运行库文件,在系统lib的文件夹下,置换移植其他系统的程序也需要修改更换相关so文件;没有它系统软件不能运行,哪部分损坏就影响相对功能,电话接打,通讯录,相机等等都是要依赖so文件使用的。 so文件需要资深安卓大师更改,一般都是现成的搬运移植,打开它没有什么意义。 安卓手机想要查看文件就需要下载Native Libs Monitor。
so是shared object的缩写,见名思义就是共享的对象,机器可以直接运行的二进制代码。 大到操作系统,小到一个专用软件,都离不开so。 so主要存在于Unix和Linux系统中。 so是与平台相关的二进制机器码,Android应用支持的cpu架构取决于APK中位于lib或jniLib目录中的文件。
由于Android基于Linux Kernl的,也继承了Linux中所有so相关的设计。
除了系统方面的原因,Android开发者还要知道以下几点:
so机制让开发者最大化利用已有的C和C++代码,达到重用的效果,利用软件世界积累了几十年的优秀代码。
so是二进制,没有解释编译的开消,用so实现的功能比纯java实现的功能要快。
so内存分配不受Dalivik/ART的单个应用限制,减少OOM。
操作系统android 4.2+linux和操作系统android 4.2有什么区别
展开全部准确的说 Linux 仅仅是系统内核,而不是整个系统。 而android 4.2 就是手机系统。 一般说的 Linux 系统,主要是基于 Linux 内核而运行的整体系统和软件环境。 所以 Android 也可以算是 Linux 系统的一种。 因为他是基于 Linux 内核上面运行的一个java虚拟机环境。 不过 Android 也有很大的不同就是他的程序都是 JAVA 虚拟机里面跑的,JAVA 的特点就是硬件无关性(当然为了性能 Android 有 NDK 开发包来实现本机的二进制程序开发来提升效率)。 所以 Android 又不算是一种“系统”而更多的是一种特殊的“整机”希望能帮到你
如何在linux下配置aapt环境变量
没看懂什么意思?
发表评论