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中的使用方式

  1. java中使用的是R.{type}.{id},都是以 0xXXXXXXXX的值在其中使用。生成的文件,本就是直接使用十六进制,固加固不用处理它。

  2. 在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

resources.arsc

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?