AS的项目结构
https://developer.android.com/studio/projects/index.html
building-cmdline
https://developer.android.com/studio/build/building-cmdline.html Build Your App from the Command Line:命令行编译你的应用
directory
.idea目录必须,其下.name compiler.xml encodings.xml msic.xml(svn基本信息) modules.xml(组件清单)五个文件必须
gradle目录,如果没有,可以从新建项目中拷贝进来,这是必须目录
.gitignore因需选择
build.gradle
gradle.properties
gradlew
gradlew.bat
settings.gradle 此为相当重要的配置,如没有,必须手动根据格式去创建并写入include {module}
组件内:libs src build.gradle proguard-android.txt proguard-rules.pro为必须
当androidstudio项目被破坏SVN环境恢复方法
1.把开.idea/misc.xml增加
<component name="SvnBranchConfigurationManager">
<option name="myConfigurationMap">
<map>
<entry key="$PROJECT_DIR$">
<value>
<SvnBranchConfiguration>
<option name="branchUrls">
<list>
<option value="svn://192.168.210.170/android/hongsanban/branches" />
<option value="svn://192.168.210.170/android/hongsanban/tags" />
</list>
</option>
<option name="trunkUrl" value="svn://192.168.210.170/android/hongsanban/trunk" />
</SvnBranchConfiguration>
</value>
</entry>
</map>
</option>
<option name="mySupportsUserInfoFilter" value="true" />
</component>
resources.arsc
apk包中的resources.arsc是项目中使用的res资源的,其格式是个decoding文件。
项目打包时,先把res构建到 *.ap_里,再构建到apk中的resources.arsc里,可以使用AS直接打开查看它的内部关系。
资源在AndroidProject中的使用方式
java中使用的是R.{type}.{id},都是以 0xXXXXXXXX的值在其中使用。生成的文件,本就是直接使用十六进制,固加固不用处理它。
在xml中使用的都是相应的@drawable... @anim... @layout...等方式。 可以转成使用@ref/0xXXXXXXXX的方式去使用。
因在AS中的无法在资源中使用@ref/0xXXXXXXXX时会报错,也不方便操作,固不可这样弄。
??? 使用resGuard混淆resources时,全出现< include >标签内的引用没变更,但还能正常运行,带研究(20170315)??? --> **猜测**可能同resources.arsc的键值关系有关,可以追踪得到它的真实引用。
对应资源关系
以下不为绝对对应关系,如果项目中缺少某项时,会依次排序减序号值。
Serial
Resources_Types
ID
1
attr
0x7f 01 XXXX
2
drawable
0x7f 02 XXXX
3
mipmap
0x7f 03 XXXX
4
layout
0x7f 04 XXXX
5
anim
0x7f 05 XXXX
6
animator
0x7f 06 XXXX
7
raw
0x7f 07 XXXX
8
string
0x7f 08 XXXX
9
dimen
0x7f 09 XXXX
a
style
0x7f 0a XXXX
b
bool
0x7f 0b XXXX
c
integer
0x7f 0c XXXX
d
color
0x7f 0d XXXX
e
id
0x7f 0e XXXX
f
menu
0x7f 0f XXXX

Name的取值规则
范围(1234567890_abcdefghijklmnopqrstuvwxyz)共37个字符。 1. 首字符:(a-z) 2. 第二个字符起:(1234567890_abcdefghijklmnopqrstuvwxyz)
e.g.: b_ 表示第36个值。 (取值先是一位a-z,再续a+第二位: 26+10=36).但值不一定是连续的,因为存在shrink resource,或无规则设置等原因。
resources.arsc的还原格式
使用andResGuard方式打包时,看到的它的resourcemapping....txt文件的指示。
res path mapping:
res/anim -> res/a
res/animator -> res/b
res/color -> res/c
res/color-v11 -> res/d
res/drawable -> res/e
res/drawable-hdpi-v11 -> res/f
res/drawable-hdpi-v4 -> res/g
res/drawable-ldrtl-hdpi-v4 -> res/h
res/drawable-ldrtl-mdpi-v4 -> res/i
res/drawable-ldrtl-xhdpi-v4 -> res/j
res/drawable-ldrtl-xxhdpi-v4 -> res/k
res/drawable-ldrtl-xxxhdpi-v4 -> res/l
res/drawable-mdpi-v11 -> res/m
res/drawable-mdpi-v4 -> res/n
res/drawable-xhdpi-v11 -> res/o
res/drawable-xhdpi-v4 -> res/p
res/drawable-xxhdpi-v11 -> res/q
res/drawable-xxhdpi-v4 -> res/r
res/drawable-xxxhdpi-v11 -> res/s
res/drawable-xxxhdpi-v4 -> res/t
res/layout -> res/u
res/layout-v17 -> res/v
res/layout-v21 -> res/w
res/menu -> res/x
res/mipmap-hdpi-v4 -> res/mipmap-hdpi-v4
res/mipmap-mdpi-v4 -> res/mipmap-mdpi-v4
res/mipmap-xhdpi-v4 -> res/mipmap-xhdpi-v4
res/mipmap-xxhdpi-v4 -> res/mipmap-xxhdpi-v4
res/raw -> res/y
res id mapping:
{package}.R.attr.absListViewStyle -> {package}.R.attr.a
...
Last updated
Was this helpful?