導航:首頁 > 操作系統 > 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文件相關的資料

熱點內容
ai文件pdf 瀏覽:907
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:654
王者程序員都有誰 瀏覽:76
給牛換腳掌解壓 瀏覽:387
圍棋有多少種演算法 瀏覽:602
unity資源包在哪個文件夾 瀏覽:704
阿里雲伺服器遠程鏈接不成功 瀏覽:482
文件系統pdf 瀏覽:766
原神安卓區服什麼意思 瀏覽:37
貝殼app怎麼線上發布 瀏覽:159
如何挑選安卓系統機頂盒 瀏覽:53
安卓快充使用有什麼注意事項 瀏覽:909
黑馬程序員的雲計算網課 瀏覽:947
endnotestyle文件夾怎麼導入 瀏覽:460
講解少兒編程演講會開頭 瀏覽:425