导航:首页 > 操作系统 > androidrs文件

androidrs文件

发布时间:2022-09-23 00:10:44

❶ 如何为android系统添加一个新的资源包

如何为Android系统添加一个新的资源包 传统的Android系统只有一个framework-res.apk资源包,第三方厂商在进行rom定制时会直接修改framework res资源,达到美化目的。但是这种方式跟原生资源的耦合度过高,在系统迁移或者framework ui移植时需要进行人工merge,工作量巨大。通过为Android添加一个新的独立的资源包,可以将厂商定制资源独立出来,可移植、可维护性非常好。 具体做法可以分为以下几个步骤: 1. 修改build/core/clear_var.mk LOCAL_USE_LETV_FRAMEWORK_RES:= true 2. 修改build/core/package.mk 以下脚本可以加在 $(R_file_stamp): $(framework_res_package_export_deps) 之前,然后修改$(R_file_stamp): $(framework_res_package_export_deps) 和 $(LOCAL_INTERMEDIATE_TARGETS): \ PRIVATE_AAPT_INCLUDES := $(framework_res_package_export) 如下所示: view sourceprint? 1 ifeq ($(LOCAL_USE_LETV_FRAMEWORK_RES),true) 2 letv_framework_res_package_export := \ 3 $(call intermediates-dir-for,APPS,letv-framework-res,,COMMON)/package-export.apk 4 letv_framework_res_package_export_deps := \ 5 $(dir $(letv_framework_res_package_export))src/R.stamp 6 else 7 letv_framework_res_package_export := 8 letv_framework_res_package_export_deps := 9 endif # LOCAL_USE_LETV_FRAMEWORK_RES view sourceprint? 1 $(R_file_stamp): $(framework_res_package_export_deps) $(letv_framework_res_package_export_deps) 2 $(LOCAL_INTERMEDIATE_TARGETS): \ 3 PRIVATE_AAPT_INCLUDES := $(framework_res_package_export) \ 4 $(letv_framework_res_package_export) 5 endif # LOCAL_NO_STANDARD_LIBRARIES 3. 修改build/target/proct/core.mk 在PRODUCT_PACKAGES增加letv-framework-res 4. 添加一个新的资源包项目,这里在framework/base/core/res同级目录下建立一个新的文件夹letv_res用来存放我们的资源。把res目录下的AndroidManifest.xml和Android.mk拷贝过来,进行修改。 记得设置LOCAL_USE_MY_FRAMEWORK_RES为false。 view sourceprint? 01 LOCAL_PATH:= $(call my-dir) 02 include $(CLEAR_VARS) 03 04 LOCAL_MODULE_TAGS := optional 05 06 LOCAL_PACKAGE_NAME := letv-framework-res 07 LOCAL_CERTIFICATE := platform 08 09 # Set LOCAL_USE_LETV_FRAMEWORK_RES as false 10 LOCAL_USE_LETV_FRAMEWORK_RES := false 11 12 # Tell aapt to create "extending (non-application)" resource IDs, 13 # since these resources will be used by many apps. 14 LOCAL_AAPT_FLAGS := -x 15 16 # Install this alongside the libraries. 17 LOCAL_MODULE_PATH := $(TARGET_OUT_java_LIBRARIES) 18 19 # Create package-export.apk, which other packages can use to get 20 # PRODUCT-agnostic resource data like IDs and type definitions. 21 LOCAL_EXPORT_PACKAGE_RESOURCES := true 22 23 # Include resources generated by system RenderScript files. 24 framework_GENERATED_SOURCE_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,framework,,COMMON)/src 25 framework_RenderScript_STAMP_FILE := $(framework_GENERATED_SOURCE_DIR)/RenderScript.stamp 26 #LOCAL_RESOURCE_DIR := $(framework_GENERATED_SOURCE_DIR)/renderscript/res $(LOCAL_PATH)/res 27 28 include $(BUILD_PACKAGE) 29 30 # Make sure the system .rs files get compiled before building the package-export.apk. 31 #$(resource_export_package): $(framework_RenderScript_STAMP_FILE) 32 33 # define a global intermediate target that other mole may depend on. 34 .PHONY: letv-framework-res-package-target 35 letv-framework-res-package-target: $(LOCAL_BUILT_MODULE) view sourceprint? 01 <?xml version="1.0" encoding="utf-8"?> 02 <manifest xmlns:android="" 03 package="letv" coreApp="true" android:sharedUserId="android.uid.system" 04 android:sharedUserLabel="@null"> 05 06 <application android:process="system" 07 android:persistent="true" 08 android:hasCode="false" 09 android:label="@null" 10 android:allowClearUserData="false" 11 android:killAfterRestore="false" 12 android:icon="@null"> 13 14 </application> 15 16 </manifest> 资源的放置跟res下的类似,记得values目录下创建public.xml,public.xml对id的类型区分比较严格,attr必须是0x0x010000开头,drawable必须是0x0x020000开头,其他类型好像就没有限制,直接依次0x0x030000、0x0x040000开始即可。否则,编译过程中会出现segmentation fault错误。 view sourceprint? 1 <resources> 2 <public type="attr" name="cForeground" id="0x03010000" /> 3 <public type="drawable" name="ic_filemanager" id="0x03020000" /> 4 <public type="style" name="LetvTheme" id="0x03030000" /> 5 <public type="string" name="letv" id="0x03040000" /> 6 <public type="dimen" name="letv_width" id="0x03050000" /> 7 <public type="layout" name="letv_text" id="0x03060000" /> 8 </resources> 5. 以上只是解决了资源的编译环境问题,资源的查找过程也需要进行修改,修改 AssetManager.java,在init()后添加代码 addAssetPath("/system/framework/letv-framework-res.apk"); view sourceprint? 01 public AssetManager() { 02 synchronized (this) { 03 if (DEBUG_REFS) { 04 mNumRefs = 0; 05 incRefsLocked(this.hashCode()); 06 } 07 init(); 08 addAssetPath("/system/framework/letv-framework-res.apk"); 09 if (localLOGV) Log.v(TAG, "New asset manager: " + this); 10 ensureSystemAssets(); 11 } 12 } 6. 最后就是资源应用问题。应用程序在xml文件中引用letv-framework-res.apk中的资源时可以使用与原生资源类似的访问方式,首先声明letv xmlns : view sourceprint? 1 xmlns:letv="" 然后像@android:drawable @android:dimen这种引用方式改成@letv:drawable @letv:dimen即可。 view sourceprint? 01 <?xml version="1.0" encoding="utf-8"?> 02 <LinearLayout 03 xmlns:android="" 04 xmlns:letv="" 05 android:layout_width="fill_parent" 06 android:layout_height="wrap_content" 07 android:gravity="center" 08 android:paddingTop="@letv:dimen/letv_width" 09 android:orientation="horizontal" > 10 11 <ImageView android:id="@+id/file_icon" 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:layout_gravity="center" 15 android:layout_marginBottom="40dp" 16 android:src="@letv:drawable/ic_filemanager" /> 17 18 </LinearLayout> 转载,仅供参考。

❷ android 为什么使用renderscript

准备上4.0项目,最近接触API 的时候看到了RenderScript 。通过运行google 那几个项目发现这个真是一个非常不错的API,但是google 所提供的文档非常少,有助于了解计算机图形计算,虽然我们做应用编程的不一定要涉及这块,但涉猎一下总是不错的。

RenderScript 是Android 平台上的一种类C脚本语言。要在我们程序上实现RenderScript 渲染功能,最少需要实现的几个功能如下,以一个Hello Wold 为例:

helloworld.rs 实现RenderScript 的代码
RenderScriptRS.java 一个辅助类,简化操作RenderScript (非必要)
RenderScriptView.java 一个继承于RSSurfaceView的类,用于显示RenderScript 的渲染或者用来处理用户的触摸等视图
.java 这个不用多说,Android 应用程序的界面类


当创建一个RenderScript 的项目的时候,必须在包名下创建一个以rs为后缀的文件(位于我们Activity 同包名下),如本篇文章使用的helloworld.rs文件.

复制代码
#pragma version(1)
#pragma rs java_package_name(com.xu.rs.helloworld)

#include "rs_graphics.rsh"

int gTouchX;
int gTouchY;

void init(){
gTouchX=50.0f;
gTouchY=50.0f;
}

//application main
int root(void){
rsgClearColor(0.0f,1.0f,0.0f,0.0f);//颜色更改为no red,full green,no blue,no opacity ,的RGBA值
rsgFontColor(1.0f,0.0f,1.0f,1.0f);//设置字体颜色
rsgDrawText("my first renderscript application",gTouchX,gTouchY);//根据应用传上来的x,y 将字画在屏幕对应的坐标上
rsDebug("======my renderscript debug========",rsUptimeMillis());//打印日志
return 20;
}

❸ vivoy31s下载的电视剧怎么在文件管理找不到

通过软件下载视频,如若以缓存的形式下载或是下载的视频格式手机不支持,则在手机中无法查看到。
若下载的视频是手机支持的格式,可以进入文件管理----视频中查看,长按单个视频--(更多)--详细信息中可知晓视频的存储路径。

❹ android 背景虚化原理是什么

1. RenderScript

谈到高斯模糊,第一个想到的就是RenderScript。RenderScript是由Android3.0引入,用来在Android上编写高性能代码的一种语言(使用C99标准)。 引用官方文档的描述:
RenderScript runtime will parallelize work across all processors available on a device, such as multi-core CPUs, GPUs, or DSPs, allowing you to focus on expressing algorithms rather than scheling work or load balancing.
为了在Android中使用RenderScript,我们需要(直接贴官方文档,比直译更通俗易懂):
High-performance compute kernels are written in a C99-derived language.
A Java API is used for managing the lifetime of RenderScript resources and controlling kernel execution.
学习文档:http://developer.android.com/guide/topics/renderscript/compute.html
上面两点总结成一句话为:我们需要一组compute kernels(.rs文件中编写),及一组用于控制renderScript相关的java api(.rs文件自动生成为java类)。 由于compute kernels的编写需要一定的学习成本,从JELLY_BEAN_MR1开始,Androied内置了一些compute kernels用于常用的操作,其中就包括了Gaussian blur。
下面,通过实操来讲解一下RenderScript来实现高斯模糊,最终实现效果(讲文字背景进行模糊处理):

布局:

[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/splash"
android:scaleType="centerCrop" />

<TextView
android:id="@+id/text"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Gaussian Blur"
android:textColor="@android:color/black"
android:layout_gravity="center_vertical"
android:textStyle="bold"
android:textSize="48sp" />

<LinearLayout
android:id="@+id/controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#7f000000"
android:orientation="vertical"
android:layout_gravity="bottom" />
</FrameLayout>
核心代码:

[java] view plain
private void applyBlur() {
image.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {

@Override
public boolean onPreDraw() {
image.getViewTreeObserver().removeOnPreDrawListener(this);
image.buildDrawingCache();
Bitmap bmp = image.getDrawingCache();
blur(bmp, text, true);
return true;
}
});
}

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void blur(Bitmap bkg, View view) {
long startMs = System.currentTimeMillis();
float radius = 20;

Bitmap overlay = Bitmap.createBitmap((int)(view.getMeasuredWidth()), (int)(view.getMeasuredHeight()), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft(), -view.getTop());
canvas.drawBitmap(bkg, 0, 0, null);

RenderScript rs = RenderScript.create(SecondActivity.this);

Allocation overlayAlloc = Allocation.createFromBitmap(rs, overlay);
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement());
blur.setInput(overlayAlloc);
blur.setRadius(radius);
blur.forEach(overlayAlloc);
overlayAlloc.To(overlay);
view.setBackground(new BitmapDrawable(getResources(), overlay));
rs.destroy();

statusText.setText("cost " + (System.currentTimeMillis() - startMs) + "ms");
}
当ImageView开始加载背景图时,取出它的drawableCache,进行blur处理,Gaussian blur的主要逻辑在blur函数中。对于在Java中使用RenderScript,文档中也有详细描述,对应到我们的代码,步骤为:
初始化一个RenderScript Context.
至少创建一个Allocation对象用于存储需要处理的数据.
创建compute kernel的实例,本例中是内置的ScriptIntrinsicBlur对象.
设置ScriptIntrinsicBlur实例的相关属性,包括Allocation, radius等.
开始blur操作,对应(forEach).
将blur后的结果拷贝回bitmap中。

❺ vivoy31s下载的电视剧怎么在文件管理找不到

下载ES或RS文件管理器或者去设置查找。
点击文件管理,点击所有文件,点击Android文件夹,点击data文件夹,点击com.tencentqqlive文件夹,点击files点击videos文件夹。就能找到手机下载的缓存视频了。
vivoY31s,5G手机,4GB+128GB钛空灰,5000mAh大电池,90Hz高刷护眼屏,双模5G全网通手机。

❻ 如何为android系统添加一个新的资源包

具体做法可以分为以下几个步骤:

1. 修改build/core/clear_var.mk

LOCAL_USE_LETV_FRAMEWORK_RES:= true

2. 修改build/core/package.mk

以下脚本可以加在 $(R_file_stamp): $(framework_res_package_export_deps) 之前,然后修改$(R_file_stamp): $(framework_res_package_export_deps) 和 $(LOCAL_INTERMEDIATE_TARGETS): \
PRIVATE_AAPT_INCLUDES := $(framework_res_package_export)

如下所示:

view sourceprint?
1 ifeq ($(LOCAL_USE_LETV_FRAMEWORK_RES),true)

2 letv_framework_res_package_export := \

3 $(call intermediates-dir-for,APPS,letv-framework-res,,COMMON)/package-export.apk

4 letv_framework_res_package_export_deps := \

5 $(dir $(letv_framework_res_package_export))src/R.stamp

6 else

7 letv_framework_res_package_export :=

8 letv_framework_res_package_export_deps :=

9 endif # LOCAL_USE_LETV_FRAMEWORK_RES
view sourceprint?
1 $(R_file_stamp): $(framework_res_package_export_deps) $(letv_framework_res_package_export_deps)

2 $(LOCAL_INTERMEDIATE_TARGETS): \

3 PRIVATE_AAPT_INCLUDES := $(framework_res_package_export) \

4 $(letv_framework_res_package_export)

5 endif # LOCAL_NO_STANDARD_LIBRARIES
3. 修改build/target/proct/core.mk

在PRODUCT_PACKAGES增加letv-framework-res

4. 添加一个新的资源包项目,这里在framework/base/core/res同级目录下建立一个新的文件夹letv_res用来存放咱们的资源。把res目录下的AndroidManifest.xml和Android.mk拷贝过来,进行修改。

记得设置LOCAL_USE_MY_FRAMEWORK_RES为false。

view sourceprint?
01 LOCAL_PATH:= $(call my-dir)

02 include $(CLEAR_VARS)

03

04 LOCAL_MODULE_TAGS := optional

05

06 LOCAL_PACKAGE_NAME := letv-framework-res

07 LOCAL_CERTIFICATE := platform

08

09 # Set LOCAL_USE_LETV_FRAMEWORK_RES as false

10 LOCAL_USE_LETV_FRAMEWORK_RES := false

11

12 # Tell aapt to create "extending (non-application)" resource IDs,

13 # since these resources will be used by many apps.

14 LOCAL_AAPT_FLAGS := -x

15

16 # Install this alongside the libraries.

17 LOCAL_MODULE_PATH := $(TARGET_OUT_JAVA_LIBRARIES)

18

19 # Create package-export.apk, which other packages can use to get

20 # PRODUCT-agnostic resource data like IDs and type definitions.

21 LOCAL_EXPORT_PACKAGE_RESOURCES := true

22

23 # Include resources generated by system RenderScript files.

24 framework_GENERATED_SOURCE_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,framework,,COMMON)/src

25 framework_RenderScript_STAMP_FILE := $(framework_GENERATED_SOURCE_DIR)/RenderScript.stamp

26 #LOCAL_RESOURCE_DIR := $(framework_GENERATED_SOURCE_DIR)/renderscript/res $(LOCAL_PATH)/res

27

28 include $(BUILD_PACKAGE)

29

30 # Make sure the system .rs files get compiled before building the package-export.apk.

31 #$(resource_export_package): $(framework_RenderScript_STAMP_FILE)

32

33 # define a global intermediate target that other mole may depend on.

34 .PHONY: letv-framework-res-package-target

35 letv-framework-res-package-target: $(LOCAL_BUILT_MODULE)

view sourceprint?
01 <?xml version="1.0" encoding="utf-8"?>

02 <manifest xmlns:android=""

03 package="letv" coreApp="true" android:sharedUserId="android.uid.system"

04 android:sharedUserLabel="@null">

05

06 <application android:process="system"

07 android:persistent="true"

08 android:hasCode="false"

09 android:label="@null"

10 android:allowClearUserData="false"

11 android:killAfterRestore="false"

12 android:icon="@null">

13

14 </application>

15

16 </manifest>

资源的放置跟res下的类似,记得values目录下创建public.xml,public.xml对id的类型区分比较严格,attr必须是0x0x010000开头,drawable必须是0x0x020000开头,其他类型好像就没有限制,直接依次0x0x030000、0x0x040000开始即可。否则,编译过程中会出现segmentation fault错误。

view sourceprint?
1 <resources>

2 <public type="attr" name="cForeground" id="0x03010000" />

3 <public type="drawable" name="ic_filemanager" id="0x03020000" />

4 <public type="style" name="LetvTheme" id="0x03030000" />

5 <public type="string" name="letv" id="0x03040000" />

6 <public type="dimen" name="letv_width" id="0x03050000" />

7 <public type="layout" name="letv_text" id="0x03060000" />

8 </resources>
5. 以上只是解决了资源的编译环境问题,资源的查找过程也需要进行修改,修改 AssetManager.java,在init()后添加代码 addAssetPath("/system/framework/letv-framework-res.apk");
view sourceprint?
01 public AssetManager() {

02 synchronized (this) {

03 if (DEBUG_REFS) {

04 mNumRefs = 0;

05 incRefsLocked(this.hashCode());

06 }

07 init();

08 addAssetPath("/system/framework/letv-framework-res.apk");

09 if (localLOGV) Log.v(TAG, "New asset manager: " + this);

10 ensureSystemAssets();

11 }

12 }

6. 最后就是资源应用问题。应用程序在xml文件中引用letv-framework-res.apk中的资源时可以使用与原生资源类似的访问方式,首先声明letv xmlns :

view sourceprint?
1 xmlns:letv=""
然后像@android:drawable @android:dimen这种引用方式改成@letv:drawable @letv:dimen即可。

view sourceprint?
01 <?xml version="1.0" encoding="utf-8"?>

02 <LinearLayout

03 xmlns:android=""

04 xmlns:letv=""

05 android:layout_width="fill_parent"

06 android:layout_height="wrap_content"

07 android:gravity="center"

08 android:paddingTop="@letv:dimen/letv_width"

09 android:orientation="horizontal" >

10

11 <ImageView android:id="@+id/file_icon"

12 android:layout_width="wrap_content"

13 android:layout_height="wrap_content"

14 android:layout_gravity="center"

15 android:layout_marginBottom="40dp"

16 android:src="@letv:drawable/ic_filemanager" />

17

18 </LinearLayout>

❼ 如何更改安卓安装包的内置文件

工具:安卓修改大师、一个你要修改的app安装包(这里以贪吃蛇大作战为例)。

1、选取一个要进行反编译的游戏或应用:点击安卓修改大师顶部的安卓游戏选项卡,打开的页面中找到任何一款想修改的游戏,例如,本示例将要修改的游戏为“贪吃蛇大作战”。

更改安卓安装包的内置文件需要反编译已经打包的APK安装包,此方法推荐使用“安卓修改大师”,可以在没有源代码的情况下,直接反编译安装包,通过修改代码实现添加和去除部分功能,也可以修改应用图标和应用程序名称。

❽ android工程中, 有的文件的后缀是.rs 请问这是什么文件

定义该模型的贴图,有些人(想以前的我)做了模型之后进游戏一看却是白的就是因为忽略了这个

关联各个面所属的dds文件。

❾ Android Studio怎么用

鉴于Android Studio使用Gradle构建项目,在IDE的使用过程中可能会遇到很多令人头疼的问题。大锤也是第一次接触,为有个基本的认识,特找来Android官方手册,和大家一起学习学习。翻译不当之处,望指出。
为什么要用Gradle?
Gradle是比较先进的构建系统,也是一个很好的构建工具,允许通过插件自定义构建逻辑
以下是为什么Android Studio选择Gradle的主要原因:
使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)
基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。
支持已有的Maven或者Ivy仓库基础建设
非常灵活,允许使用best practices,并不强制让你遵照它的原则来。
其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。
允许IDE集成,是很好的API工具
阅读更多:Gradle使用手册(一):为什么要用Gradle?
如何将Eclipse中的项目迁移到Android Studio 中
用户评价: / 64

最后更新于 2013年11月08日
点击数:37396
英文地址:http://developer.android.com/sdk/installing/migrate.html
翻译:Android Studio 中文组(大锤译)
如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件。因为Android Studio 是用Gradle来管理项目的,具体操作步骤如下:
阅读更多:如何将Eclipse中的项目迁移到Android Studio 中
Gradle使用手册(二):项目结构
用户评价: / 55

最后更新于 2013年11月09日
点击数:26141
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7
翻译:Android Studio 中文组(大锤译)
续Gradle(一)
项目结构
两大组件(source sets): main source code 和 test code. 它们分别在以下两个目录中:
src/main/
src/instrumentTest/
这两个目录里面,又分别有各自的代码源文件和资源文件。
java/
resources/
对于 Android plugin, 又有以下额外的目录:
AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/
阅读更多:Gradle使用手册(二):项目结构
如何引入第三方jar包(以google play service为例)
用户评价: / 24

最后更新于 2013年11月08日
点击数:21122
原文地址:http://forum.xda-developers.com/showthread.php?t=2421186
翻译:Android Studio 中文组(大锤译)
在Android Studio(AS)的开发中,遇到引入外部类库或第三方jar包的情况,确实是件很恼人的事情。因为AS是基于Gradle构建,所以和传统的导入方式有些不一样。
笔者也曾为此头疼过好一阵,现在终于有了解决办法,拿出来和大家分享一下。
这里以导入Google Services library为例,具体操作步骤如下。
1. 打开你的buid.gradle文件。应该用哪一个呢?Project中的,还是Mole中的?(如图所示,Mole中的)

2 . 将google-play-services.jar这个jar包拷到指定的位置。原来可能是在这个目录下:$ANDROID-SDK/extras/google/google_play_services/libproject/google-play-services_lib/libs ,比如现在我把它放到了$GOOGLE_PLAY_LIB目录下。
阅读更多:如何引入第三方jar包(以google play service为例)
Gradle使用手册(三):构建任务
用户评价: / 24

最后更新于 2013年11月09日
点击数:18730
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7
翻译:Android Studio 中文组(大锤译)
接续: Gradle(一) | Gradle(二)
通用任务
将一个plugin运用到build file中时,会自动创建一系列的构建任务(build task)去运行。Java plugin和Android Plugin也都会如此。
我们对于任务的约定有以下四个:
assemble任务,汇集所有项目输出
check任务,运行所有校验
build任务,既汇集又校验
clean任务,清除所有项目输出
assemble, check and build任务自己本身不做任何事情,它们只是plugin锚点,真正任务的是由plugin来添加执行。
这样做的好处是,不管你在什么项目中,你都可以调用同样的命令来执行。
通过命令行,你可以得到更高级别的任务,命令如下:
gradle tasks

列出当前运行的所有任务,以及查看他们之间的依赖关系:
gradle tasks --all

注: Gradle会自动地检测一个任务中申明的输入和输出。当重复执行两次build任务时,Gradle会报告当前所有任务是UP-TO-DATE的状态。

http://www.android-studio.org/index.php/docs/guide

❿ 如何为Android系统添加一个新的资源包

如何为Android系统添加一个新的资源包
传统的Android系统只有一个framework-res.apk资源包,第三方厂商在进行rom定制时会直接修改framework res资源,达到美化目的。但是这种方式跟原生资源的耦合度过高,在系统迁移或者framework ui移植时需要进行人工merge,工作量巨大。通过为Android添加一个新的独立的资源包,可以将厂商定制资源独立出来,可移植、可维护性非常好。

具体做法可以分为以下几个步骤:

1. 修改build/core/clear_var.mk

LOCAL_USE_LETV_FRAMEWORK_RES:= true

2. 修改build/core/package.mk

以下脚本可以加在 $(R_file_stamp): $(framework_res_package_export_deps) 之前,然后修改$(R_file_stamp): $(framework_res_package_export_deps) 和 $(LOCAL_INTERMEDIATE_TARGETS): \
PRIVATE_AAPT_INCLUDES := $(framework_res_package_export)

如下所示:

view sourceprint?
1 ifeq ($(LOCAL_USE_LETV_FRAMEWORK_RES),true)

2 letv_framework_res_package_export := \

3 $(call intermediates-dir-for,APPS,letv-framework-res,,COMMON)/package-export.apk

4 letv_framework_res_package_export_deps := \

5 $(dir $(letv_framework_res_package_export))src/R.stamp

6 else

7 letv_framework_res_package_export :=

8 letv_framework_res_package_export_deps :=

9 endif # LOCAL_USE_LETV_FRAMEWORK_RES
view sourceprint?
1 $(R_file_stamp): $(framework_res_package_export_deps) $(letv_framework_res_package_export_deps)

2 $(LOCAL_INTERMEDIATE_TARGETS): \

3 PRIVATE_AAPT_INCLUDES := $(framework_res_package_export) \

4 $(letv_framework_res_package_export)

5 endif # LOCAL_NO_STANDARD_LIBRARIES
3. 修改build/target/proct/core.mk

在PRODUCT_PACKAGES增加letv-framework-res

4. 添加一个新的资源包项目,这里在framework/base/core/res同级目录下建立一个新的文件夹letv_res用来存放我们的资源。把res目录下的AndroidManifest.xml和Android.mk拷贝过来,进行修改。

记得设置LOCAL_USE_MY_FRAMEWORK_RES为false。

view sourceprint?
01 LOCAL_PATH:= $(call my-dir)

02 include $(CLEAR_VARS)

03

04 LOCAL_MODULE_TAGS := optional

05

06 LOCAL_PACKAGE_NAME := letv-framework-res

07 LOCAL_CERTIFICATE := platform

08

09 # Set LOCAL_USE_LETV_FRAMEWORK_RES as false

10 LOCAL_USE_LETV_FRAMEWORK_RES := false

11

12 # Tell aapt to create "extending (non-application)" resource IDs,

13 # since these resources will be used by many apps.

14 LOCAL_AAPT_FLAGS := -x

15

16 # Install this alongside the libraries.

17 LOCAL_MODULE_PATH := $(TARGET_OUT_JAVA_LIBRARIES)

18

19 # Create package-export.apk, which other packages can use to get

20 # PRODUCT-agnostic resource data like IDs and type definitions.

21 LOCAL_EXPORT_PACKAGE_RESOURCES := true

22

23 # Include resources generated by system RenderScript files.

24 framework_GENERATED_SOURCE_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,framework,,COMMON)/src

25 framework_RenderScript_STAMP_FILE := $(framework_GENERATED_SOURCE_DIR)/RenderScript.stamp

26 #LOCAL_RESOURCE_DIR := $(framework_GENERATED_SOURCE_DIR)/renderscript/res $(LOCAL_PATH)/res

27

28 include $(BUILD_PACKAGE)

29

30 # Make sure the system .rs files get compiled before building the package-export.apk.

31 #$(resource_export_package): $(framework_RenderScript_STAMP_FILE)

32

33 # define a global intermediate target that other mole may depend on.

34 .PHONY: letv-framework-res-package-target

35 letv-framework-res-package-target: $(LOCAL_BUILT_MODULE)

view sourceprint?
01 <?xml version="1.0" encoding="utf-8"?>

02 <manifest xmlns:android=""

03 package="letv" coreApp="true" android:sharedUserId="android.uid.system"

04 android:sharedUserLabel="@null">

05

06 <application android:process="system"

07 android:persistent="true"

08 android:hasCode="false"

09 android:label="@null"

10 android:allowClearUserData="false"

11 android:killAfterRestore="false"

12 android:icon="@null">

13

14 </application>

15

16 </manifest>

资源的放置跟res下的类似,记得values目录下创建public.xml,public.xml对id的类型区分比较严格,attr必须是0x0x010000开头,drawable必须是0x0x020000开头,其他类型好像就没有限制,直接依次0x0x030000、0x0x040000开始即可。否则,编译过程中会出现segmentation fault错误。

view sourceprint?
1 <resources>

2 <public type="attr" name="cForeground" id="0x03010000" />

3 <public type="drawable" name="ic_filemanager" id="0x03020000" />

4 <public type="style" name="LetvTheme" id="0x03030000" />

5 <public type="string" name="letv" id="0x03040000" />

6 <public type="dimen" name="letv_width" id="0x03050000" />

7 <public type="layout" name="letv_text" id="0x03060000" />

8 </resources>
5. 以上只是解决了资源的编译环境问题,资源的查找过程也需要进行修改,修改 AssetManager.java,在init()后添加代码 addAssetPath("/system/framework/letv-framework-res.apk");
view sourceprint?
01 public AssetManager() {

02 synchronized (this) {

03 if (DEBUG_REFS) {

04 mNumRefs = 0;

05 incRefsLocked(this.hashCode());

06 }

07 init();

08 addAssetPath("/system/framework/letv-framework-res.apk");

09 if (localLOGV) Log.v(TAG, "New asset manager: " + this);

10 ensureSystemAssets();

11 }

12 }

6. 最后就是资源应用问题。应用程序在xml文件中引用letv-framework-res.apk中的资源时可以使用与原生资源类似的访问方式,首先声明letv xmlns :

view sourceprint?
1 xmlns:letv=""
然后像@android:drawable @android:dimen这种引用方式改成@letv:drawable @letv:dimen即可。

view sourceprint?
01 <?xml version="1.0" encoding="utf-8"?>

02 <LinearLayout

03 xmlns:android=""

04 xmlns:letv=""

05 android:layout_width="fill_parent"

06 android:layout_height="wrap_content"

07 android:gravity="center"

08 android:paddingTop="@letv:dimen/letv_width"

09 android:orientation="horizontal" >

10

11 <ImageView android:id="@+id/file_icon"

12 android:layout_width="wrap_content"

13 android:layout_height="wrap_content"

14 android:layout_gravity="center"

15 android:layout_marginBottom="40dp"

16 android:src="@letv:drawable/ic_filemanager" />

17

18 </LinearLayout>

转载,仅供参考。

阅读全文

与androidrs文件相关的资料

热点内容
小微信aPP怎么一下找不到了 浏览:297
算法纂要学术价值 浏览:973
程序员你好是什么意思 浏览:799
倩女幽魂老服务器如何玩 浏览:559
电子钟单片机课程设计实验报告 浏览:997
看加密频道 浏览:379
程序员算不算流水线工人 浏览:632
三星电视我的app怎么卸载 浏览:44
简述vi编译器的基本操作 浏览:507
让程序员选小号 浏览:91
加强数字货币国际信息编译能力 浏览:584
购买的app会员怎么退安卓手机 浏览:891
程序员的种类及名称 浏览:293
美国程序员薪资 浏览:13
黑石通汇证券服务器什么时候到期 浏览:393
东方财富app里我的关注怎么看 浏览:749
bm3d单反级降噪算法 浏览:457
华为安卓机激活时间怎么查询 浏览:850
如何用优盘重装服务器系统 浏览:317
日本结婚三代算法 浏览:920