吾爱浩浩 发表于 2014-4-29 21:57

【汉化大课堂系列:第二课】APK的构架和各文件夹的意思

本帖最后由 吾爱浩浩 于 2014-5-1 16:16 编辑

【汉化大课堂系列:第一课】APK的详解 与APK的汉化方式:http://www.52pojie.cn/thread-255219-1-1.html
http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/192041vjjimxuymmu0utjb.png.thumb.jpg
大家既然想学习APK的汉化,那就要对APK的文件结构有一定的了解!我们【汉化大课堂系列】的第二课就先讲一讲APK的构架
APK其实就是ZIP文件(压缩包)。我们既然要了解他的结构,就要解压APK
首先我们要用RAR(其他解压软件均可!如:7Z,好压等)解压APK文件,我们需要在解压软件中添加解压权限。具体如下图(我用的RAR做的实验,其他类似)
http://static.bbs.xiaomi.cn/static/image/hrline/4.gif
首先我们打开RAR或者其他解压软件!
一般来说各种解压软件的界面都类似RAR,因为rar压缩软件是始祖0.0http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/190720s8ym8c75cuisumry.png.thumb.jpg
然后点击 选项-设置http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/210423iss908s03zvah228.png.thumb.jpg
然后再点击综合http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/190721gwz7isosebobi1r0.png.thumb.jpg
再然后就进入了解压缩的格式设置页面!
我们在这个页面可以随意添加对各种格式的支持!(如果随意添加,后果自负!)
我们在圆圈 圈的地方加入“.apk”然后保存。这样我们就可以直接用RAR或者其他压缩软件进行解压APK软件了http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/190721s1z1qqp13555s4q5.png.thumb.jpg好了,上一步完成之后我们就来解压一下APK。来看一下APK的初级结构
我们用【Nights Keeper】这款软件进行讲解http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/190722sbgiq4a62hwp3iei.png.thumb.jpg
话说这个软件发布编辑真牛啊!软件命名写的真牛!睡觉别尼玛烦我......http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/190723mgr3aza3avrargi3.png.thumb.jpg
我们用RAR打开APK后得到3个文件夹和3个文件http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/190723wrulcyucy8rrzq6z.png.thumb.jpg
下面我用一个表格来介绍他们的含义


文件或目录所代表的意义和作用
assets/用来存放特殊资源的如第三方APK用户数据等,相当于软件自带的内部文件管理
META-INF/此文件夹存放的是APK的签名信息,用来保证apk包的完整性和系统的安全
res/资源文件目录,主要放置了APP所需的图片等资源
AndroidManifest.xml整个APP的全局配置文件!里面存储的都是关于APP的一些必须信息类似于PC系统中的system.ini
classes.dexdalvik 字节码 ,全是关于APP的数据文件
resources.ars编译后的二进制资源文件,内部存储了软件的文字信息!如果我们使用强制汉化的话,就是用汉化浪子来汉化此文件

现在讲一下APK反编译后的文件夹与文件的各种意义
由于关于APK的反编译我们还没有讲到,所以我就把APK反编译的过程个省略掉了!http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/215443qon9zdvvongz1g75.png.thumb.jpg
反编译完成之后,我们会得到很多文件夹和文件!这样才是真正的汉化!http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/215444q78igdxnnddzgqek.png.thumb.jpg
http://static.bbs.xiaomi.cn/data/attachment/forum/201401/17/215445n0zpdm6y6e6isdf7.png.thumb.jpg

同样一个列表尽量!尽量写完!


目录 Directory资源类型 Resource Types
res/anim/
Define pre-determined animations.
Tween animations are saved in res/anim/ and accessed from the R.anim class.
Frame animations are saved in res/drawable/ and accessed from the R.drawable class.
定义的是预置的动画对象。一般是逐帧动画 (Frame animations) 或补间动画( Tween animations )。而实际使用上,都是一些淡入淡出、缩放和移动等的补间动画居多。

res/color
Define a color resources that changes based on the View state.
Saved in res/color/ and accessed from the R.color class
定义一些 android view 状态变化时,使用的颜色值。这通常是绑定到一个界面元素上的,比如一个 button 被按下,弹起或 disable 时的颜色。

res/drawable/
res/drawable-hdpi
res/drawable-land-hdpi
res/drawable/mdpi
res/drawable/ldpi
res/drawable/port

Define various graphics with bitmaps or XML.
Saved in res/drawable/ and accessed from the R.drawable class.
定义要被用到的位图资源文件。这些位图资源可以是 bitmap ,也可以是用 xml 描述的 bitmap 。
注意:文件后缀为 9.png 是一种特殊的位图,一般是通过 draw9patch 生成的,是一种可自动伸缩的位图资源。
Drawable 的其他目录形势, land 是横屏的, port 是竖屏的; hdpi 是高分辨率的, ldpi 是低分辨率的, hdpi 是高分辨率的。这里可以放置为特定情况下的界面优化资源。

res/layout/
Define the layout for your application UI.
Saved in res/layout/ and accessed from the R.layout class.
定义的 UI layout ,被 aapt parser 后,可由 android 直接 render 成 view 界面。
这里也有横竖屏和 dpi 之分。

res/values/
可以被编译成很多种类型的资源的 XML 文件。
注意 : 不像其他的 res/ 文件夹,它可以保存任意数量的文件,这些文件保存了要创建资源的描述,而不是资源本身。 XML 元素类型控制这些资源应该放在 R 类的什么地方。
尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件(文件命名的惯例是将元素类型包含在该名称之中):
      array.xml 定义数组
   colors.xml 定义 color drawable和 颜色的字符串值 (color string values)。使用 Resource.getDrawable() 和 Resources.getColor() 分别获得这些资源。
   dimens.xml 定义 尺寸值 (dimension value)。使用 Resources.getDimension() 获得这些资源。
      strings.xml 定义 字符串 (string)值。使用 Resources.getString() 或者 Resources.getText() 获取这些资源。 getText() 会保留在 UI 字符串上应用的丰富的文本样式。
      styles.xml 定义 样式 (style)对象。
多国语言,由 values-xxx 的后缀组成。比如简体中文 :res/values-zh-rCN

res/xml/
任意的 XML 文件,在运行时可以通过调用 Resources.getXML()读取。

res/raw/
直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用 Resources.openRawResource(),参数是资源的 ID ,即 R.raw.somefilename 。



本节课结束!下节更精彩【汉化大课堂系列:第一课】APK的详解 与APK的汉化方式:http://www.52pojie.cn/thread-255219-1-1.html【汉化大课堂系列:第三课】即将推出....
写贴不容易,希望大家大方点{:301_993:}

manbajie 发表于 2014-4-29 22:01

嗯学习了

myqqq 发表于 2014-4-29 22:04

不错,辛苦了

KingKobra 发表于 2014-4-29 22:29

不管是原创还是转帖,本帖质量绝对上乘!先赞一下!
不过你的第一课貌似没法看啊~提示帖子被删除!
望楼主重新添加一下,最好在每个帖子底部添加索引,以方便检索。
期待楼主更新!
再次感谢楼主分享!

吾爱浩浩 发表于 2014-4-29 22:38

KingKobra 发表于 2014-4-29 22:29
不管是原创还是转帖,本帖质量绝对上乘!先赞一下!
不过你的第一课貌似没法看啊~提示帖子被删除!
望楼 ...

恩恩贴一 审核中

吴安龙 发表于 2014-4-29 23:12

这种技术难题,我等屌丝是一个也不明白

诺君 发表于 2014-4-29 23:30

支持,学习学习先

MMAKI 发表于 2014-4-29 23:36

学无止境,支持了

小野 发表于 2014-4-30 08:42

早点出APP的吧 论坛好少。。

kingo 发表于 2014-5-1 16:03

这个很不错,虽然会一点汉化,但是每个文件夹的作用还是没那么清楚,只知道汉XML,学习了
页: [1]
查看完整版本: 【汉化大课堂系列:第二课】APK的构架和各文件夹的意思