本文目錄一覽:
- 1、android xml圖片找不到指定的資源文件報錯應該怎麼解決
- 2、系統資源不夠 無法完成api 怎樣處理 十萬火急
- 3、系統資源不夠,無法完成API怎麼辦?
- 4、如何為Android系統添加一個新的資源包
- 5、如何為android系統添加一個新的資源包
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-tw/n/312846.html