APK修改
反编译apk得到的几个文件和文件夹
1。 assets 文件夹
此文件夹可以存放资源文件。至于是神马资源文件,怎么读取,这些我们就不用深究了,因为不常改。
2。 res 文件夹
主要用来存放资源。此文件夹下可以创建子文件,常见的有:
anim 动画
drawable 图片
color 颜色
menu 菜单
layout 布局
values 常量值
xml 任意xml文件
我们修改apk时,一般就在这里修改。比如汉化,改名称,去广告,改字体颜色,大小神马的。
3。smali
里面主要是dex文件反编译得到的smali文件。不会java的改不起。顶多搜几个关键词汉化一下。值得注意的是,汉化时不能直接输入汉字,而应输入对应的十六进制代码。
4。AndroidManifest.xml
此文件是apk中最重要的文件之一。它是apk的全局配置文件,提供了android系统所需要的关于该应用的必要信息。
res目录浅说:
1 anim文件夹
后缀名为.xml。动画文件都放在这里。
2 drawable文件夹
用于存放图片资源,图片或者xml。
(1) 图片
图片格式:png,9.png,jpg,gif。
注意:9.png是一种特殊的png格式,与一般的png格式有区别!很多人在改完图片后将两种格式混淆,导致回编译失败。后面有制作9.png格式图片的方法。
(2) xml
xml文件通常为自定义的形状shape或图片选择器类selector似的东西,就是不同状态下不同的图片,用于设置background什么的。
(3) drawable文件夹为了对屏幕的适配,
①对分辨率笼统的分:名字可以为:drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdp
drawable-nodpi
drawable-tvdpi
分辨率依次由高到低
②具体到某一分辨率:drawable-分辨率,比如:drawable-1280x720
③如果有横竖屏的区别,则命名为:drawable-land/port-mdpi,
3 color文件夹
用于存放color列表,和drawable的xml一样,表示不同状态下的不同颜色
4 menu文件夹
菜单资源文件夹。
5 layout文件夹
布局文件夹。此文件夹的名字也是可以起到屏幕适配的功能的。
①横竖屏:layout-land/port
②分辨率:layout-1280x720
6 values文件夹
存放常量值的文件夹。里面常见的xml文件为:
arrays.xml : 资源数组.
colors.xml : 颜色值
dimens.xml : 像素值.
strings.xml : 字符串值.
styles.xml : 样式值.
此文件夹,也有屏幕适配作用。比如:dimens在不同分辨率下的值。同样的是加-1280x720这样的后缀。
对于strings,values文件夹有各种语言的版本对应。默认为英文。中文的文件夹名字应该是:
values-zh-rCN 简体中文
values-zh-rTW 繁体中文
7 raw文件夹
存放不需要系统编译成二进制的文件,例如字体文件等,同assets文件夹类似。
8 xml文件夹
存放任意的xml文件。具体看名字。
改apk时,我们主要改两种,即图片和xml。先讲图片:
改图片最简单了,注意好格式,分辨率即可。但有一点需注意,就是9.png和png格式图片的区别。许多人没注意这点,导致回编译总是失败。下面讲9.png格式图片的制作。
1 介绍 9patch
NinePatch.图片以*.9.png结尾,和普通图片的区别是四周多了一个边框
左边那条黑色线代表图片垂直拉伸的区域,上边的那条黑色线代表水平拉伸区域,右边的黑色线代表内容绘制的垂直区域,下边的黑色线代表内容绘制的水平区域,右边和下边的线是可选的,左边和上边的线不能省略。
采用NinePatch.图片做背景,可使背景随着内容的拉伸(缩小)而拉伸(缩小)
总之,通俗的将,9patch格式的图片就是有些部位能伸缩,有些部位不能的特殊png格式图片。
2 将png转化为9.png步骤如下
第一步,下载9妹工具,一楼工具包里有,双击打开draw9patch.bat,将图片拖到软件界面编辑。
第二步,勾选软件下面的三个选项,全选就对了。
第三步,把鼠标放到图片中央,此时你会看到图片四周有1像素的透明带
第四步,在左边和上边的透明带上各画一条黑线(鼠标拖动即可)
注意:当图片过大时上边的透明带会被黄色的提示框遮住,此时只能多点击黄色区域自己摸索透明带的位置。
第五步,保存,这个不用多说吧。
至此,将图片替换回原来的文件夹即可。需要注意的是,刚编辑的9patch.图片不能直接拖到原apk中,而应回编译后再替换进去。
再说修改xml。改字体,软件全局背景,汉化,去广告神马的都通过这种方式。我们常改的是layout,drawable,values目录下的xml文
件,如果要改桌面插件,要去xml文件夹中修改。必要时也可尝试修改AndroidManifest.xml。下面是常见代码(分类非标准)
1 引用(@)
1)引用自定义的资源
形式 @[package:]type/name
如 android:text="@string/hello"
这里使用"@"前缀引入对一个资源的引用,后面的string/hello就是我们自定义的资源。
2) 引用系统资源
形式 @android:type/name
如 android:textColor="@android:color/opaque_red" 指定package:android
3) 引用主题属性
形式 ?android:type/name
即引用当前主题中的属性的值。
2 文本(text)
textColor 文本颜色
textColorHighlight 被选中文字的底色,默认为蓝色
textColorHint 提示信息文字的颜色,默认为灰色。与hint一起使用
textColorLink 文字链接的颜色
textScaleX 设置文字之间间隔,默认为1.0f
textSize 文字大小
textStyle 字形
typeface 文本字体
height 文本区域的高度
maxHeight 文本区域的最大高度
width 文本区域的宽度
lines 文本的行数
3 视图(view)
background 背景色/背景图片(@null 透明)
clickable 是否响应点击事件
focusable 是否获得焦点
minHeight 视图最小高度
minWidth 视图最小宽度
padding 上下左右的边距
scrollbar 滚动条(none 隐藏,horizontal 水平,vertical 垂直)
tag 文本标签
visibility 是否显示View(visible 默认值,显示;invisible 不显示,但是仍然占用空间;gone 不显示,不占用空间)
4 布局(layout)
LinearLayout 线性布局
FrameLayout 单帧布局
RelativeLayout 相对布局
AbsoluteLayout 绝对布局
TableLayout 表格布局
layout_width 宽度
layout_height 高度
fill_patent 布满屏幕
wrap_content 适合大小
foreground 前景
background 背景
gravity 位置(center_vertical 居中;top 顶部,默认;bottom 底部)
orientation 定向(horizontal 水平,vertical 垂直)
5 主题(theme)
Theme.Dialog 对话框模式
Theme.NoTitleBar 无标题栏
Theme.NoTitleBar.Fullscreen 无标题栏,全屏
Theme.Light 白色背景
Theme.Light.NoTitleBar 白色背景,无标题栏
Theme.Light.NoTitleBar.Fullscreen 白色背景,无标题栏,全屏
Theme.Black 黑色背景
Theme.Black.NoTitleBar 黑色背景并,无标题栏
Theme.Black.NoTitleBar.Fullscreen 黑色背景,无标题栏,全屏
Theme.Wallpaper 桌面背景
Theme.Wallpaper.NoTitleBar 桌面背景,无标题栏
Theme.Wallpaper.NoTitleBar.Fullscreen 桌面背景,无标题栏,全屏
Theme.Translucent 半透明效果
Theme.Translucent.NoTitleBar 半透明,无标题栏
Theme.Translucent.NoTitleBar.Fullscreen 半透明效果,无标题栏,全屏
Theme.Panel 面板风格显示
Theme.Light.Panel 平板风格显示
6 颜色(color)
1) @color/×× 引用自定义的颜色,一般在res/values/colors.xml中
2) @android:color/×× 引用系统颜色
3) #×××××××× #后一共8个字符,由0~9,a~f组成。前两位是透明度,00表示全透明,ff表示不透明。后6位是RRGGBB,R红G绿B蓝,000000为白,ffffff为黑
7 单位
px 像素点
in 英寸
mm 毫米
pt 磅,1/72 英寸
dp 一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px
dip 等同于dp
sp 同dp相似,但还会根据用户的字体大小偏好来缩放。
注意:sp一般是文本的单位,dip最常用