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

来源:互联网 发布:tbi文件怎么导入淘宝 编辑:程序博客网 时间:2024/05/13 19:26

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

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

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


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

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


目录结构:

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生成的,一般情况下不需要修改这里面的内容。


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使用的



1 0