Android基础篇(二)——Android应用结构分析和清单文件

一、Android应用目录结构简单介绍

Android Studio上开发Android应用简单方便,除了创建Android项目,开发者只需做两件事情:1.使用activiy_main.xml文件定义用户界面;2.打开Java源代码编写业务实现。但对于一个想要了解细节的学习者来说,这种方式会让人迷惑:例如:findViewById(R.id.show);代码中的R.id.show是从哪里来的?又是什么?为什么setContentView(R.layout.activity_main);代码设置使用activity_main.xml文件定义的界面布局?等等诸如此类……

有句话叫“不想当将军的士兵不是好士兵”,类似的,也可以说,不想探究原理、机制的程序员不是好程序员。所以,在这个角度上来看,了解一下Android的应用结构还是有些必要的。

拿很简单的一个HelloWorld工程举例,在AndroidStudio下建好工程后,Android视图下可以看到如下目录:

在这些文件目录中,ressrcAndroidManifest.xml文件是Android项目必需的。其他目录、文件都是可选的。

libs目录:存储Android项目所需的第三方JAR包。

res目录:专用于存放Android项目的各种资源文件,比如layout存放界面布局文件,values目录下存放各种XML格式的资源文件,例如字符串资源文件:strings.xml;颜色资源文件colors.xml;尺寸资源文件,dimens.xml

关于drawablemipmap这两个文件夹的存放目标文件就会开始有所争议,在以前的使用Eclipse的年代,我们通常将图标、图片资源放在drawable文件夹下,但是在AS下将图片资源图标放在mipmap下也可以完美运行程序,但在Android官网上的说法:mipmap是用来存放启动图标的文件夹(原文:mipmap/For app launcher icons.),而PNGJPEGGIF9-partch图、XML文件资源还是全部放在drawable里。

drawable-ldpidrawable-mdpidrawable-hdpidrawable-xhdpi4个子目录则分别用于存放低分辨率、中分辨率、高分辨率、超高分辨率的4种图片文件。

src目录:存储Android项目开发中的各种源文件,包括各种Java源文件(放在main\java子目录下),各种资源文件(放在main\res子目录下)和AndroidMainifest.xml文件。除此之外还可以看到src目录下还包含一个androidTest子目录,该目录下存放的是Android测试项目。

AndroidManifest.xml文件是Android项目的系统清单文件,它用于控制Android应用的名称、图标、访问权限等整体属性。除此之外,Android程序中的四大组件都要在该文件中注册。

对于Android开发者而言,重点关注的就是两部分:

1src目录下(对于Android Studio项目的 app\src\main\java子目录)的各种Java文件;

2res目录下(对于Android Studio项目的app\src\main\res子目录)的各种资源文件。

所以,进行Android开发都是先编辑XML格式的界面布局文件,再编辑相应的Java文件。

 

二、Android应用的清单文件:AndroidManifest.xml

AndroidManifest.xml清单文件是每个Android项目所必需的,它是整个Android应用的全局描述文件。AndroidManifest.xml清单文件说明了该应用的名称、所使用的图标以及包含的组件等。

AndroidManifest.xml清单文件通常可以包含如下信息。

1、应用程序的包名,该包名讳作为该应用的唯一标识。

2、应用程序所包含的组件,如ActivityServiceBroadcastReceiverContentProvider等。

3、应用程序兼容的最低版本。

4、应用程序使用系统所需的权限说明。

5、其他程序访问该程序所需的权限声明。

 

下面是一份简单的AndroidManifest.xml清单文件:

<?xml version="1.0" encoding="utf-8"?>
<!--指定该Android应用的包名,该包名可用于唯一地标识该应用-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.z.helloworld"
    android:versionCode="1"
    android:versionName="1.0">
    <!-- 指定Android应用标签、图标-->
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <!-- 定义Android应用的一个组件:Activity,该Activity的类为HelloWorld,并指定该Activity的标签-->
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <!-- 指定该Activity是程序的入口-->
                <action android:name="android.intent.action.MAIN" />
                <!-- 指定加载该应用时运行该Activity-->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

上述清单文件中有两处用到了资源:

android:label="@string/app_name",这说明该应用的标签(Label)为/res/value目录下strings.xml文件中名为app_name的字符串值。

android:icon="@mipmap/ic_launcher",这一行代码说明该应用的图标为/res/mipmap目录下主文件名为icon的图片。

三、应用程序权限说明

AndroidManifest.xml清单文件中为<manifest.../>元素以内、<application.../>元素以外添加<uses-permission>子元素即可为此程序声明权限。

例如:

     <uses-permission android:name="android.permission.CALL_PHONE"/>

     <!-- 声明该应用需要调用拨打电话功能的权限-->

 

以下图为Android系统的常用权限:


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值