Android开发自学笔记(二):工程文件剖析

作者:junjie 时间:2021-09-08 11:12:56 

无论使用何种IDE开发Android,集成官方Android SDK并创建Android工程之后,该工程都会默认包括一整套Android项目文件,这个工程都可以直接run在你的真机或者模拟器上。

本文主要简单剖析这个默认的完整的一套项目工程的文件结构,这样我们在开发我们自己的项目的时候才能熟练做到有的放矢。

AndroidManifest.xml

这个AndroidManifest.xml文件可谓是整个Android工程的灵魂架构师,它不仅定义了你的Android程序运行时所需的功能特性,同时也定义了该Android程序所需权限以及Android核心组件。

这里简单介绍目前我们所遇到最重要的节点元素之一:<uses-sdk> 。

这个节点定义了你的应用的设备兼容性问题,我们都知道Android设备五花八门,但不同的设备都是有Android版本,比如我们常听说的Android2.2, 2.3,平板专用的Android3.0和现在的Android4.x,这些版本都有定义好的SDKVersion,所在这个节点里面我们得指定最小Android版本(android:minSdkVersion)以及目标Android版本(android:targetSdkVersion)这两个属性。所以应该形如:


<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />
...
</manifest>

其中最小Android版本指定为8,并且指定目标版本为19,需要注意的是:

1.android:targetSdkVersion应设置尽可能的高,这个属性的作用是当设备的SDK version和指定的目标版本一致,无需设备打开兼容功能;

2.android:minSdkVersion而这个属性则提现了你的应用向下兼容程度,一旦设备的SDK version低于这个数字,则无法安装出现下述错误:


Installing com.example.HelloWorld
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.HelloWorld"
pkg: /data/local/tmp/com.example.HelloWorld
Failure [INSTALL_FAILED_OLDER_SDK]

1.如果不显式指定targetSdkVersion,则默认等同于minSdkVersion;
2.另外,我们有时会看到android:maxSdkVersion,其作用和minSdkVersion相反,这个属性主要体现在Android 1.5, 1.6, 2.0, 和2.0.1中,这些老的系统一旦在做完系统更新时,会重现验证并安装老系统中安装的应用程序,一旦发现maxSdkVersion低于升级之后的新系统,则新系统不予安装这些应用。

src/

src目录,顾名思义存放的是应用程序的源码文件,当然程序在编译之后这个目录就不复存在了,否则源码被人家盗了不是?

res/

res目录是指资源文件resource的存放目录,这个目录包含了一些子目录。

比如存放图片的目录drawable-xxx,在现在的默认环境中,一般有4个类似的目录,分别用来存放不同分辨率的图片(drawable-xhdpi/hdpi/mdpi/ldpi),好的应用为了尽可能多的适配多种不同分辨率的机型,是需要做多套不同分辨率的图片,并分别存放在这4个目录中。

res目录下还有用来存放定义用户界面GUI(应用程序界面)的布局文件,这些布局文件则存放在layout目录下;

另外还有一个用来存放定义变量集的xml的目录,即values,这个目录可以定义颜色和字符串等变量集合。

标签:Android,开发,工程文件
0
投稿

猜你喜欢

  • c#实现无标题栏窗口的拖动

    2022-12-26 06:15:15
  • 运行java的class文件方法详解

    2021-07-29 03:53:48
  • C++野指针和悬空指针的实现方法

    2022-11-02 08:26:56
  • C语言实现代码雨效果

    2021-11-26 18:11:20
  • Java二维数组查找功能代码实现

    2023-01-04 19:47:17
  • 基于<aop:aspect>与<aop:advisor>的区别

    2023-01-22 21:53:35
  • ConcurrentHashMap是如何实现线程安全的你知道吗

    2023-11-28 23:14:25
  • 示例解析java重载Overloading与覆盖Overriding

    2021-11-03 17:22:19
  • SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    2023-09-02 13:07:36
  • C语言中求字符串长度的函数的几种实现方法

    2023-07-04 23:29:05
  • Java类加载器和类加载机制实例分析

    2021-07-18 03:32:26
  • 一文搞懂MyBatis多数据源Starter实现

    2023-07-19 03:34:22
  • Struts2中Action三种接收参数形式与简单的表单验证功能

    2022-11-26 08:55:20
  • ZooKeeper 实现分布式锁的方法示例

    2023-03-20 07:26:43
  • android多媒体音乐(MediaPlayer)播放器制作代码

    2022-01-06 01:13:20
  • java 数据结构基本算法希尔排序

    2021-09-14 02:09:50
  • Android studio将Module打包成Jar的方法

    2021-12-15 20:59:21
  • Java利用apache ftp工具实现文件上传下载和删除功能

    2022-03-17 02:04:01
  • 实现一个基于Servlet的hello world程序详解步骤

    2022-06-21 00:22:13
  • Java的“Goto”与标签及使用详解

    2023-11-11 03:56:09
  • asp之家 软件编程 m.aspxhome.com