關於資源values-33等引用資源是api33的如何處理編譯問題的信息

本文目錄一覽:

android xml圖片找不到指定的資源文件報錯應該怎麼解決

我們在Android framework中修改資源文件時,在Android

4.0之前,都是直接在sourcecode/frameworks/base/core/res/res下面添加對應的資源文件,然後編譯framework-res即可,但是這種情況到了Android

4.1就有改變了。按照以前的方法在編譯的時候卻會報錯,提示找不到引用的資源文件,一般情況下找不到資源文件有以下幾個原因:

(1). 資源id寫錯了,導致id不匹配;

(2). 未編譯framework-res,從而導致無法找到資源文件;

比如你在framework中添加了一張圖片,但你在編譯framework-res之前去編譯引用該資源的SystemUI,那肯定是找不到的。

(3). 未import正確的資源包;

在frameworks/base/core/res/res下編譯生成的資源文件保存在out/target/common/R/com/android/internal/R.java

可以先在該R.java內看有沒有你的資源id,然後檢查源代碼有沒有:

import com.android.internal.R;

(4). 沒有修改frameworks/base/core/res/res/values/public.xml;

第四點是Android 4.1才需要做的,在Android

4.1之前,我們添加一個資源文件,編譯時會自動添加到public.xml中,但到了Android 4.1卻不會了,需要手動添加,比如:

添加了一個布局文件,則需要在public.xml中添加如下代碼:

[html] view

plaincopyprint?

java-symbol type=”layout” name=”usb_storage_connection_connected” /

java-symbol type=”layout” name=”usb_storage_connection_connected” /

添加了一個字符串,則需要在public.xml中添加如下代碼:

[html] view

plaincopyprint?

java-symbol type=”string” name=”usb_storage_connection_message” /

java-symbol type=”string” name=”usb_storage_connection_message” /

添加了一張圖片,則需要在public.xml中添加如下代碼:

[html] view

plaincopyprint?

java-symbol type=”drawable” name=”usb_storage_connected” /

java-symbol type=”drawable” name=”usb_storage_connected” /

在布局文件中新增了一個控件的id,則需要在public.xml中添加如下代碼:

[html] view

plaincopyprint?

java-symbol type=”id” name=”mytextView” /

java-symbol type=”id” name=”mytextView” /

新添加的資源仿照public.xml中原有的方式加上即可。

系統資源不夠 無法完成api 怎樣處理 十萬火急

你好知友!

.

首先試試開機按F8選“最近一次的正確配置”回車。

1、如果故障依舊,請你用系統自帶的系統還原,還原到你沒有出現這次故障的時候修復(如果正常模式恢復失敗,請開機按F8進入到安全模式中使用系統還原)。

2、如果無法進入安全模式進行系統還原。可開機按F8進入“帶命令提示的安全模式”回車,可以在命令提示符中輸入C:\Windows\system32\restore\rstrui 命令回車(以系統所在盤符為C盤為例),同樣也可打開系統還原操作界面,以實現系統還原。

3、如果故障依舊,使用系統盤修復,打開命令提示符輸入SFC /SCANNOW 回車(SFC和/之間有一個空格),插入原裝系統盤修復系統,系統會自動對比修復的。

4、如果故障依舊,建議重裝操作系統。

電腦提示系統資源不夠,無法完成API:

如果我的回答對你有幫助.請點擊我的回答下方【選為滿意回答】按鈕.你的採納是我們回答的動力.

系統資源不夠,無法完成API怎麼辦?

重裝系統,可以將硬盤掛到其他電腦上拷處數據,或者做個GHOST

到其他分區盤上,等系統安裝好,在恢復到其他分區,獲取數據。

解決系統資源不足問題

第一種思路:

1.清除“剪貼板”

當“剪貼板”中存放的是一幅圖畫或大段文本時,會佔用較多內存。請清除“剪貼板”中的內容,釋放它佔用的系統資源:單擊“開始”,指向“程序”,指向“附件”,指向“系統工具”,單擊“剪貼板查看程序”,然後在“編輯”菜單上,單擊“刪除”命令。

2.重新啟動計算機

只退出程序,並不重新啟動計算機,程序可能無法將佔用的資源歸還給系統。請重新啟動計算機以釋放系統資源。

3.減少自動運行的程序

如果在啟動Windows時自動運行的程序太多,那麼,即使重新啟動計算機,也將沒有足夠的系統資源用於運行其他程序。設置Windows不啟動過多程序:其一,單擊“開始→運行”,鍵入“msconfig”,單擊“確定”按鈕,單擊“啟動”選卡,清除不需要自啟動的程序前的複選框。其二,單擊“開始→運行”,鍵入“sysedit”,單擊“確定”按鈕,刪除“autoexec.bat”、“win.ini”和“config.sys”文件中不必要的自啟動的程序行。然後,重新啟動計算機。

4.設置虛擬內存

虛擬內存不足也會造成系統運行錯誤.可以在“系統屬性”對話框中手動配置虛擬內存,把虛擬內存的默認位置轉到可用空間大的其他磁盤分區。

5.應用程序存在Bug或毀壞

有些應用程序設計上存在Bug或者已被毀壞,運行時就可能與Windows發生衝突或爭奪資源,造成系統資源不足。解決方法有二:一是升級問題軟件,二是將此軟件卸載,改裝其他同類軟件。

6.內存優化軟件

不少的內存優化軟件,如RAM Idle和Memo Kit都能夠自動清空“剪貼板”、釋放被關閉程序未釋放的系統資源、對虛擬內存文件(Win386.swp)進行重新組織等,免除手工操作的麻煩,達到自動釋放系統資源的目的。

第二種思路:

1.禁用一部分啟動項

啟動時加載過多的應用程序會使Windows因系統資源嚴重不足而“藍屏”,因此我們最好運行“Msconfig”禁用一部分應用程序。或者使用Windows優化大師來代勞。

2.設置足夠的虛擬內存

虛擬內存不足也會造成系統多任務運算錯誤,我們可以通過時常刪除一些臨時文件和交換文件對此問題加以解決,此外還可以在“系統屬性”下手動配置虛擬內存,把虛擬內存的默認位置轉到其他邏輯盤下。並設置得大一些。

3.給硬盤保留足夠空間

由於Win9X運行時需要用硬盤作虛擬內存,這就要求硬盤必須保留一定的自由空間以保證程序的正常運行。一般而言,最低應保證100MB以上的空間,否則出現“藍屏”很可能與硬盤剩餘空間太小有關。另外,硬盤的碎片太多,也容易導致“藍屏”的出現。因此,每隔一段時間進行一次碎片整理是必要的。

4.使用內存管理軟件

剩下的就是些雜項了,諸如不用activedesktop之類浪費資源的功能。使用內存管理軟件,如RAM Idle之類的。養成好習慣,暫時不用的程序就將其關閉。

如何為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/product/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 module 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系統添加一個新的資源包

具體做法可以分為以下幾個步驟:

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/product/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 module 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

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/312846.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-06 15:17
下一篇 2025-01-06 15:17

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智能等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示“文件中含有宏,保存將導致宏不可用”的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Python飛機大戰中文字資源分析

    Python飛機大戰是一款經典的飛行射擊遊戲,在遊戲過程中,玩家需要控制一架飛機不斷消滅敵人,生存到最後。該遊戲使用Python語言編寫,其中涉及到的文字資源對遊戲的整體體驗有重要…

    編程 2025-04-29
  • 主存屬於可搶佔資源嗎?

    主存(內存)一般被視為非可搶佔資源,即進程已經分配內存後,操作系統不會輕易將其從該進程中搶佔。然而在一些情況下,主存也可以被視為可搶佔資源。 一、 內存分配 在大多數情況下,內存是…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網絡爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向字節流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • 如何解決vuejs應用在nginx非根目錄下部署時訪問404的問題

    當我們使用Vue.js開發應用時,我們會發現將應用部署在nginx的非根目錄下時,訪問該應用時會出現404錯誤。這是因為Vue在刷新頁面或者直接訪問非根目錄的路由時,會認為服務器上…

    編程 2025-04-29
  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 如何解決egalaxtouch設備未找到的問題

    egalaxtouch設備未找到問題通常出現在Windows或Linux操作系統上。如果你遇到了這個問題,不要慌張,下面我們從多個方面進行詳細闡述解決方案。 一、檢查硬件連接 首先…

    編程 2025-04-29

發表回復

登錄後才能評論