在Eclipse+ADT中创建HelloWorld非常简单,直接按照导航下一步就可以了。本文重点不在如何创建,而在理解HelloWorld项目的文件。

HelloWorld的目录结构有:

src:存放应用程序的逻辑代码,这里面的代码是人工写的

gen:存放资源代码,这里面的代码是自动生成的

assets:存放mp3等视频资源

bin:生成的可执行的二进制文件目录

libs:引用到的库,这里和bin/dexedLibs里面的目录是一致的

res:资源文件。往这个目录添加资源的时候,会被gen/R.java自动记录,自动那个记录到R.java中去。

AndroidManifest.xml:项目的总配置项,记录应用中使用到各种全局的配置

ic_launcher-web.png:这个是为了google Play市场使用展示的图标,它需要的是512×512的高分辨率的图标。

proguard-project.txt

project.properties

这两个文件是为了保护Android项目而做的代码混淆使用的。官方文档在:http://developer.android.com/tools/help/proguard.html

下面一个一个看:

src

存放用户代码的文件夹,里面至少会有一个Activity。Activity的概念就是界面,相当于C#中的Windows Form。

看到至少包含了一个onCreate函数,是在渲染界面的时候调用的,这里使用R.layout.activity_main来渲染,这个就对应于gen/R中的

activity_main等号后面的是资源描述符。

这里正好可以看一下R这个类

gen/R.java

R中的每个类都对应res中的一个资源,

比如layout对应res/layout

drawable对应res/drawable-XXdpi

所以上文中的R.layout.activity_main对应的实际是res/layout/activity_main.xml。这样就把界面和逻辑分开了,这就是典型的mvc模式分层的概念。

gen/BuildConfig.java

里面存放着全局的DEBUG开关,你可以使用这个开关做日志和调试的操作。

但是如何修改这个呢?gen下面的文件不应该手动修改,具体可以参照:http://drovik.com/html/5701262218.html

bin

这个目录是生成文件的目录,可以看到,它把apk包,AndroidMainifest.xml都生成一份放在文件夹内。

bin/class.dex

java编译后生成的java字节码文件,相当于java的.class文件。但是由于Android使用的dalvik虚拟机和标准的java虚拟机是不兼容的,所以dex和class是不一样的。

现在网络上就有一些工具能通过dex来进行反编译出Android代码。比如这个:

http://code.google.com/p/android-apkdb/

bin/HelloWorld.apk

这个就是应用的安装包了(application package file)。一个apk文件内包含被编译的代码文件(.dex文件),文件资源(res),assets,证书(certificates),和清单文件(manifest file)。APK是基于zip文件格式的。

bin/resources.ap_

这个是所有资源文件的集合,实际上是zip格式。我们可以将它的后缀名修改,解压可以看到里面的结构是有mainfest,res等。

bin/dexedLibs

对应libs中引用的jar包

res

这个目录就是所有的资源文件了

res/drawable-Xdpi:这里存放的是对不同分辨率的资源

res/layout:存放布局资源,src中的onCreate方法就加载了这里面的activity_main资源

res/menu:手机的menu菜单

res/values:用来存放一些变量,参数等。

res/values-XX:对于不同设备或者不同的安卓版本会有不同的参数设置

参考文章

http://blog.chukong-inc.com/index.php/2012/06/05/android%E4%BB%A3%E7%A0%81%E6%B7%B7%E6%B7%86/

http://drovik.com/html/5701262218.html

http://www.cnblogs.com/skynet/archive/2010/04/13/1711479.html

 

==================================
作者:轩脉刃(yjf512)
出处:(http://www.cnblogs.com/yjf512/
版权声明:本文的版权归作者与博客园共有。欢迎转载阅读,转载时须注明本文的详细链接。

Android初识Helloworld的更多相关文章

  1. android的helloworld工程目录学习

    android的helloworld工程目录学习 Android工程的主要目录有src.gen.Android X.X.bin.res等文件夹. 1.     Src文件夹 Src文件夹包含java源 ...

  2. 基于eclipse创建android的helloworld工程

    基于eclipse创建android的helloworld工程 之前用过Android studio感觉很慢,决定采用eclipse来学习Android开发.下面来看是怎么创建的. 选择File--- ...

  3. Android下HelloWorld项目的R.java文件介绍

    R.java文件介绍 HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R {     public s ...

  4. jni cocos2d-x移植到android:helloworld

    前面搭建好了android开发环境 jni开发环境,那么就来用一用目前火热的cocos2d的游戏引擎吧 所需资料: cocos2d :下载地址  http://www.oschina.net/p/co ...

  5. Android Studio HelloWorld

    开发第一应用 可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a new Android Studio Project创建工程: 接下来需要输入应用名称(第一个字母要大写 ...

  6. android jni——helloworld

    看了网上好多牛人写的学习系列都是用HelloWorld作为开始,我们这里也用HelloWorld来开始我们的学习,首先我们来介绍下JNI吧. JNI作为java代码和C/C++的桥梁而存在的,为了让j ...

  7. Android—初识AsyncTask

    AsyncTask是用来处理一些后台的比较耗时的任务,给用户带来良好的体验.AsyncTask扩展Thread,增强了与主线程的交互能力. 首先介绍AsyncTask中定义的以下几个方法: onPre ...

  8. Android jni helloworld

    新建Android项目,设置布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android& ...

  9. Android JNI HelloWorld实现

    创建一个JNIDemo的Android工程 在项目下创建一个文件夹jni.(注意必须是jni目录) 在jni目录下创建两个文件:Android.mk 和 first_jni.c(.c文件的名字可以任意 ...

随机推荐

  1. Redis-环境搭建

    Redis官方不提供Windows版,不过微软开源组织提供了Windows版本的Redis,此处将安装Windows版的Reids,供学习使用. 1.下载Windows版Redis安装包: 安装包地址 ...

  2. 移植UC15 3G模块

    https://blog.csdn.net/jack_a8/article/details/43114083 https://wenku.baidu.com/view/7ea5c9cd52d380eb ...

  3. 学以致用一 安装centos7.2虚拟机

    5说来惭愧,也是很久没来博客园了.距离上次写的已经快一年,只能说时间过的真的很快. 而如果这一年一直在坚持认真学习的话,收获肯定很多.然而我确又浪费了很多光阴,不得不恨这人生苦短. 在这一年里,小孩还 ...

  4. Silverlight4.0正式版(Silverlight4_Tools)离线安装

    1.从微软的网站下载Silverlight4_Tools.exe(或者http://download.csdn.net/detail/taomanman/4522848)2.执行Silverlight ...

  5. TCP报文首部详解

    首部固定部分各字段的意义如下: 1.源端口和目的端口,各占2个字节. 2.序号:占4个字节,序号范围为0到2的32次方-1,序号增加到2的32次方-1之后,下一个序号变为0,在一个TCP连接中传送的字 ...

  6. Beta阶段第三篇Scrum冲刺博客-Day2

    1.站立式会议 提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 张晨晨:熟悉代码 郭琪容:了解复习模块需要的部分知识 ...

  7. python 的 字节码 导入使用

    1. python 模块文件可以通过编译为字节码的形式: 名字:model.py x = def funt(): import model print(model.x) x = "zhang ...

  8. Maven提高篇系列之五——处理依赖冲突

    个人分类: Maven 不知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之类的问 ...

  9. Android-Java多线程通讯(生产者 消费者)&等待唤醒机制

    多线程通讯:例如:有一个线程任务在run生产,还有一个线程任务在run消费: VIP尊贵的身份,生产者 消费者 方式,(精心生产制作一个超级无敌好吃的面包,卖给VIP尊贵的身份消费者)生产与消费 一对 ...

  10. MySQL--eq_range_index_dive_limit参数学习

    官方文档如下描述:This variable indicates the number of equality ranges in an equality comparison condition w ...