android项目目录结构

来源:互联网 发布:淘宝卖家如何延长发货 编辑:程序博客网 时间:2024/05/17 05:17
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项目都要引入工具类,绝大部分的工具包都被封装在该文件中。
原创粉丝点击