本文目录一览:
- 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