Ⅰ android中aapt工具通过什么机制/算法生成R.java
资源ID是一个4字节的无符号整数,其中,最高字节表示Package ID,次高字节表示Type ID,最低两字节表示Entry ID。
Package ID相当于是一个命名空间,限定资源的来源。Android系统当前定义了两个资源命令空间,其中一个系统资源命令空间,它的Package ID等于0x01,另外一个是应用程序资源命令空间,它的Package ID等于0x7f。所有位于[0x01, 0x7f]之间的Package ID都是合法的,而在这个范围之外的都是非法的Package ID。前面提到的系统资源包package-export.apk的Package ID就等于0x01,而我们在应用程序中定义的资源的Package ID的值都等于0x7f,这一点可以通过生成的R.java文件来验证。
Type ID是指资源的类型ID。资源的类型有animator、anim、color、drawable、layout、menu、raw、string和xml等等若干种,每一种都会被赋予一个ID。
Entry ID是指每一个资源在其所属的资源类型中所出现的次序。注意,不同类型的资源的Entry ID有可能是相同的,但是由于它们的类型不同,我们仍然可以通过其资源ID来区别开来。
Ⅱ aapt不是内部或者外部命令,也不是可运行的程序或批处理文件
aapt不是内部或者外部命令,也不是可运行的程序或批处理文件是因为没有设置环境变量的缘故。解决步骤如下:
1、首先第一步就是要进行鼠标右键点击计算机或我的电脑,然后进行点击选择“属性”即可。
Ⅲ 输入"aapt mp badging"时,命令提示错误"no mp file specified"
说得很明白啊,翻译过来,“错误:没有指定转储文件”。这个命令没打完,后面还需要一个文件路径
Ⅳ 请问aapt 用什么指令能查看下面这些权限(HTMLViewer.apk)
aapt.exempbadgingHTMLViewer.apk
Ⅳ android中的aapt命令,aapt add xxx.apk xxx.dex ,如果apk和dex 不同一个目录,该怎么写呢
绝对路径
Ⅵ 怎样获取应用的包名和类名及解析aapt
原理:
通过查看AndroidManifest.xml
方法:
可以通过如下方法获得:
1.aapt
aapt mp xmltree apk路径 AndroidManifest.xml > 输入的路径
2.apktool 反编译
apktool d -f apk路径 输出的路径
3.monkey---Android自带的工具
adb shell monkey --port 1080 -v -v
aapt即 Android Asset Packaging Tool
该工具在SDK/tools目录下,如果你没有设置环境变量,那需要进入该目录下才能运行aapt命令,如果设置了环境变量则可以在任何目录下运行aapt命令了。
1、列出压缩文件目录
aapt l[ist] [-v] [-a] file.{zip,jar,apk}
参数:
-v:会以table的形式输出目录,table的表目有:Length、Method、Size、Ratio、Date、Time、CRC-32、Name。其中Method表示压缩形式,有Deflate和Stored两种,即该Zip目录采用的算法是压缩模式还是存储模式;Ratio表示压缩率。
-a:会详细输出所有目录的内容。
2、查看APK的相关信息
aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
badging Print the label and icon for the app declared in APK.
permissions Print the permissions from the APK.
resources Print the resource table from the APK.
configurations Print the configurations in the APK.
xmltree Print the compiled xmls in the given assets.
xmlstrings Print the strings of the given compiled xml assets.
1)、查看APK包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息
aapt mp badging < file.apk>
2)、查看权限
aapt mp permissions <file.apk>
3)、查看资源列表
aapt mp resources <file.apk>
把查看信息保存到文件中去可以使用:
aapt mp resources <file_path.apk> > sodino.txt
4)、查看APK配置信息
aapt mp configurations <file_path.apk>
5)、查看指定APK的指定XML文件
aapt mp xmltree <file_path.apk> res/***.xml
以树形结构输出的xml信息。
aapt mp xmlstrings <file_path.apk> res/***.xml
输出xml文件中所有的字符串信息。
3、编译android资源
aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \
[--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \
[--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \
[--rename-manifest-package PACKAGE] \
[--rename-instrumentation-target-package PACKAGE] \
[--utf16] [--auto-add-overlay] \
[--max-res-version VAL] \
[-I base-package [-I base-package ...]] \
[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file
\
[-S resource-sources [-S resource-sources ...]] \
[-F apk-file] [-J R-file-dir] \
[--proct proct1,proct2,...] \
[-c CONFIGS] [--preferred-configurations CONFIGS] \
[-o] \
[raw-files-dir [raw-files-dir] ...]
Package the android resources. It will read assets and resources that are
supplied with the -M -A -S or raw-files-dir arguments. The -J -P -F and -R
options control which files are output.
部分参数解释:
-f:如果编译出来的文件已经存在,强制覆盖;
-m:使生成的包的目录放在-J参数指定的目录;
-J:指定生成的R.Java的输出目录;
-S:res文件夹路径;
-A:assert文件夹的路径;
-M:AndroidManifest.xml的路径;
-l:某个版本平台的android.jar的路径;
-F:具体指定APK文件的输出
1)、将工程的资源编译出R.java文件
aapt package –m –J <R.java目录> -S <res目录> -l <android.jar目录> -M
<AndroidManifest.xml目录>
2)、将工程的资源编译到一个包里
aapt package –f –S <res目录> -l <android.jar目录> -A <assert目录> -M
<AndroidManifest.xml目录> -F <输出的包目录>
4、打包好的APK中移除文件
aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]
5、添加文件到打包好的APK中
aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
6、显示aapt的版本
aapt v[ersion]
Ⅶ 如何使用aapt替换apk里面的asset文件夹
实际开发中经常遇到这样的需求:一个应用打不同的包时,不同的包 的logo、 应用名,或者应用中的某些标志性的图片、显示的文字内容、欢迎语什么的都要做出相应的改变。 对此,我们不可能将原工程复制出来再重新建立一个工程
实际开发中经常遇到这样的需求:一个应用打不同的包时,不同的包 的logo、 应用名,或者应用中的某些标志性的图片、显示的文字内容、欢迎语什么的都要做出相应的改变。 对此,我们不可能将原工程复制出来再重新建立一个工程,然后替换成不同的资源再打包。 那么本文为读者提供一种相对简便的方法,有这种需求的友友就可以接着看下去了...
编译时合并与替换资源,主要用到aapt命令工具:
先看一下aapt命令 跟不同参数时的作用:
命令行界面切换到 aapt 命令所在目录,输入aapt 如下:
\
\
可以看出, -s 可以指定寻找资源的目录,而 overlay 可以合并资源:
比如 ,工程中原有的res 里面有个字符串 :app_name(Menifest.xml中配置的应用名)
九秀美女直播string>,
在工程中新建两个资源文件夹res2和res3,里面分别有两个字符串: app_name,more
//res2
9秀直播string>
更多2string>,
//res3
MM直播string>
更多3string>,
并在build.grandle里配置如下
aaptOptions { additionalParameters '-S', 'G:/wkplace/AS/NineShow3.0/res2', '-S', 'G:/wkplace/AS/NineShow3.0/res3', '--auto-add-overlay' noCompress 'foo', 'bar' ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:
_*:!CVS:!thumbs.db:!picasa.ini:!*~' }
运行后,应用名会显示res里的app_name:“九秀美女直播”。这是因为: -s 可以指定多个资源目录,我们通
Ⅷ 如何在Linux下用命令行运行aapt工具
把android命令行工具所在的路径添加到p...
1
我们在eclipse中新建一个android项目,...
2
(1)生成R文件。在命令行输入:aapt p...
3
(2)生成class文件。在命令行输入
Ⅸ win7 aapt命令怎么使用
楼主是要做安卓开发?如果不是一下内容可以忽略。
1.列出apk包的内容
aaptl[ist][-v][-a]file.{zip,jar,apk}
-v以table形式列出来
-a详细列出内容
例如:aaptl<你的apk文件>,这个命令就是查看apk内容2.查看apk一些信息
aaptd[ump][--values]WHATfile.{apk}[asset[asset...]]
.
.
.
.
.
例如:aaptdpermissions<apk文件>,这个就是显示这个apk所具有的权限
3.编译android资源
aaptp[ackage][-d][-f][-m][-u][-v][-x][-z][-MAndroidManifest.xml]/
[-0extension[-0extension...]][-gtolerance][-jjarfile]/
[--debug-mode][--min-sdk-versionVAL][--target-sdk-versionVAL]/
[--app-versionVAL][--app-version-nameTEXT][--custom-packageVAL]/
[--rename-manifest-packagePACKAGE]/
[--rename-instrumentation-target-packagePACKAGE]/
[--utf16][--auto-add-overlay]/
[--max-res-versionVAL]/
[-Ibase-package[-Ibase-package...]]/
[-Aasset-source-dir][-Gclass-list-file][-Ppublic-definitions-file]/
[-Sresource-sources[-Sresource-sources...]][-Fapk-file][-JR-file-dir]/
[--proctproct1,proct2,...]/
[raw-files-dir[raw-files-dir]...]
这个比较复杂,只解释几个关键参数。
-f如果编译出来的文件已经存在,强制覆盖。
-m使生成的包的目录放在-J参数指定的目录。
-J指定生成的R.java的输出目录
-Sres文件夹路径
-Aassert文件夹的路径
-MAndroidManifest.xml的路径
-I某个版本平台的android.jar的路径
-F具体指定apk文件的输出
例如:
1).将工程的资源编译R.java文件
aaptpackage-m-J<R.java目录>-S<res目录>-I<android.jar目录>-M<AndroidManifest.xml目录>
2).将工程的资源编译编译到一个包里
aaptpackage-f-S<res目录>-I<android.jar目录>-A<assert目录>-M<AndroidManifest.xml目录>-F<输出的包目录>
4.打包好的apk中移除文件
aaptr[emove][-v]file.{zip,jar,apk}file1[file2...]
例如:aaptr<你的apk文件>AndroidManifest.xml,这个就是将apk中的AndroidManifest移除掉
5.添加文件到打包好的apk中
aapta[dd][-v]file.{zip,jar,apk}file1[file2...]
例如:aapta<你的apk文件><要添加的文件路径>,这个就是将文件添加到打包好的apk文件中
6.显示aapt的版本
aaptv[ersion]
例如:aaptv,就是打印这个结果AndroidAssetPackagingTool,v0.2
此外,可以通过在命令行中输入:aapt help,获取更多详细解释