Android新手入门2016(5)--HelloWorld工程结构分析

时间:2022-08-13 12:57:49

本文来自肥宝传说之路,引用必须注明出处!

还是HelloWorld,虽说边学边用效率快一点,但是能知道多一点总是好的。

今天说说工程的结构。新建的HelloWorld目录结构

Android新手入门2016(5)--HelloWorld工程结构分析

MyTestApp是我们新建的,为什么有个appcompat_v7呢?

其实这是Google的一个兼容包,能让2.1以上的所有版本使用4.0版本以上的界面。哈哈,很方便吧!

Android新手入门2016(5)--HelloWorld工程结构分析

目录结构:

1、src文件夹。如果不是零基础的人应该都知道,这是放代码的地方。可以看到刚刚设置的MainActivity.java

package com.fable.mytestapp;//包声明,最好写上自己的域名

import android.app.Activity;
import android.os.Bundle;

//几乎所有的活动activity都是与用户交互的。在这里构建一个activity,
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {//这个函数在构建Activity的时候会被调用,通常在这里添加内容和布局。
        super.onCreate(savedInstanceState);//调用父类的activity
        setContentView(R.layout.activity_main);//在这里放入自己的内容。R类后面再说,是系统自动生成的只读文件
    }
}


2、gen文件夹,自动生成的文件目录。由ADT生成的,一般情况下不需要修改这里面的内容。

Android新手入门2016(5)--HelloWorld工程结构分析

R.java是系统自动生成的文件,不能手动修改的。你可以删掉它,一下子就会自动生成出来。

R是定义项目所有资源的索引,里面的内容跟资源是一一对应的,每个资源有一个唯一的id。可以在项目里面引用到。

public final class R {
    public static final class anim {
        public static final int abc_fade_in=0x7f040000;
        public static final int abc_fade_out=0x7f040001;
        public static final int abc_slide_in_bottom=0x7f040002;
        public static final int abc_slide_in_top=0x7f040003;
        public static final int abc_slide_out_bottom=0x7f040004;
        public static final int abc_slide_out_top=0x7f040005;
    }
里面很多v7包的东西,现在就不深究了。没意义

3、Android 4.3.1

这是Android的包和API。上面引入的Activity和Bundle包就是在这里面的。里面包含着jar包,还有项目编译需要的META-INF文件。4.3.1是版本号。

4、Android Private Libraries

Android私有库,所有第三方包放这里,我也不懂,暂时不深究

5、Android Dependencies

直接支持的库

6、assets

资源路径,这个目录存放MP3,视频之类的文件,一般是按原来的格式保存,不在R.java里面显示。

7、bin

编译后生成的目录,二进制文件,apk文件,jar包等。在你点击运行的时候。Eclipse会先把代码编译打包为一个apk包,也就是Android应用的安装程序。

然后就会寻找运行的环境,看看有没有启动了虚拟机,或者链接的手机。如果有多个会让你选择的。

如果没有,就会弹框提示,让你打开Android虚拟机。

所以调试的时候,安卓虚拟机是不需要关闭的,一直开着,就像一台真的手机一样。

8、libs

每个版本的adt生成的初始工程结构都会有细微的不同。有点版本是没有这个目录的,有点是有lib和libs两个目录共存。

从名字看这是一个放库文件的地方,也就是jar。lib放进去是reference,引用的时候才用到;libs放进去被include,全部包含进去。

9、res

存放程序经常使用到的资源文件。例如图片、布局文件、参数描述文件等。这些文件是被编译进应用程序的。

在这里添加文件,会被自动记录到R.java里面的。

一般会分成三种目录:drawable、layout、values

drawable主要放png、jpg等图片资源

layout存放xml格式的布局文件

values存放应用上面的文字显示的内容,都是用key-value的形式配置。主要是考虑国际化,不改变程序的情况下,可以改变配置文件来本地化。

10、AndroidManifest.xml

全局的清单文件,包括四大组件Activity、ContentProvrider、BroadcastReceiver、Service以及用户的权限,例如电话,短信,GPS,摄像头等等。在安装的时候会被读取,上传上应用商店的时候其实也会被读取的。很多应用商店会限制各种各样的要求。其实主要还是垃圾应用太多了。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.fable.helloworld" --包名,这个包名是安卓系统认定一个软件的唯一标签,如果其他程序用到了,就会互相覆盖。当然应用商店也会认为重复提交
    android:versionCode="1"        --代码版本号,应用商店会读取这个来判断是不是版本更新
    android:versionName="1.0" >    --版本名称,好像没什么卵用

    <uses-sdk
        android:minSdkVersion="8"<span style="white-space:pre">	</span> --最小要求的sdk版本
        android:targetSdkVersion="18" /> --目标sdk版本

    <application<span style="white-space:pre">	</span>--程序上的配置
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity<span style="white-space:pre">				</span>--这里配置了Activity,要配置了才能使用的。
            android:name=".HelloWorldActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


11、ic_launcher-web.png 这个是为了在Google Play上面展示的图标,需要512*512的大小。

12、proguard-project.txt 代码混淆相关软件,防止被反编译后轻易读取

13、project.properties 工程属性文件,放着版本号,给Eclipse使用的


Android新手入门2016(5)--HelloWorld工程结构分析