应用资源的调用
为了提高应用在运行时的访问资源信息的效率,Android会在应用的开发和编译过程中,对应用资源预处理,使资源占用空间更小、解析更快,调用更方便。
Android对应用资源的处理分3个阶段:预编译(用appt)、编译(用Javac)、打包(用apkBuilder)。
预编译
将中间语言编写的内容转换成逻辑代码:预编译。
Android中用appt工具。对所有的应用资源目录结构和资源文件进行解析,编译生成R.java和APP._ap文件。R.java放于gen目录。路径名为包名+R。R.java类结构简单,由一组静态内嵌类,及其中的静态证书变量组成。
R.java类相当于一张索引表,每个整形变量对应着存储在APP._ap文件中的一个资源项。
APP._ap文件是根据资源内容编译成的二进制文件,收录了应用的所有的资源信息。
编译
R.java类利用SDK提供的dx工具,将所有的.class文件汇集成为一个Android定义的dex格式。
打包
通过apkbuilder生成APK文件。APP._ap会进一步压缩,生成更小的resources.arsc文件。
应用资源的管理
Android按层次结构来管理应用资源的内容。每个应用资源会统一放在一张资源表Resource Table,该表内包含多个资源包,Resource Package Group ,每个资源包中存放着不同资源类型Resource type 的数据, 每种资源类型的数据会按照给定的资源配置,存放资源项。
R类每个变量都是32位整型数,高8位表示资源包信息,次高8位表示资源类型;最低的16位表示资源项的索引信息;因此每个应用最多包含256个资源包。每个资源包最多有256种资源类型,资源类型最多有65536个资源项。
通过R类定位资源时,先根据高8位来定位资源包,再用次高8位定位资源类别,最后用16位涨到何时的资源项。(C++实现)
应用资源的使用
通过R类和Resources类,可以使用所有的应用资源。如R.String.XX;
Resources.getColor; Resources.getLayout ;
相关推荐
在Android开发中,Android与JavaScript的互相调用是一种常见的需求,尤其在混合应用开发中更为常见。这种交互机制使得开发者可以充分利用Web技术的便捷性,同时利用原生Android的性能和功能。以下将详细介绍Android...
FlowDroid是一款强大的静态分析工具,专为检测Android应用程序中的数据流和控制流问题而设计。在Android开发中,理解应用程序的函数调用图(Call Graph)至关重要,因为它揭示了程序内部各个组件、方法间的相互作用...
在本文中,我们将深入探讨如何在WebView中调用系统的相机功能,允许用户拍照并返回照片的存储路径。...通过这样的方式,你可以在Android应用的WebView中无缝集成系统相机功能,为用户提供更丰富的体验。
每个Android应用都在自己的进程中运行,具有独立的用户ID,这限制了应用之间的相互访问和系统资源的直接操作。因此,要在Android上运行shell脚本,我们通常需要通过Java代码来间接实现。 1. **使用Runtime类**:这...
6. **调用C++函数**:在Android应用的适当位置,通过Java代码调用native方法: ```java NativeCaller caller = new NativeCaller(); caller.callCppFunction(); ``` 7. **错误处理和调试**:使用JNIEnv对象进行...
在Android应用程序开发中,有时需要访问底层硬件功能或者优化性能,这时就可能需要用到JNI(Java Native Interface)技术来调用C/C++代码。JNI允许Java应用程序与本地代码进行交互,包括操作系统内核、驱动程序等。...
在Android开发中,有时我们需要将Web内容嵌入到应用程序中,这时就用到了WebView。...通过实践和理解这两个关键点,你可以轻松地在Android应用中集成复杂的H5功能,同时也能从Android端调用H5进行数据交换或业务处理。
在Android平台上,WPS Office是一款广泛使用的办公软件,支持创建、编辑和查看各种文档。而AIDL(Android Interface Definition Language...理解并熟练掌握AIDL调用,对于开发高效、稳定的Android第三方应用至关重要。
本资源"Android高级应用源码-Android调用Webservice.zip"提供了一个详细的示例,帮助开发者理解如何在Android应用程序中集成和使用Web服务。本文将深入探讨相关知识点。 一、Web Service简介 Web Service是一种基于...
Android 应用隐式调用检测技术的研究 本文研究了 Android 应用隐式调用检测技术,旨在检测 Android 应用程序中的恶意行为。该技术基于静态分析和动态分析相结合的方法,通过反编译提取应用程序的权限特征,并对源...
本资源“Android应用源码之调用中的软键盘.zip”提供了关于如何在Android应用中有效地控制和调用软键盘的源码示例。通过深入理解这部分源码,开发者可以更好地掌握Android系统的输入法管理机制,提升用户体验。 1. ...
在这个特殊的场景中,我们讨论的是如何通过JNI在Android应用中调用Python解释器,这通常用于实现动态脚本执行或者利用Python丰富的库资源。 首先,我们需要理解Android的NDK(Native Development Kit),它是...
总结,Android与JavaScript的相互调用是混合应用开发的核心技术之一,它使得原生应用能够充分利用Web技术的优势,同时结合Android的强大功能,提供更加丰富和灵活的用户体验。通过理解并熟练运用上述知识点,开发者...
本项目“Android应用源码之代码调用C++代码和C++代码调用代码”是针对这种需求的一个学习示例,适合计算机科学与技术专业的学生进行毕业设计或论文研究。下面将详细讲解这个主题涉及的知识点。 1. **JNI(Java ...
这个压缩包"Android应用源码之Android调用JavaScript.zip"很可能包含了一个示例项目,展示了如何在原生Android应用中调用JavaScript代码。现在,我们将深入探讨这一主题。 首先,Android提供了`WebView`组件,它是...
当需要在Android应用中调用JavaScript函数时,我们可以使用`WebView`类提供的`loadUrl()`方法。这个方法接受一个URL字符串,但也可以用来执行JavaScript代码。例如,假设我们有一个名为`myJsFunction`的JavaScript...
在Android开发中,调用天气信息是常见的功能需求,尤其对于构建本地化的生活服务类应用而言。...通过深入研究和实践,开发者可以掌握如何在Android应用中集成天气查询功能,并提升自己的编程技能。
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在APP内部加载并显示网页内容。这个源码示例展示了如何在WebView中调用H5页面,并利用Android原生的摄像头功能来扫描二维码,实现二维码识别。下面...
本资源"Android高级应用源码-Android调用JavaScript.zip"提供了一个实例,展示了如何在Android应用中调用JavaScript代码,从而实现两者之间的通信。 一、Android与JavaScript交互基础 1. Webview组件:Android通过...
我们将通过分析提供的"Android应用源码之调用安卓自带文本朗读.zip"中的源码,来学习如何在自己的应用中集成这一功能。 首先,理解TTS服务。TTS是Android系统提供的一种服务,它可以将文本转换成语音输出,让用户...