第一个Android程序——认识文件结构
- 格式:pdf
- 大小:98.22 KB
- 文档页数:4
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 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
⽤于存放项⽬创建的相关⽂件,⽆须修改。
Android应⽤程序的基本结构1. ⽂件夹结构表1.1 Android项⽬⽂件夹结构⼯程项解释src/该⽂件夹包含了应⽤程序的Java源代码。
它遵循标准的Java包约定。
res/此⽂件夹包含应⽤程序的所有资源,同时也是你使⽤XML声明布局⽂件的地⽅。
此⽂件夹包含所有的布局⽂件、图⽚、主题以及字符串。
gen/当你编译在res/⽬录下的XML布局⽂件时此⽂件夹⾃动⽣成。
它通常只包含⼀个⽂件——R.java。
此⽂件包含你需要在res/⽂件夹中引⽤的资源的常量。
不要编辑此⽂件夹中的任何东西。
assets/此⽂件夹包含应⽤所需的其他⽂件。
如果应⽤需要⼀个⼆进制⽂件的资源才能正常运作,把它放到此⽬录下即可。
AndroidManifest.xml该清单包含Android系统需要的应⽤程序的基本信息。
这包括应⽤使⽤的活动和服务、它需要的权限、它响应的任何意图以及应⽤程序的名称等基本信息。
default.properties列出了Android API的构建⽬标。
1. XML布局下⾯是Hello World应⽤程序的main.xml⽂件的代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=android:orientation="vertical"android:layout_width="math_parent"android:layout_height="math_parent"><Textviewandroid:layout_width="math_parent"android:layout_height="math_content"android:text="@string/hello"/></LinearLayout>第⼀⾏是基本的XML样板,列出了版本和编码形式。
课程标准所属系部:信息工程系课程名称:移动应用开发课程性质:专业必修课课程学时:96适用专业:物联网专业(60)《移动应用开发》课程标准1、课程概述1。
1 课程定位Android应用开发是物联网应用技术专业的核心课程之一,是该专业的专业必修课.是物联网系统设计架构师、物联网系统管理员、网络应用系统管理员、物联网应用系统开发工程师等核心职业岗位以及物联网设备技术支持与营销等相关职业需要掌握的专业知识核心课程.通过本课程的学习,使学生具备Android平台应用开发相关知识、良好的编程习惯和手机应用软件开发的能力,能胜任基于Android平台的手机软件研发等工作任务。
同时,通过教学过程中的实际开发过程的规范要求,培养学生分析和解决实际问题的能力,强化学生的职业道德意识、职业素质养意识和创新意识,为学生以后从事更专业化的软件开发工作奠定基础。
为了适应高职学生的学习情况,该课程以Android应用技术为重点,逐步阐述Android应用体系结构,介绍Android应用常见的几个功能。
采用项目+案例教学法,既让学生掌握Andro id的基本知识,同时,也让学生在潜移默化中了解一些Android的高级开发技术,从而为今后实现Android应用开发打下基础.本课程主要涉及Android 基础知识、UI界面、数据存储、SQLite数据库、四大组件、网络编程、高级编程等的学习.通过本课程的学习,学生能够掌握Android的基础知识,学会编写简单的应用程序,为进一步学习移动互联工程师后续课程打下良好的理论和实践基础。
在课程设置上,前导课程有《Java程序设计》、《数据库技术基础》,后续课程有《Android高级应用开发》、《移动互联网开发综合实训》、《毕业实习》等。
1。
2 课程设计思路Android应用开发是移动互联工程师的专业核心课程,注重软件开发基本理论、基本方法和基本技能的学习及素质教育,激发学生的学习兴趣,在启发、提示下使其自主地、全面地理解软件的基本理论和基本方法,提高学生的思维能力和实际操作技能,增强他们理论联系实际的能力,培养学生的创新精神,使学生养成观察、独立分析和解决问题的习惯;以提高技能、磨砺意识、活跃思维、展现个性和拓宽视野.本课程在教学过程中,倡导自主学习,启发学生对设定问题积极思考、分析,鼓励多种思维方式并将其表达出来,尊重个体差异。
介绍Android项目的基本结构在开始学习和开发Android项目之前,了解Android项目的基本结构非常重要。
本文将详细介绍Android项目的基本结构,包括项目目录结构、主要文件和功能模块等。
1. 项目目录结构Android项目通常采用MVC(Model-View-Controller)或MVP(Model-View-Presenter)等架构模式,其目录结构一般如下:- app- build.gradle- gradle- src- main- java- com.example.myapp- activities- adapters- models- presenters- utils- res- drawable- layout- values- AndroidManifest.xml- build.gradle- settings.gradle下面分别对各个目录进行详细介绍:1.1 app目录这是Android项目的主目录,包含了应用的主要代码、资源和配置文件等。
•build.gradle:用于配置项目的构建脚本,包括依赖库、编译选项等。
1.2 gradle目录该目录包含了Gradle的配置文件。
1.3 src目录该目录是项目的源代码和资源文件存放的根目录。
1.3.1 main目录main目录是项目的主要代码和资源存放的目录。
•java:存放Java代码,通常以包结构进行组织。
–com.example.myapp:示例包名。
•activities:存放Activity类,负责应用的界面展示和用户交互。
•adapters:存放适配器类,用于将数据绑定到界面元素上。
•models:存放数据模型类,封装应用需要使用的数据。
•presenters:存放Presenter类,用于处理界面逻辑和数据交互。
–utils:存放工具类,提供一些通用的功能封装。
•res:存放资源文件,如布局文件、图片、字符串等。
Android开发之Android应⽤程序⽬录结构解析建⽴的HelloWorld的应⽤项⽬,其代码是由ADT插件⾃动⽣成的,形成Android项⽬特有的结构框架。
接下来让我带领⼤家解析⼀个Android程序的各个组成部分,这次我们拿⼀个Hello,World做例⼦,虽然只是⼀个Hello,World,但也是⿇雀虽⼩五脏俱全,通过分析Hello,World的⽬录结构,让我们对Android程序有⼀个整体全⾯的认识。
⼀、创建⼀个Android 应⽤项⽬启动Eclipse;选择File->New->Project…;选择Android 下的Android Project,单击Next按钮。
根据上⾯的⽬录结构,我们来分析⼀下⼆、⽬录解析我们来⼤致了解⼀下安卓应⽤程序的⽬录的作⽤:1. src⽬录该⽬录下的⽂件存放Android应⽤程序中所有java源代码,⾃动地组织在⽤户定义声明的包内。
Activity是Android中的视图部分,负责界⾯显⽰。
2. gen⽬录该⽬录下的⽂件是由ADT⾃动⽣成的,即包内的R.java⽂件。
该⽂件为项⽬中的各个资源在该类中创建其唯⼀的ID。
从R⽂件中可以看到每⼀个资源都会有⼀个整数和它相对应。
3. Android4.4建⽴不同版本的可能会有不同的依赖。
Android4.4 ⽬录存放该项⽬⽀持的jar包。
作为⼀个Java项⽬,通常情况下都会引⼊要⽤到的⼯具类,也就是Jar包,在Android开发中,绝⼤部分开发⽤的⼯具包都被封装到⼀个名叫Android.jar的⽂件⾥了。
如果我们在Eclipse中展开来看,可以看到j2se中的包,apache项⽬中的包,还有Android⾃⾝的包⽂件。
在这⾥我们简单浏览⼀下Android的包⽂件:android.app :提供⾼层的程序模型、提供基本的运⾏环境android.content :包含各种的对设备上的数据进⾏访问和发布的类android.database :通过内容提供者浏览和操作数据库android.graphics :底层的图形库,包含画布,颜⾊过滤,点,矩形,可以将他们直接绘制到屏幕上.android.location :定位和相关服务的类android.media :提供⼀些类管理多种⾳频、视频的媒体接⼝ :提供帮助⽹络访问的类,超过通常的.* 接⼝android.os :提供了系统服务、消息传输、IPC 机制android.opengl :提供OpenGL 的⼯具android.provider :提供类访问Android 的内容提供者android.telephony :提供与拨打电话相关的API 交互android.view :提供基础的⽤户界⾯接⼝框架android.util :涉及⼯具性的⽅法,例如时间⽇期的操作android.webkit :默认浏览器操作接⼝android.widget :包含各种UI 元素(⼤部分是可见的)在应⽤程序的屏幕中使⽤4. assets存放项⽬相关的资源⽂件5. bin该⽬录⽤于存放⽣成的⽬标⽂件,例如Java的⼆进制⽂件、资源打包⽂件(.ap_后缀)、Dalvik虚拟机的可执⾏性⽂件(.dex后缀),打包好应⽤⽂件(.apk后缀)等。
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类定义该项目所有资源的索引。
第一个Android——程序认识文件结构通过这个程序,认识Android编程各个文件之间的联系和使用方法,以及认识Activity该程序任务:添加一个显示文本和一个按钮对Activity的初步认识:就像一个窗口,能显示信息,又像一个容器,能容纳功能空间,如button,在程序角度上看,又像一个类,可以和其他的类(Activity)发生联系。
创建Activity的要点:1.一个Activity就是一个类,类名随意起,不过必须继承Activity这个父类。
2.需要复写onCreate()方法3.每一个Activity都应该在AndroidManifest.xml文件中进行配置4.为Activity添加必要的控件整体文件代码预览:View Code//MyActivity.java 文件package geeker.MyActivity;import android.app.Activity;import android.os.Bundle;import android.widget.Button;import android.widget.TextView;public class MyActivity extends Activity {//成员变量的声明private TextView myTextView = null;private Button myButton = null;//重写OnCreate方法,会自动生成public void onCreate(Bundle savedInstanceState) {//调用父类方法,该句代码自动生成super.onCreate(savedInstanceState);//通过布局文件的id调用该Activity所使用的布局文件setContentView(yout.main);//通过findViewById()方法拿到布局文件中添加的控件//不过在布局文件中添加控件的时候必须定义id号,//如:android:id="@+id/myTextView"myTextView = (TextView)findViewById(R.id.myTextView);myButton = (Button)findViewById(R.id.myButton);//向控件上制定显示文字myTextView.setText("This is my first Activity !");myButton.setText("MY FIRST BUTTON");}}//main.xml 文件<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/myTextView"android:layout_width="fill_parent"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/myButton"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>//R。
jar 文件该文件自动生成,不要自己改动/* AUTO-GENERATED FILE. DO NOT MODIFY.** This class was automatically generated by the* aapt tool from the resource data it found. It* should not be modified by hand.*/package geeker.MyActivity;public final class R {public static final class attr {}public static final class drawable {public static final int icon=0x7f020000;}public static final class id {public static final int myButton=0x7f050001;public static final int myTextView=0x7f050000;}public static final class layout {public static final int main=0x7f030000;}public static final class string {public static final int app_name=0x7f040001;public static final int hello=0x7f040000;}}其实走一遍添加Button的流程就明白各个文件间的联系了:1 先打开main.xml文件,加一个button按钮的布局<Buttonandroid:id="@+id/myButton"android:layout_width="fill_parent"android:layout_height="wrap_content"/>2 其实上一步完成后,编译运行已经能看到一个Button按钮了,但是我想在按钮上添加文字以说明该按钮的作用,在java中的程序为:Button bt = new Button();bt.setText("MY FIRST BUTTON");那么在Android程序中如何在.java源文件中拿到刚才在main.xml中添加的控件呢?基于这个目的,在main.xml文件中加了此句:android:id="@+id/myButton",这一句使得R.java文件中多了一个叫id的类,该控件的id号就在这个类中出现了,这样做为了方便.java文件中的调用。
实际上如果不加上一句,该控件是不会在R.java文件中产生id号码的,因为只有在res目录中添加文件才会自动在R.java中产生id号,而添加一个控件只是在一个资源文件中做修改而已,所以不会自动产生id号。
我们可以看一下R.java文件中自动产生的ID代码:public static final class id {public static final int myButton=0x7f050001;public static final int myTextView=0x7f050000;}然后在.java文件中就可通过getViewById()方法拿到控件了拿到控件之后就可以像java程序中一样进行相关操作了,代码如:private Button myButton = null;myButton = (Button)findViewById(R.id.myButton);myButton.setText("MY FIRST BUTTON");实际上这个流程只体现了xml文件和R.java文件之间的联系(通过该句:android:id="@+id/myButton),以及.java与R.java之间的联系(通过该句:findViewById(R.id.myT extView) )补充一下其他文件关系的代码体现:MyActivity.java文件与Main.xml文件的联系时通过MyActivity.java文件中的setContentView(yout.main);体现的,因为一个Activity文件要对应一个布局文件MyActivity.java文件与AndroidManifest.xml文件之间的联系时通过AndroidManifest.xml文件中的<activity android:name=".MyActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER" /></intent-filter></activity>来体现的,这也说明了Activity创建的关键点之一:•每一个Activity都应该在AndroidManifest.xml文件中进行配置。