本文来自肥宝传说之路,引用必须注明出处!
还是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使用的