Android
  • Introduction
  • Android Studio
    • AS的项目结构
    • adb
    • aapt
    • dx
    • Gradle
    • Kotlin on android
  • Smaller
  • decompiler
  • MISC
  • 框架 framework
  • 设计模式
  • dex
  • reinforce加固
  • code
    • Java Tips
      • 负数 negative
      • The Java Tutorials
        • 原始数据类型 Primitive Data Types
      • 运算符
        • 一元运算符
        • 算术运算符
        • 移位运算符
        • 关系运算符
      • 逻辑运算符
        • 逻辑 非 ! 关系值表
        • 逻辑 与 && 关系值表
        • 逻辑 或 || 关系值表
        • 与 & And
        • 或 | Or
        • 非 ~ Nor
        • 异或 ^ Xor
        • 赋值运算符
        • tips
      • == equals
      • Try Catch finally
        • 有意思的东西
      • String、StringBuilder、StringBuffer区别
      • inner classes、nested static classes
    • runtime_memory
    • javaStackTrace
    • Guava
    • FFMPEG
    • GoogleSamples
    • Full Kotlin Reference
    • release屏蔽Log代码
    • Thread
  • ANR
  • 注解改进代码检查
Powered by GitBook
On this page
  • building-cmdline
  • directory
  • 当androidstudio项目被破坏SVN环境恢复方法
  • resources.arsc
  • 资源在AndroidProject中的使用方式
  • 对应资源关系
  • Name的取值规则
  • resources.arsc的还原格式

Was this helpful?

  1. Android Studio

AS的项目结构

PreviousAndroid StudioNextadb

Last updated 5 years ago

Was this helpful?

building-cmdline

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

Name的取值规则

范围(1234567890_abcdefghijklmnopqrstuvwxyz)共37个字符。 1. 首字符:(a-z) 2. 第二个字符起:(1234567890_abcdefghijklmnopqrstuvwxyz)

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

e.g.: b_ 表示第36个值。 (取值先是一位a-z,再续a+第二位: 26+10=36).但值不一定是连续的,因为存在shrink resource,或无规则设置等原因。

https://developer.android.com/studio/projects/index.html
https://developer.android.com/studio/build/building-cmdline.html
resources.arsc