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