Android工程各文件夹结构的含义及全代码使用与全解

合集下载

android的文件系统结构及其引导过程的理解

android的文件系统结构及其引导过程的理解

android的文件系统结构及其引导过程的理解1、android文件系统的结构android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。

其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator 加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk 文件系统中的system和 userdata目录下。

因此,我们可以把ramdisk.img里的所有文件复制出来,system.img和userdata.img分别解压到 ramdisk文件系统中的system和 userdata目录下。

2、分离android文件系统出来system.img,ramdisk.img,userdata.img映像文件是采用cpio打包、gzip压缩的,可以通过file命令验证:file ramdisk.img,输出:ramdisk.img: gzip compressed data, from Unix, last modified: Wed Mar 18 17:16:10 2009Android源码编译后除了生成system.img,userdata.img之外还生成system和 userdata文件夹,因此不需要解压它们。

Android源码编译后还生成root文件夹,其实root下的文件与 ramdisk.img 里的文件是一样的,不过这里还是介绍怎样把 ramdisk.img解压出来:将ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,并使用命令gunzip ramdisk.img.gz然后新建一个文件夹,叫ramdisk吧,进入,输入命令cpio -i -F ../ramdisk.img这下,你就能看见并操作ramdisk里面的内容了。

Android程序结构简单讲解

Android程序结构简单讲解

Android程序结构简单讲解
Android程序在创建时,Android Studio就为其构建了基本结构,设计者可以在此结构上开发应⽤程序,因此掌握Android程序结构是很有必要的。

下⾯以HelloWorid程序为例,分析Android 程序结构:
在图中,可以看到⼀个Android程序由多个⽂件以及⽂件夹组成,这些⽂件分别⽤于不同的功能,具体分析如下:
manifests
⽤于存放AndroidManifest xml⽂件(⼜称清单⽂件).该⽂件是整个项⽬的配置⽂件。

在程序中定义的四⼤组件都需要在这个⽂件中注册,另外在该⽂件中还可以给程序添加权限。

在清单⽂件中配置的信息会添加到Android 系统中,当程序运⾏时,系统会找到清单⽂件中的配置信息,然后根据配置信息打开相应组件。

java
⽤于存放所有的Java代码,在该⽂件夹中可以创建多个包,每个包中可以存放不同的⽂件或Activity。

res
⽤于存放Android 程序所⽤到的资源,例如图⽚布局⽂件、字符串等。

drawable ⽬录⽤于存放图⽚及XML⽂件,
layout⽬录⽤于存放布局⽂件,
mipmap⽬录通常⽤于存放应⽤程序图标,系统会根据⼿机屏幕分辨率(hdpi/mdpi/xhdpi/xxhdpi/xxxhdpi)匹配相应⼤⼩的图标,
values⽬录⽤于放置定义的字符串。

Gradle Scripts
⽤于存放项⽬创建的相关⽂件,⽆须修改。

andriod项目生成详细目录介绍

andriod项目生成详细目录介绍

Andriod项目结构针对项目有以下文件目录。

我们一一来说明这些目录的意义。

图1、Andriod项目结构图项目文件说明1.Hello为项目名称2.src文件夹,这个有java基础的人都知道是源文件,这里也就是我们编写andriod项目的主文件源,是用java来编写的。

3.gen文件夹,这个是andriod项目里面尤其重要的一个文件,是工程自动生成的文件,不可更改。

里面有这里面有个R.java文件,如下图所示:图2、R文件4.R文件中有三个内部类,分别表示的是图片(drawable),布局(layout),文件文字(String)的id地址值。

通过这个R文件可以找到我们在页面布局里面的id的地址。

5.bin文件夹,这个文件夹主要是存放apk的。

项目部署时会自动生成一个apk文件存放在这个文件夹下,可以直接部署到手机上使用的。

6.res文件夹,这个文件夹主要存放的是一些资源文件,里面存放的有图片,布局信息,一些值信息。

(1)drawable文件(一般存放系统所需要的图片信息,有三个drawable文件夹,存放的图片信息是按照高,中,低三个层次来划分的。

)(2)layout文件夹,里面有main.xml,这个就是项目的主页面布局文件。

图3、main.xml7.values文件夹,这里有String.xml文件,这里面主要都是一些页面上需要的值信息。

图4、string.xml文件8.AndrriodManifest.xml文件,最后一个文件尤其重要,这个文件就像java WEB开发中的web.xml文件一样,主要是系统的配置信息文档。

如下图所示:图5、AndriodManifest.xml文件。

安卓系统文件夹详细结构及其文件解析

安卓系统文件夹详细结构及其文件解析

安卓系统文件夹详细结构及其文件解析安卓系统的文件夹结构是一个非常复杂的层次结构,涵盖了各种各样的文件和文件夹,用于管理设备的各种功能和资源。

下面是对安卓系统文件夹结构的详细解析。

1.根目录:- /system:系统级文件夹,包含了系统的核心组件和应用程序。

其中最重要的文件是/ system / bin / 和/ system / xbin / 中的二进制可执行文件。

- /data:包含了应用程序和用户数据的文件夹。

每个应用程序都会被分配一个唯一的文件夹,其中包含了该应用程序的所有数据。

- /cache:用于存储临时文件和缓存文件。

- /mnt:用于挂载外部存储设备和其他文件系统。

2. /system目录:- /system/bin:包含了系统级的可执行文件,例如adb、mount等。

- /system/etc:包含了一些系统配置文件,例如hosts文件用于域名解析。

- /system/framework:包含了系统框架的核心文件,例如Android 的API类库和资源文件。

- /system/lib:包含了系统级的共享库,例如图形渲染库、音频库等。

- /system/media:包含了系统的多媒体资源文件,例如系统的铃声、壁纸等。

- /system/usr:包含了一些系统级的用户应用程序。

3. /data目录:- /data/app:包含了已安装的应用程序的APK文件。

- /data/data:包含了应用程序的数据文件,包括数据库、偏好设置等。

- /data/cache:包含了应用程序的缓存文件。

- /data/misc:包含了一些杂项的系统数据,例如wifi配置文件。

- /data/system:包含了系统级的数据,例如安全证书、用户配置等。

4. /cache目录:- /cache/dalvik-cache:包含了Dalvik虚拟机的缓存文件,用于提高应用程序的启动速度。

- /cache/recovery:包含了刷机时使用的恢复模式的相关文件。

Android项目工程目录详解

Android项目工程目录详解

Android项目工程目录详解1. Src:该目录中存放的是该项目的源代码,这个目录包含了你即将创建的Java源代码文件,这个目录里的文件是根据package结构管理的,它与普通java项目中的/src目录很相似。

2.Gen:自动生成的文件目录。

该目录下的文件全部都是ADT自动生成的,一般并不需要去修改,该目录下定义了一个R.java文件,该文件相当于项目的字典,为项目中用户界面、字符串、图片等资源都会在该类中创建其惟一的ID,当项目中使用这些资源时,会通过该ID得到资源的引用。

R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。

R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res文件夹中的一个名字对应,即R类定义该项目所有资源的索引。

通过R.java我们可以很快地查找我们需要的资源,另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。

R.java很重要,不能修改不能删除。

3.Android{版本号}:这个目录包含了项目需要的库文件(Jar文件),这和普通Java项目中的/lib目录很相似。

同时其中还包含项目打包时需要的META-INF目录.4.Android Private Libraries:所有的第三方JAR包引入都被放入了Android Private Libraries中5.Android Dependencies:新版本的ADT修改了第三方jar的导入方式,之前可以在工程里面做关联,会在工程上自动添加ReferenceLibrary。

在新版本的ADT环境下,只需要在工程目录下新建libs文件夹,注意是libs不是lib,然后将第三方的jar复制进去,eclipse会自动将这个jar添加到Android Dependencies文件夹下,不必在通过BuildPath自己去修改了,也不需要ReferenceLibrary了。

Android系统文件夹结构名称的说明及怎样获得系统root权限的方法

Android系统文件夹结构名称的说明及怎样获得系统root权限的方法

Android系统文件夹结构名称的说明及怎样获得系统root权限的方法Android系统文件夹结构名称的说明及怎样获得系统root权限的方法\\system\\app该文件夹下的程序为系统默认的组件,主要存放的是常规下载的应用程序,都是以apk格式结尾的文件。

\\system\\app\\AlarmClock.apk 闹钟\\system\\app\\AlarmClock.odex\\system\\app\\Browser.apk 浏览器\\system\\app\\Browser.odex\\system\\app\\Bugreport.apk Bug报告\\system\\app\\Bugreport.odex\\system\\app\\Calculator.apk 计算器\\system\\app\\Calculator.odex\\system\\app\\Calendar.apk 日历\\system\\app\\Calendar.odex\\system\\app\\CalendarProvider.apk 日历提供\\system\\app\\CalendarProvider.odex\\system\\app\\Camera.apk 照相机\\system\\app\\Camera.odex\\system\\app\\com.amazon.mp3.apk 亚马逊音乐\\system\\app\\Contacts.apk 联系人\\system\\app\\Contacts.odex\\system\\app\\DownloadProvider.apk 下载提供\\system\\app\\DownloadProvider.odex\\system\\app\\DrmProvider.apk DRM数字版权提供\\system\\app\\DrmProvider.odex\\system\\app\\Email.apk 电子邮件客户端\\system\\app\\Email.odex\\system\\app\\FieldTest.apk 测试程序\\system\\app\\FieldTest.odex\\system\\app\\GDataFeedsProvider.apk GoogleData提供\\system\\app\\GDataFeedsProvider.odex\\system\\app\\Gmail.apk Gmail电子邮件\\system\\app\\Gmail.odex\\system\\app\\GmailProvider.apk Gmail提供\\system\\app\\GmailProvider.odex\\system\\app\\GoogleApps.apk 谷歌程序包\\system\\app\\GoogleApps.odex\\system\\app\\GoogleSearch.apk 搜索工具\\system\\app\\GoogleSearch.odex\\system\\app\\gtalkservice.apk GTalk服务\\system\\app\\gtalkservice.odex\\system\\app\\HTMLViewer.apk HTML查看器\\system\\app\\HTMLViewer.odex\\system\\app\\IM.apk 即使通讯组件包含MSN、yahoo通\\system\\app\\ImCredentialProvider.apk\\system\\app\\ImProvider.apk\\system\\app\\ImProvider.odex\\system\\app\\Launcher.apk 启动加载器\\system\\app\\Launcher.odex\\system\\app\\Maps.apk 电子地图\\system\\app\\Maps.odex\\system\\app\\MediaProvider.apk 多媒体播放提供\\system\\app\\MediaProvider.odex\\system\\app\\Mms.apk 短信、彩信\\system\\app\\Mms.odex\\system\\app\\Music.apk 音乐播放器\\system\\app\\Music.odex\\system\\app\\MyFaves.apk T-Mobile MyFaves程序\\system\\app\\MyFaves.odex\\system\\app\\PackageInstaller.apk apk安装程序\\system\\app\\PackageInstaller.odex\\system\\app\\Phone.apk 电话拨号器\\system\\app\\Phone.odex\\system\\app\\Settings.apk 系统设置\\system\\app\\Settings.odex\\system\\app\\SettingsProvider.apk 设置提供\\system\\app\\SettingsProvider.odex\\system\\app\\SetupWizard.apk 设置向导\\system\\app\\SetupWizard.odex\\system\\app\\SoundRecorder.apk 录音工具\\system\\app\\SoundRecorder.odex\\system\\app\\Street.apk 街景地图\\system\\app\\Street.odex\\system\\app\\Sync.apk 同步程序\\system\\app\\Sync.odex\\system\\app\\Talk.apk 语音程序\\system\\app\\Talk.odex\\system\\app\\T elephonyProvider.apk 电话提供\\system\\app\\T elephonyProvider.odex\\system\\app\\Updater.apk 更新程序\\system\\app\\Updater.odex\\system\\app\\Vending.apk 制造商信息\\system\\app\\Vending.odex\\system\\app\\VoiceDialer.apk 语音拨号器\\system\\app\\VoiceDialer.odex\\system\\app\\YouTube.apk Youtube视频\\system\\app\\YouTube.odex\\system\\bin该目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,主要是Linux系统自带的组件。

安卓系统文件夹结构及其文件解析(详细)

安卓系统文件夹结构及其文件解析(详细)

安卓系统文件夹及其文件解析打开Android文件管理器,会发现里面数十个英文名称命名的文件夹罗列其中,很多功能我们可以从其名字上略有所知,内部大批量的文件却让我们有些一头雾水。

这些文件是什么?有什么用?我们能不能删?这些都是我们脑中充满疑问的。

现在将将Android手机内部文件夹的架构和各文件的功能描述介绍给大家,让大家自己手机的内部资源有个比较透彻的理解,同时也避免了用户误删造成的数据丢失和系统崩溃。

【文件夹功能简介】\system\app这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。

在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。

\system\bin这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux 系统自带的组件(命令)\system\etc从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。

\system\fonts字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T-Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小。

\system\frameworkframework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。

\system\liblib目录中存放的主要是系统底层库,一些so文件,如平台运行时库。

\system\media\system\media\audio铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音。

\system\sounds默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件。

\system\usr用户文件夹,包含共享、键盘布局、时间区域文件等。

\system\app这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。

安卓项目目录结构说明

安卓项目目录结构说明

安卓项目目录结构说明安卓项目的目录结构是指在开发安卓应用程序时,项目所使用的文件和文件夹的组织方式。

一个好的目录结构可以使代码的管理更加清晰和高效。

下面是一个典型的安卓项目目录结构的说明。

1. app文件夹:这个是一个安卓项目的主要文件夹,包含了应用程序的源代码文件、资源文件和配置文件等。

以下是该文件夹的主要子文件夹和文件的说明:- manifest文件:在这个文件夹中,有一个AndroidManifest.xml文件,它是一个必需的文件,包含了应用程序的所有组件和权限等信息。

- src文件夹:这个文件夹包含了所有的源代码文件。

通常,该文件夹下还有三个子文件夹:- java文件夹:该文件夹包含了Java代码文件,用于定义应用程序的活动和其他组件。

- res文件夹:这个文件夹包含了应用程序的资源文件,如布局文件、字符串文件、图片文件等。

- AndroidTest文件夹:这个文件夹包含了一些用于测试应用程序的测试代码文件。

- build.gradle文件:这个文件是一个Gradle构建脚本,用于构建和打包应用程序。

2. Gradle文件夹:这个文件夹包含了Gradle构建系统的配置文件。

Gradle是一种用于构建和打包Android应用程序的工具。

- gradle.properties文件:在这个文件中,可以定义一些全局的Gradle配置属性。

- gradle-wrapper.properties文件:3. .idea文件夹:这个文件夹是用于存储IntelliJ IDEA集成开发环境的配置文件。

4. build文件夹:这个文件夹是在构建过程中生成的,包含了构建和打包应用程序所需要的文件。

该文件夹通常包含以下子文件夹和文件:- outputs文件夹:这个文件夹包含了构建和打包应用程序的输出文件,如apk文件。

- intermediates文件夹:这个文件夹包含了构建过程中的一些临时文件。

- generated文件夹:这个文件夹包含了一些自动生成的文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android工程各文件夹结构的含义及全代码使用与全解对Android这些东西一开始听迷惑的,不知道什么东西该放在上面地方,把网上的资源整合一下,放在这里。

1.总述我们建立一个android工程,其结构如下:1.1、src文件夹顾名思义(src, source code)该文件夹是放项目的源代码的。

A. android.app.Activity类:Activity类关注创建窗口与交互,它使用方法setContentView(View)将自己的UI放到里面。

重要的方法:onCreate(Bundle):初始化活动(Activity)。

(1)通过调用setContentView(int)方法加载布局资源(layoutresource)从而实现对UI的定义;(2)另一方面,可以用findViewById(int)在UI中检索到需要编程交互的小部件(widgets)。

主要的思想:setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关操作,我们的操作会被包装成为一个意图(Intent),然后这个意图对应有相关的activity进行处理。

B. android.os.Bundle类:从字符串值映射各种可打包的(Parcelable)类型(Bundle单词就是捆绑的意思,所有这个类很好理解和记忆)。

如该类提供了公有方法——public boolean containKey(String key),如果给定的key包含在Bundle的映射中返回true,否则返回false。

该类实现了Parceable和Cloneable接口,所以它具有这两者的特性。

1.2、gen文件夹该文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。

R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。

看我们的HelloWorld项目是不是如此,如下图:图2、R.java对应res优点:(1)通过R.java我们可以很快地查找我们需要的资源,(2)另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。

1.3、Android2.2文件夹该文件夹下包含android.jar文件,这是一个Java 归档文件,其中包含构建应用程序所需的所有的Android SDK 库(如Views、Controls)和APIs。

通过android.jar将自己的应用程序绑定到Android SDK和Android Emulator,这允许你使用所有Android的库和包,且使你的应用程序在适当的环境中调试。

例如,源文件中的:import android.app.Activity;import android.os.Bundle;这里两行代码就是从android.jar导入包。

1.4 assets文件夹与res文件夹(1)assets文件夹资源的访问assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

1. 先在Activity里面调用getAssets()来获取AssetManager引用。

2. 再用AssetManager的open(String fileName, int accessMode)方法则指定读取的文件以及访问模式就能得到输入流InputStream。

3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close()。

4.调用AssetManager.close()关闭AssetManager。

需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作以下为从Raw文件中读取:代码public String getFromRaw(){try {InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));BufferedReader bufReader = newBufferedReader(inputReader);String line="";String Result="";while((line = bufReader.readLine()) != null)Result += line;return Result;} catch (Exception e) {e.printStackTrace();}}以下为直接从assets读取代码public String getFromAssets(String fileName){try {InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );BufferedReader bufReader = newBufferedReader(inputReader);String line="";String Result="";while((line = bufReader.readLine()) != null)Result += line;return Result;} catch (Exception e) {e.printStackTrace();}}当然如果你要得到内存流的话也可以直接返回内存流!(2)res文件夹里面主要是放资源文件。

2.R文件补充R.java是自动生成的,我们平常引用的资源主要引用这个类的变量。

注意:R类是自动生成的,并且它不能被手动修改。

当资源发生变动时,它会自动修改。

3. 在代码中使用资源下面是一个引用资源的语法:R.resource_type.resource_name 或者 android.R.resource_type.resource_name其中resource_type是R的子类,保存资源的一个特定类型。

resource_name是在XML文件定义的资源的name属性,或者有其他文件类型为资源定义的文件名(不包含扩展名,这指的是drawable文件夹里面的icon.png类似的文件,name=icon)。

Android包含了很多标准资源,如屏幕样式和按钮背景。

要在代码中引用这些资源,你必须使用android进行限定,如android.R.drawable.button_background。

下面是官方给出的一些在代码中使用已编译资源的正确和错误用法的例子:1.// Load a background for the current screen from a drawable resource.2.this.getWindow().setBackgroundDrawableResource(R.drawable.my_background_image);3.4.// WRONG Sending a string resource reference into a5.// method that expects a string.6.this.getWindow().setTitle(R.string.main_title);7.8.// RIGHT Need to get the title from the Resources wrapper.9.this.getWindow().setTitle(Resources.getText(R.string.main_title));10.11.// Load a custom layout for the current screen.12.setContentView(yout.main_screen);13.14.// Set a slide in animation for a ViewFlipper object.15.mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,16. R.anim.hyperspace_in));17.18.// Set the text on a TextView object.19.TextView msgTextView = (TextView)findViewByID(R.id.msg);20.msgTextView.setText(R.string.hello_message);查了SDK Doc,才明白为什么window.setTitle要先Resources.getText,原来setTitle的参数是 CharSequence,Resources.getText(int)返回的是CharSequence;而其他setText的参数有的是 CharSequence,有的是int(这就是Resources变量值)。

同时官方还给了两个使用系统资源的例子:1.//在屏幕上显示标准应用程序的图标2.public class MyActivity extends Activity {3. public void onStart() {4. requestScreenFeatures(FEATURE_BADGE_IMAGE);5. super.onStart();6. setBadgeResource(android.R.drawable.sym_def_app_icon);7. }8.}9.10.//应用系统定义的标准"绿色背景"视觉处理11.public class MyActivity extends Activity12. public void onStart() {13. super.onStart();14. setTheme(android.R.style.Theme_Black);15. }16.}4. xml文件内引用资源1) 引用自定义的资源android:text="@string/hello"这里使用"@"前缀引入对一个资源的引用--在@[package:]type/name形式中后面的文本是资源的名称。

在这种情况下,我们不需要指定包名,因为我们引用的是我们自己包中的资源。

相关文档
最新文档