«

Framework-res.apk内容简介

时间:2024-3-2 19:26     作者:韩俊     分类: Android


摘自:http://www.romzhijia.net/shuaji/1584/



1、assets 目录下结构

  |———— images

  |———— .png

  |———— sounds

  |————
.raw

  |———— webkit

  |———— .png   ▲ 该目录下的内容一目了然,一般用不到修改,这里就不多说了

2、res 目录下结构及相关解释

  |———— anim(该文件夹存放的是 ROM 的动画效果控制文件)

  |————
.xml

  |———— color(该文件夹存放的是 ROM 各部位颜色的控制代码)

  |———— .xml

  |———— drawable / drawable-
(ROM 的基本资源库,存放各种资源来供控制文件调用)

  |———— .xml / .png

  |———— layout / layout-(ROM 层面布局控件,简单理解就是控制各个部位的所在位置,如某图标)

  |————
.xml

  |———— raw / raw-(一般情况这些目录不需要动)

  |————
.png / .ogg / .html

  |———— values / values-(各种语言包控件)

  |————
.xml

  |———— xml / xml-(全局控制文件,一般情况这些目录不需要动)

  |————
.xml

3、AndroidManifest.xml 和 apktool.yml

  AndroidManifest.xml 是每一个应用都需要的文件;

  位于应用的根目录下,描述了程序包的一个全局变量;

  包括暴露的应用组件(activities, services 等)和为每个组件的实现类;

  什么样的数据可以操作,以及在什么地方运行;

  ▲ 一般情况下不需要动该文件

  AndroidManifest.xml 的结构大纲:

  《manifest》 文件根节点,描述了程序包的所有内容;

  《uses-permission》 请求一个安全授权,必须被授予该权限,程序包才能正确的操作;

  《permission》 声明一个安全授权,用来限制哪些应用可以访问程序包内的组件和特有机制;

  《instrumentation》

  《application》 描述程序包内应用级别组件的根节点,该节点能够描述应用程序的全局和默认属性;

  《activity》 应用于用户交互的最主要机制,当一个应用运行的时候,用户看到的第一个屏幕就是 activity;

  《intent-filter》

  《action》

  《category》

  《type》

  《scheme》

  《authority》

  《path》

  《receiver》 一个 IntentReceiver 可以让应用接收到一次数据变化和一次行为发生的通知;

  《service》 Service 是一个在后台任意时刻都可以运行的组件;

  《provider》 ContentProvider 组件是用来管理数据持久化及数据发布的,发布的数据可以被其他的应用访问;

  apktool.yml 是 apktool 反编译时生成的一个配置文件,不需要动这个文件,重新编译时缺它不可;

4.详细介绍 res anim目录

  anim 文件夹下即我们通常所说到的动画特效文件

  wallpaper_open_exit.xml------------------退出程序移除

  wallpaper_open_enter.xml----------------退出程序弹出

  wallpaper_intra_open_exit.xml------------程序内部退出移除

  wallpaper_intra_open_enter.xml---------程序内部退出弹出

  wallpaper_intra_close_exit.xml----------程序内部进入移除

  wallpaper_intra_close_enter.xml-------程序内部进入弹出

  wallpaper_exit.xml----------------------程序后台移除

  wallpaper_enter.xml------------------------程序后台弹出

  wallpaper_close_exit.xml------------------进入程序移除

  wallpaper_close_enter.xml----------------进入程序弹出

  translucent_exit.xml-----------------------选择光标移除

  translucent_enter.xml-------------------------选择光标弹出

  toast_exit.xml-------------------------------提示窗口移除

  toast_enter.xml----------------------------提示窗口弹出

  task_open_exit.xml----------------------------任务退出移除

  task_open_enter.xml--------------------------任务退出弹出

  task_close_exit.xml--------------------------任务进入移除

  task_close_enter.xml------------------------任务进入弹出

  submenu_exit.xml子--------------------------菜单移除

  submenu_enter.xml-------------------------子菜单弹出

  status_bar_exit.xml----------------------------状态栏移除

  status_bar_enter.xml-------------------------状态栏弹出

  slide_out_right.xml-----------------------------右部滑出

  slide_out_left.xml--------------------------------左部滑出

  slide_out_down.xml-----------------------------下部滑出

  slide_in_up.xml------------------------------------上部滑入

  slide_in_right.xml-------------------------------------右部滑入

  slide_in_left.xml-----------------------------------左部滑入

  slide_in_child_bottom.xml------------------------子栏下部滑入

  shrink_fade_out_from_bottom.xml-----------------下部渐变滑出

  shrink_fade_out_center.xml-----------------------中部渐变滑出

  shrink_fade_out.xml---------------------------------渐变滑出

  search_bar_exit.xml----------------------------搜索栏移除

  search_bar_enter.xml---------------------------搜索栏弹出

  recent_exit.xml-----------------------------------最近任务移除

  recent_enter.xml----------------------------------最近任务弹出

  push_up_out.xml-----------------------------------触控移除

  push_up_in.xml------------------------------------触控弹出

  push_down_out.xml-------------------------------底部触控移除

  push_down_in.xml--------------------------------底部触控弹出

  priority_alert_exit.xml---------------------------优先提示栏移除

  priority_alert_enter.xml---------------------------优先提示栏弹出

  overshoot_interpolator.xml-----------------------多屏切换

  options_panel_exit.xml---------------------------选项菜单移除

  options_panel_enter.xml--------------------------选项菜单弹出

  lock_screen_exit.xml-------------------------------解锁移除

  lock_screen_enter.xml------------------------------解锁弹出

  lock_screen_controlview_fade_out.xml-----------------解锁渐变弹出

  lock_screen_behind_enter.xml-------------------------锁屏后进入

  lock_screen_album_fade_out.xml--------------------锁屏后渐变弹出

  lock_screen_album_fade_in.xml---------------------锁屏后渐变进入

  linear_interpolator.xml---------------------------------线性插补

  input_method_fancy_exit.xml----------------------输入法退出移除

  input_method_fancy_enter.xml----------------------输入法退出弹出

  input_method_extract_exit.xml------------------------提取词库移除

  input_method_extract_enter.xml------------------------提取词库弹出

  input_method_exit.xml--------------------------------输入法面板移除

  input_method_enter.xml-----------------------------输-入法面板弹出

  grow_fade_in_from_bottom.xml---------------------底部超出渐变

  grow_fade_in_center.xml---------------------------中部进入渐变

  grow_fade_in.xml-----------------------------------超出渐变

  fade_out.xml-------------------------------------最近任务移除

  fade_in.xml--------------------------------------最近任务弹出

  dialog_exit.xml------------------------------------窗口移除

  dialog_enter.xml---------------------------------窗口弹出

  decelerate_interpolator.xml----------------------加速插补

  cycle_interpolator.xml-----------------------多次加速插补

  bounce_interpolator.xml-----------------------反弹插补

  app_starting_exit.xml--------------------------运行程序移除

  anticipate_overshoot_interpolator.xml---------------预先加速

  anticipate_interpolator.xml---------------------------预先加速

  alert_dialog_exit.xml----------------------------------提示对话框移除

  alert_dialog_enter.xml--------------------------------提示对话框弹出

  activity_open_exit.xml------------------------------退出多级菜单移除

  activity_open_enter.xml-------------------------------退出多级菜单弹出

  activity_close_exit.xml-------------------进入多级菜单移除

  activity_close_enter.xml----------------------进入多级菜单弹出

  accelerate_interpolator.xml-----------------------动画加速

  accelerate_decelerate_interpolator.xml----------------动画加速后减速


frameworksbasecoreresresanim 动画特效

frameworksbasecoreresresanimator 动画绘制

frameworksbasecoreresrescolor 颜色模式

frameworksbasecoreresresdrawable

frameworksbasecoreresreslayout 布局配置

frameworksbasecoreresresinterpolator 动画播放速度


framework-res 字符串的添加

在framework-res中添加字符串test_string,修改以下文件:


frameworks/base/core/res/res/values/public.xml


frameworks/base/core/res/res/values/strings.xml


编译(mmm framework/base/core/res -B),之后检验是否将test_string添加到了R.java,查看:


out/target/common/R/com/android/internal/R.java


out/target/common/R/android/R.java
test_string已经被生成为R.string类中的成员变量,说明添加成功。


然后在PhoneWindowManager中引用com.android.internal.R.string.test_string,编译(mmm framework/base/policy),报找不到符号的错误。


尝试更新api声明(make update-api),./frameworks/base/api/current.txt 被重新生成。再编译policy,通过。


查看./frameworks/base/api/current.txt, public static final class R.string中自动生成了:





public static final class R.string {
ctor public R.string();
//....
field public static final int test_string = 17039392; // 0x1040020
//...
}
make update-api更新的是公共api,如果仅添加framework内部使用的api、资源,应该没有必要每次都update-api,说明资源的添加方法还是有问题。


经查证,大部分字符串没有在public.xml中声明,而是在./frameworks/base/core/res/res/values/symbols.xml中被声明。而symbols中声明的字符串ID没有在current.txt中找到,应该是framework内部使用的非公共资源。 因此,在framework中添加一个内部使用的字符串,仅需修改:


frameworks/base/core/res/res/values/symbols.xml
frameworks/base/core/res/res/values/strings.xml
而添加一个所有应用程序都可以调用到的字符串资源,则需要修改:


frameworks/base/core/res/res/values/public.xml


frameworks/base/core/res/res/values/strings.xml


另外需要注意的是,修改xml后最好强制重新编译framework-res(mmm framework/base/core/res -B),以免出现R.java没有重新生成的问题。




查找framework-res.apk : find $ANDROID_BUILD_TOP -name "*.mk" |xargs -i grep -rwnH "framework-res" {} // 找到framework-res.apk所在目录

标签: android

热门推荐