用Eclipse开发和调试Android应用程序(二)

Android 开发之使用Eclipse Debug调试详解 1.在程序中添加一个断点 如果所示:在Eclipse中添加了一个程序断点 在Eclipse中一共有三种添加断点的方法 第一种: 在红框区域右键出现菜单后点击第一项 Toggle Breakpoint 将会在你右键代码的哪一行添加一个程序断点 (同样的操作方可取消程序断点) 第二种: 在红框区域双击鼠标左键将会在你双击代码的哪一行添加一个程序断点 (同样的操作方可取消程序 阅读详情

 

二、 创建 Android Eclipse 工程

请参考小生的《Android SDK 2.3与Eclipse最新版开发环境搭建(五)》,博文地址:http://blog.sina.com.cn/s/blog_573860a90100ownd.html or http://blog.youkuaiyun.com/deaboway/archive/2011/01/30/6170449.aspx

三、 工程结构详细解析

1. 工程结构

在Eclipse的Java透视图中,可以看到工程的Package Explorer如下图:

clip_image002

具体包括:

src 文件夹 - 包含示例应用程序的包,即org.deaboway.test。

R.java - Android Developer Tools 自动创建这个文件,它提供访问 Android 应用程序的各种资源所需的常量。后面会详细讨论 R 类与资源之间的关系。

HelloAndroidWorld.java - 应用程序的主活动类的实现。

Referenced libraries - 包含 android.jar,这是 Android SDK 中的 Android 运行时类的 jar 文件。

res 文件夹 - 包含应用程序的资源,包括:

· drawable - 图标:这个文件夹包含图形文件,比如图标和位图。

· layout - 布局文件:这个文件夹包含表示应用程序布局和视图的 XML 文件。

· values - 字符串:这个文件夹包含 strings.xml 文件。这是为应用程序实现字符串本地化的主要方法。

AndriodManifest.xml - 示例应用程序的部署描述符。

default.properties 和proguard.cfg – 从2.3版本以后,android sdk 本身包含proguard,可以通过正常的编译方式也能实现代码混淆,我们可以看到android-sdk-windows/tools/下面多了一个proguard文件夹。防止反编译工具进行反编译,保证代码安全。

2. 主类分析

这个示例应用程序由一个Activity(活动)组成,即HelloAndroidWorld。正如前面提到的,HelloAndroidWorld类是在HelloAndroidWorld.java 文件中实现的。

package org.deaboway.test;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView ;

public class HelloAndroidWorld extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super .onCreate(savedInstanceState);

// TextView textView = new TextView(this);

// textView.setText("Hello Android World!");

// setContentView(textView);

setContentView(R.layout.main );

}

}

在这个源代码片段中,要注意几点:

  • HelloAndroidWorld 是一个普通的 Java 类,包含包和导入语句。
  • HelloAndroidWorld 扩展 android.app 包中的 Android 基类 Activity。
  • onCreate() 方法是这个活动的入口点,它接受一个 Bundle 类型的参数。Bundle 类本质上是 map 或 hashmap 的包装器。在这个参数中传递构造活动所需的元素。这里暂时不讨论这个参数。
  • setContentView() 负责用 R.layout.main 参数创建主 UI。R.layout.main 是应用程序资源中主布局的标识符。

3. R.java文件

R.java 文件是在构建时自动创建的,所以不要手工修改它,因为所有修改都会丢失。本实例的R.java文件内容如下:

/* AUTO-GENERATED FILE. DO NOT MODIFY.

*

* This class was automatically generated by the

* aapt tool from the resource data it found. It

* should not be modified by hand.

*/

package org.deaboway.test;

public final class R {

public static final class attr {

}

public static final class drawable {

public static final int icon =0x7f020000;

}

public static final class layout {

public static final int main =0x7f030000;

}

public static final class string {

public static final int app_name =0x7f040001;

public static final int hello =0x7f040000;

}

}

R 类包含一些匿名子类,每个子类包含前面描述的各种资源的标识符。注意,这些类都是静态的。

请注意 R.layout.main 代表的元素。这个标识符代表由 main.xml 定义的布局。在活动的 onCreate 方法中可以使用这个值:setContentView(R.layout.main)。这就是在运行时把特定的活动(这里是HelloAndroidWorld)和特定的布局(主布局)联系在一起的方法。

4. main.xml文件

本示例应用程序包含一个活动和一个视图。应用程序包含一个名为 main.xml 的文件,它代表活动的主 UI 的视觉方面。

注意,在 main.xml 中没有指定在哪里使用这个布局。这意味着,如果需要的话,可以在多个活动中使用它。

"1.0" encoding="utf-8" ?>

"http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

 

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

 

这是最简单的布局,其中只有一个垂直的线性布局,这意味着所有元素排成一列。这里有一个 TextView 元素,它与其他开发环境中的标签类似。TextView 代表不可编辑的静态文本。

注意,每个视图元素(比如这个示例中的 LinearLayout 和 TextView)都有属于 Android 名称空间的属性。一些属性是所有视图元素都有的,比如 android:layout_width 和android:layout_height。这些属性可以采用的值是:

fill_parent - 使视图元素占满可用的空间。也可以认为这就是 “拉伸”。

wrap_content - 这个值让 Android 把元素一个接一个地排列,不进行拉伸。

5. AndroidManifest.xml文件

AndroidManifest.xml 文件是 Android 应用程序的部署描述符。这个文件列出应用程序中包含的所有Activity(活动)、ContentProvider(内容提供程序)、BroadcastReceiver(广播接收器)与Service(服务),以及应用程序支持的 IntentFilter。下面是这个示例应用程序的完整的 AndroidManifest.xml 文件。

"1.0" encoding="utf-8" ?>

"http://schemas.android.com/apk/res/android"

package="org.deaboway.test"

android:versionCode="1"

android:versionName="1.0" >

"@drawable/icon" android:label="@string/app_name" >

".HelloAndroidWorld"

android:label="@string/app_name" >

 

"android.intent.action.MAIN" />

"android.intent.category.LAUNCHER" />

 

 

 

 

  • 这里指定了源文件中的包名。采用与 Java 源文件和导入语句相似的模式。 标记的实际作用是 “导入” 这个包中的类。在这个文件中,所有非完全限定的类都属于 package 属性指定的包。
  • 标记的一个属性引用了应用程序的一个资源。请注意 drawable 标识符前面的 @ 符号。这里的意思是,在应用程序资源的 drawable 文件夹中寻找名为 “icon” 的资源。
  • 标记包含以下属性和值:
    • android:name表示实现这个活动的 Java 类。
    • android:label 是应用程序的名称。注意,它来自一个字符串资源。string.xml 文件包含应用程序的本地化字符串。
    • 表示应用程序中可用的 IntentFilter。这是 Android 应用程序中最常见的 IntentFilter。这个过滤器的实际意思是,它实现 “主” 操作(也就是入口点),而且它位于 OS 的启动器中。这意味着可以在 Android 设备上像启动其他应用程序一样,从应用程序主列表中启动它。

四、 应用程序调试

要想检查正在运行的应用程序中发生了什么情况,就需要查看正在运行的 Dalvik VM。在 Eclipse 中,选择 Window > Open Perspective > Other。在出现的对话框中选择 DDMS。这会在 Eclipse 中打开一个新的透视图,其中有许多有趣的窗口。

DDMS 为IDE和Emultor(or GPhone)架起来了一座桥梁。Developer可以通过DDMS看到目标机器上运行的进程/线程状态:可以让Eclipse程序连接到开发机上运行;可以看进程的heap信息、logcat信息、进程分配内存情况;可以像目标机发送短信、发送地理位置信息以及打电话;可以像gdb一样attach 某一个进程调试。

下面简要介绍一下 DDMS 透视图中提供的资源:

1. Devices

Device 中罗列了Emulator中所有的进程,选项卡右上角那一排按钮分别为:Debug the selected process调试进程、Update Heap更新进程堆栈信息、Dump HPROF file检查HPROF(Heap/CPU Profiling Tool)文件、Cause GC调用垃圾回收、更新进程Update Threads、Start Method Profiling开始方法分析、Stop Process停止某个进程,和Screen Capture抓取 Emulator目前的屏幕。当你选中某个进程,并按下调试进程按钮时,如果eclipse中有这个进程的代码,那就可以进行源代码级别的调试。有点像 gdb attach。图片抓取按钮可以把当前android的显示桌面抓到你的机器上,也是非常有用。

clip_image004

这里可以查看到所有与DDMS连 接的终端的详细信息,以及每个终端正在运行的APP进程,每个进程最右边相对应的是与调试器链接的端口。因为Android是基于Linux内核开发的操 作平台,同时也保留了Linux中特有的进程ID,它介于进程名和端口号之间。

DDMS监听第一个终端App进程的端口为8600,APP进程将分配8601,如果有更多终端或者更多APP进程将按照这个顺序依次类推。DDMS通过8700端口(”base port”)接收所有终端的指令。

2. Emulator Control

通过这个面板的一些功能可以非常容易的使测试终端模拟真实手机所具备的一些交互功能,比如:接听电话,根据选项模拟各种不同网络情况,模拟接受SMS消息和发送虚拟地址坐标用于测试GPS功能等。

clip_image006

Telephony Status: 通过选项模拟语音质量以及信号连接模式。

Telephony Actions: 模拟电话接听和发送SMS到测试终端。

Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式:

· Manual: 手动为终端发送二维经纬坐标。

· GPX: 通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。

· KML: 通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。

如:在Emulator Control/Telephony Actions 中输入如上图内容“Android 中文”,单击发送后,在Android模拟器中打开Messaging,看到下面的短信:

clip_image008

3. 文件管理器

显示文件系统信息。File Explorer非常有用:它可以把文件上传到Android、或者从Android上下载文件下来、也可以进行文件删除操作。选项卡右上角有上传、下载、删除三个按钮。一般情况下,File Explorer会有如下三个目录:data、sdcard、system。

· data对应手机的RAM,会存放Android OS 运行时的Cache等临时数据(/data/dalvik-cache目录);没有root权限时apk程序安装在/data/app中(只是存放apk 文件本身);/data/data中存放Android中所有程序(系统apk+第三方apk)的详细目录信息。

· mnt是mount,挂装的意思,mnt目录下的 sdcard对应sd卡。

· system对应手机的ROM,OS以及系统自带apk程序等存放在这里。

用户应用程序部署在 /data/app 目录中,而 Android 内置的应用程序部署在 /system/app 目录中。

clip_image010

4. Threads、Heap、Allocation Tracker

Threads视图列出当前进程的所有线程。

Heap视图展示一些堆的状态,在垃圾回收其间更新。当选定一个虚拟机时, VM Heap视图不能显示数据,可以点击右边面包上的带有绿色的”Show heap updates”按钮,然后在点击”Cause GC “实施垃圾回收更新堆的状态。

在Allocation Tracker视图里,我们可以跟踪每个选中的虚拟机的内存分配情况。点击”Start Tracking”后点击”Get Allocations “就可以看到。

例如,为了查看Garbage Collection信息:点击 [Start Tracking]按钮 -> 保持程序运行一段时间后 ->点击[Get Allocations] 按钮,凭借得到的Allocations信息可以通过Line Number准确找到哪里的代码出现了问题。

clip_image012

5. LogCat

LogCat 是一个日志文件,它记录 VM 中发生的活动。应用程序可以通过 Log.i(tag,message); 在这个日志文件中添加自己的日志项,其中的 tag 和 message 都是 Java 字符串。Log 类属于android.util.Log 包。

clip_image014

6. Console

Android输出的信息,加载程序等信息。

clip_image016

Eclipse Android开发入门手册 Eclipse Android开发入门手册 资源下载http://tools.android-studio.orgjdk,Android SDK,开发工具eclipse、Android studio、idea  配置java环境搜索jdk安装对应的包,参照http://www.runoob.com/java/java-environment-setup.html  配置环境 安装eclipse和A... 阅读详情

相关推荐

未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录

这个事就发生在前两天,我们公司的wifi模块被客户用到了咖啡机上,客户寄了一台整机给我们协助调试,还送了几包咖啡豆,本想着还能打个咖啡喝一喝的,但就在咖啡机刚寄过来第一天,就出事了。而这个事故的发生,竟然仅仅是因为同事接了个串口模块到电脑调试打印导致的。谁也想不到,这个3.3V的供电的wifi模块居然还有这么大的威力。直接将usb转TTL串口模块的转换芯片给爆开了,咖啡机也给弄坏了,据同事描述当时情况就只见到一片火光和一声巨响,状况比较惨烈,所幸的是笔记本电脑没有烧坏,但是直接给崩蓝屏了。 ...

fangye945a的博客 6191

Android源码APK剥离到eclipse调试运行教程

本文主要介绍了如何从Android源码中剥离APK到eclipse中调试运行的流程,至于如何剥离到Android studio 也欢迎大家讨论

Someday_spark的博客 950

Axure RP9汉化+授权全攻略:从下载到激活一步到位(附最新授权码)

本文提供Axure RP9从下载安装到界面汉化的完整指南,帮助设计师和产品经理快速上手这款原型设计工具。详细讲解了如何安全获取软件、执行汉化操作、理解核心界面布局,并介绍了创建交互原型和生成HTML文件的基础步骤,助力用户高效开展设计工作。

cuda7parallel的博客 1140

Android逆向系列之动态调试3–Eclipse调试apk

一、反编译APK 这里反编译的时候要记得带上 -d参数,以便动态调试 apktool d -d demo.apk 二、添加属性 在AndroidManifest.xml的application添加属性:android:debuggable=”true” 三、添加调试语句 在主Activity的OnCreate函数下一行添加: a=0;// invoke-static

nangongyanya的专栏 1901

功率开关管驱动串扰(Crosstalk):深度解析与优化方案

介绍了功率开关器件驱动串扰产生机理,并整理了常见的工程应用优化措施

qq_38326420的博客 555

神州数码防火墙(DCN)NAT SSL-VPN配置

SSL-VPN是基于应用层的VPN,采用SSL协议来实现远程接入的一种新型VPN技术,比L2TP更加灵活的VPN方案。是天然的安全远程接入方案。用户可以通过浏览器的HTTPSs登录VPN的网址。SSL-VPN的认证方式包括LDAP,radius,CA,USB Key等方式。 SSL VPN的主要应用场景是保证远程用户能够在企业外部安全\高效的访问企业内部的网络资源

qq_50966485的博客 4557

Eclipse调试技巧总结

Eclipse调试技巧总结   一、调试APK 准备工作:Eclipse,APK的源代码,真机。 注意:手机里的apk和源代码版本要一致,也就是说手机里面的应用是用调试时用到的代码编译出来的,否则断点可能会不生效。 步骤: 1.    新建一个android工程:   代码的路径可以直接选择服务器上代码的地址,这样的好处是改了之后直接在服务器

BangNiBonnie的博客 472

FastAPI 极简教程(偏实战,一篇搞定)

本文是一篇FastAPI实战教程,通过最少的概念讲解快速掌握FastAPI的核心功能。文章首先介绍FastAPI是基于Starlette和Pydantic的高性能Python API框架,具有自动生成文档、类型驱动校验、异步支持和依赖注入等优势。教程从安装环境开始,演示了如何创建最小项目并编写第一个"Hello World"接口。接着详细讲解了路由参数处理(Path/Query/Body)、Pydantic数据模型校验、响应模型控制、状态码设置等核心功能。在高级功能方面,重点介绍了错误处

AI天才研究院 812

[Android] 反编译apk + eclipse中调试smali

ESR研发中心 CTO兼创始人 王加杉 201

【NVIDIA-GB200-1】国内第一份生产环境实战安装配置教程,配置安装脚本,nvidia gb200配置教程-复制即用;gb200驱动安装

GB200 的高性能通信依赖。

jundao1997的专栏 704

【图像超分】论文复现:经典超分 | SAN的Pytorch源码复现,跑通源码,适配高版本的python/pytorch/cuda,使用EDSR-PyTorch进行训练和测试

本文介绍了单幅图像超分辨率重建方法SAN(二阶注意网络)的代码实现。文章详细说明了在高版本Python/Pytorch环境下适配SAN源码的方法,并提供了修改后的完整代码和预训练模型下载链接。 主要亮点包括: 将SAN模型实现整合到EDSR-Pytorch框架中,解决了高版本环境下的兼容性问题 提供了完整的数据集准备指南(DIV2K训练集和5个测试集) 给出了详细的测试命令,涵盖x2、x3、x4不同放大倍率 公开了预训练模型和可视化结果的下载资源 提供了修改后的适配高版本环境的代码。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1412

Android开发基础之Eclipse单元测试

假设已经实现了一个计算百分比功能需要测试,代码: public class ProgressService { public Integer getCurrentProgerss(double current, double max) { Integer i=(int)((current / max) * 100) ; return i; } }

寒风的技术博客 1233

信息安全管理与评估赛题解析-单机取证(含环境)

链接:https://pan.baidu.com/s/1OMzIq884dW2vAiUp0k2Ppg。链接:https://pan.baidu.com/s/1i5daMqhD53wYeQ6hYzRK6Q。链接:https://pan.baidu.com/s/1QFAjdQZK4sJ-gGRP42XPKA。链接:https://pan.baidu.com/s/1BSXvqN2ZGCQXewgFULoeyQ。链接:https://pan.baidu.com/s/1g9zu5ngBz_KMjW1eBMkJAw。

Brucye 1834

用Eclipse开发和调试Android应用程序(二)(转)

二、 创建 Android Eclipse 工程 请参考小生的《Android SDK 2.3与Eclipse最新版开发环境搭建(五)》,博文地址:http://blog.sina.com.cn/s/blog_573860a90100ownd.html or http://blog.youkuaiyun.com/deaboway/archive/2011/01/30/6170449.aspx 三、

xiaohaozi7107的专栏 824

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用Eclipse开发Android应用程序

本教程介绍了Eclipse环境中的Android应用程序开发,包括两个示例应用程序的构建。 第一个是基本的入门应用程序,包括构建和调试的所有阶段。 第二个应用程序检查了Android的更复杂功能,包括联系人搜索和Google Maps地址查找。 为了从本教程中获得最大收益,移动开发经验会有所帮助,但不是必需的。 Android应用程序需要Java™编程技能,但本教程不是明确要求。 关于本教...

cuxiong8996的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

eclipse开发安卓android程序环境

一、.安装JDK,不再赘述 二、安装eclipse,不再赘述 三、安装SDK,也就是安卓开发库 1.下载并安装AndroidSDK 首先,下载Android SDK Tools,翻过墙的朋友可以去Google Android的官网上下载(http://developer.android.com/sdk/index.html)。不愿意翻墙的朋友,可以去我的bd网盘上下载(http://pan.baidu.com/s/1nt8BcBB),或者去这个网站下载(http://www.androiddevtools.

pz641的博客 7265

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android开发和调试

开发和调试<br />这一节将介绍在android上开发调试应用程序。它将教会我们如何创建,编译,运行以及调试android代码。或者,你也可以从Hello Android tutorial.开始<br /> 主要内容在eclipse上开发android 应用程序利用其他IDE和工具开发android应用程序 给应用程序签名ApiDemo 示例程序用法调试设备上的调试和测试设置顶端调试技巧编译安装一个android应用程序移除android程序Eclipse 技巧在eclipse上开发Android应用程序

gamecicn的专栏 3万+

用Eclipse开发和调试Android应用程序(一)

前面介绍了Windows环境下,基于Android SDK(2.3) 和 Eclipse(helios)的Android开发环境的搭建,并创建了第一个应用程序Hello Android World。具体挺参考小生的blog:http://blog.sina.com.cn/deaboway 或者http://blog.youkuaiyun.com/deaboway。 现在,我们已经可以使用Eclipse来创建和开发Android应用程序,本文将仍以Hello Android World工程来深入解析Eclipse中

no pain no gain no Gavin 6507

Windows 下使用 Eclipse 进行安卓开发环境搭建

摘要:本文详细介绍了在Windows系统下使用Eclipse搭建安卓开发环境的完整流程。由于Google已停止对Eclipse ADT的支持,该指南主要适用于旧项目维护和学习目的。内容包括环境要求、Java JDK安装、Eclipse配置、ADT插件安装(提供在线/离线/手动三种方式)、SDK管理、项目创建及模拟器配置等关键步骤。特别提供了版本兼容性建议、国内镜像源配置、性能优化参数等实用技巧,并附有详细的命令行操作和目录结构说明。适合需要在资源受限环境中进行传统安卓开发的用户参考。

深山技术宅的博客 1745

Eclipse开发Android应用程序入门

Eclipse开发Android应用程序入门 By Chris Blunt 翻译:赵锟 原文出处:http://www.smashingmagazine.com/2010/10/25/get-started-developing-for-android-with-eclipse/ 如今的移动设备应用程序开发充满着让人振奋的东西。功能强

lqxandroid2012的专栏 2万+

用Eclipse开发Android应用程序 - Google Android Development Tools Eclipse 插件入门~

用Eclipse开发Android应用程序 - Google Android Development Tools Eclipse 插件入门~ Android 是 Google 提供的移动、无线、计算机和通信平台。通过使用 Android Eclipse 插件,可以在强大的 Eclipse 环境中构建 Android 应用程序。本教程介绍如何用 Eclipse 插件 And

Python名人堂 2917
上一篇: 用Eclipse开发和调试Android应用程序(一)
下一篇: 用Eclipse开发和调试Android应用程序(二)
周三山
博客等级 码龄23年 303粉丝 40原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值