手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android项目目录结构
android项目目录结构
摘要:1.src目录该目录下存放的是项目的源代码,与一般的java项目一样,src文件夹是项目所有包以及源文件的存放处,其内部结构会根据用户声明的...

1.src 目录

   该目录下存放的是项目的源代码,与一般的java项目一样,src文件夹是项目所有包以及源文件的存放处,其内部结构会根据用户声明的包自动组织。

2.gen 目录

   该目录下的文件都是ADT自动生成的,一般不需要去修改,实际上该目录下只定义了一个R.java文件,该文件相当于项目的字典,为项目中的用户界面、字符串、图片等资源会在该类中创建其唯一的id,当项目中要使用这些资源时,便可以通过id找到该资源,当用户为项目引入了新的资源时,只需要刷新一下该目录R.java文件便可以生成一个新的资源id。

3.android 2.2 目录

该文件夹下包含android.jar文件,这是一个java归档文件,其中包含构建应用程序所需要的所有的android SDK库(如:views、controls等)以及APIs。通过android.jar将自己的应用程序绑定到android SDK和android emulator中,这样用户就可以使用android的所有库和包,且使用户的程序能在适当的环境中调试。

4.assets 目录

   该目录存放应用程序中使用的外部资源文件,如声音、视频等,在android中可以通过输入、输出流对该目录中的文件进行读写操作。

  assets 目录支持任意深度的目录。其下的文件不会被编译成二进制,并且不会生成资源id。必须使用/assets开始的相对路径按照文件方式进行访问,也可以使用 AssetManager 并结合其他类进行访问。

5.res 目录

   该目录存放应用程序用到的图片、界面布局文件以及XML格式的描述文件,当这个目录下的文件发生变化时,R.java文件也会同步的发生变化。

   一般情况下,新建一个android项目,res目录下会有三个目录 drawable、layout、valuse,第一个用来存放图片资源,第二个用来存放应用程序的界面布局文件,最后一个存放字符串资源、颜色资源、数据资源等XML文件。且res下的资源都会在R.java文件中自动生成资源id。

6.AndroidManifest.xml 文件

   该文件包含项目中所使用的 activity、service、receiver,该文件为应用程序的系统控制文件,每个应用程序必须包含这个文件,它时应用程序全剧描述文件,让外界知道应用程序包含哪些组建,哪些资源以及和时运行该程序等。

AndroidManifest.xml结构

< ?xmlversion="1.0"encoding="utf-8"? >

< manifest >

    < application >

       < activity >

           < intent-filter >

               < action/ >

               < category/ >

           < /intent-filter >

      < /activity >

       < activity-alias >

           < intent-filter >< /intent-filter >

           < meta-data/ >

      < /activity-alias >

       < service >

           < intent-filter >< /intent-filter >

           < meta-data/ >

       < /service >

       < receiver >

           < intent-filter >< /intent-filter >

           < meta-data/ >

       < /receiver >

       < provider >

           < grant-uri-permission/ >

           < meta-data/ >

       < /provider >

       < uses-library/ >

    < /application >

    < uses-permission/ >

    < permission/ >

    < permission-tree/ >

    < permission-group/ >

    < instrumentation/ >

    < uses-sdk/ >

    < uses-configuration/ >

    < uses-feature/ >

    < supports-screens/ >

< /manifest >

1)< Manifest >

xmlns:android

定义android命名空间,一般为http://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。

package

指定本应用内Java主程序包的包名,它也是一个应用进程的默认名称

sharedUserId

表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。若要共享数据,第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。

sharedUserLabel

一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义

versionCode

是给设备程序识别版本(升级)用的必须是一个interger值代表app更新过多少次。

versionName

这个名称是给用户看的,你可以将你的APP版本号设置为1.1版,后续更新版本设置为1.2、2.0版本等等。。。

installLocation

安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:internalOnly、auto、preferExternal

选择preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)

选择auto,系统将会根据存储空间自己去适应

选择internalOnly是指必须安装到内部才能运行

2)< Application >

android:allowClearUserData('true' or 'false')

用户是否能选择自行清除数据,默认为true,程序管理器包含一个选择允许用户清除数据。当为true时,用户可自己清理用户数据,反之亦然

android:allowTaskReparenting('true' or 'false')

是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务

android:backupAgent

这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)

android:debuggable

这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在手机上可以被调试。默认为false,在false的情况下调试该APP,就会报错

android:description/android:label

此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。而description可以用于具体描述获取该许可的程序可以做哪些事

android:enabled

Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被 enabled。如果为false,它覆盖组件指定的值;所有组件都是disabled。

android:hasCode('true' or 'false')

表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码

一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象

android:icon

声明整个APP的图标,图片一般都放在drawable文件夹下

android:killAfterRestore

android:manageSpaceActivity

android:name

为应用程序所实现的Application子类的全名。当应用程序进程开始时,该类在所有应用程序组件之前被实例化。

android:permission

设置许可名,这个属性若在< application >上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的

android:presistent

该应用程序是否应该在任何时候都保持运行状态,默认为false。因为应用程序通常不应该设置本标识,持续模式仅仅应该设置给某些系统应用程序才是有意义的。

android:process

应用程序运行的进程名,它的默认值为< manifest >元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。如果你想两个应用程序共用一个进程的话,你可以设置他们的android:process相同,但前提条件是他们共享一个用户ID及被赋予了相同证书的时候

android:restoreAnyVersion

同样也是android2.2的一个新特性,用来表明应用是否准备尝试恢复所有的备份,甚至该备份是比当前设备上更要新的版本,默认是false

android:taskAffinity

拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是< manifest >元素中设定的package名

android:theme

是一个资源的风格,它定义了一个默认的主题风格给所有的activity。

3)< Activity >

android:alwaysRetainTaskState

 是否保留状态不变, 比如切换回home, 再从新打开,activity处于最后的状态。比如一个浏览器拥有很多状态(当打开了多个TAB的时候),用户并不希望丢失这些状态时,此时可将此属性设置为true

android:clearTaskOnLaunch

比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 重新启动 P,是否显示 Q

android:configChanges

正常情况下. 如果手机旋转了.当前Activity后杀掉,然后根据方向重新加载这个Activity. 就会从onCreate开始重新加载.

如果你设置了 这个选项, 当手机旋转后,当前Activity之后调用onConfigurationChanged() 方法. 而不跑onCreate方法等.

android:excludeFromRecents

是否可被显示在最近打开的activity列表里,默认是false

android:finishOnTaskLaunch

当用户重新启动这个任务的时候,是否关闭已打开的activity,默认是false

如果这个属性和allowTaskReparenting都是true,这个属性就是王牌。Activity的亲和力将被忽略。该Activity已经被摧毁并非re-parented

android:launchMode(Activity加载模式)

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式

android:multiprocess

是否允许多进程,默认是false

android:noHistory

当用户从Activity上离开并且它在屏幕上不再可见时,Activity是否从Activity stack中清除并结束。默认是false。Activity不会留下历史痕迹

android:screenOrientation

activity显示的模式

默认为unspecified:由系统自动判断显示方向

landscape横屏模式,宽度比高度大

portrait竖屏模式, 高度比宽度大

user模式,用户当前首选的方向

behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)

sensor模式:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换

nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了

android:stateNotNeeded

activity被销毁或者成功重启时是否保存状态

android:windowSoftInputMode

activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。

7.res/values/string.xml 文件

  该文件中定义的是一些程序所需要的字符串资源。

8.activity_main.xml 文件

   视图文件 layout/activity_main.xml定义了视图的布局和参数。

9.android.jar 文件

   每一个java项目都要引入工具类,绝大部分的工具包都被封装在该文件中。

【android项目目录结构】相关文章:

android的ListView

Android重启运用程序的代码

android 网络连接处理分析

android 开发教程之日历项目实践(一)

Android对字符串的处理

Android开源组件小结

创建你的第一个Android项目

android中查看项目数字证书的两种方法

android 比较靠谱的图片压缩

Android编程入门之HelloWorld项目目录结构分析

精品推荐
分类导航