Framework-res.apk内容简介

摘自: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----------------动画加速后减速


frameworks\base\core\res\res\anim   动画特效

frameworks\base\core\res\res\animator  动画绘制

frameworks\base\core\res\res\color  颜色模式

frameworks\base\core\res\res\drawable 

frameworks\base\core\res\res\layout  布局配置

frameworks\base\core\res\res\interpolator 动画播放速度 


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,framework-res)