使用Eclipse + ADT + SDK开发Android APP
使用 Eclipse + ADT(Android Developer Tools)+ Android SDK 开发 Android 应用是一种较老的开发方式,曾经是 Android 开发的标配工具,但在 2015 年 Google 宣布停止支持 ADT,转而推荐 Android Studio。尽管如此,理解 Eclipse + ADT 的开发流程对维护旧项目或学习 Android 开发历史仍有价值。以下是详细的入门讲解,涵盖环境搭建、开发步骤和示例代码,适合初学者或需要使用 Eclipse 的场景。
1. 背景说明
- Eclipse:一个开源的通用 IDE,支持 Java 和插件扩展。
- ADT:Android Developer Tools,Eclipse 的插件,提供 Android 开发支持(如项目管理、模拟器集成)。
- Android SDK:Android 软件开发工具包,包含编译工具、API 库和模拟器。
- 现状:
- ADT 最后更新在 2015 年(版本 23.0.7),不支持最新 Android API(如 API 34)。
- Eclipse + ADT 适合维护旧项目或低版本 Android 开发(API 21 或更早)。
- 推荐:新项目应使用 Android Studio,支持最新 API 和现代工具(如 Gradle、Kotlin)。
2. 开发环境搭建
以下是使用 Eclipse + ADT + SDK 开发 Android 应用的步骤:
2.1 安装 Eclipse
- 下载 Eclipse:
- 访问 Eclipse 官网,下载适合 Java 开发的版本(如 “Eclipse IDE for Java Developers”)。
- 推荐版本:Eclipse 4.4(Luna)或 4.5(Mars),与 ADT 兼容性较好。
- 解压并启动 Eclipse(无需安装)。
- 安装 JDK:
- 下载并安装 JDK 8(推荐,ADT 与较新 JDK 可能不完全兼容)。
- 配置环境变量:
- Windows:设置
JAVA_HOME
(如C:\Program Files\Java\jdk1.8.0_XXX
),将%JAVA_HOME%\bin
添加到PATH
。 - macOS/Linux:在
~/.bashrc
或~/.zshrc
中配置:bash export JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH
- Windows:设置
2.2 安装 Android SDK
- 下载 Android SDK:
- 访问 Android 开发者网站 或其他存档源(如 SourceForge) 下载独立版 Android SDK。
- 解压到本地目录(如
C:\android-sdk
或/home/user/android-sdk
)。
- 配置 SDK:
- 运行 SDK Manager(
android-sdk/tools/android.bat
或android
)。 - 安装目标 API(如 API 19 for Android 4.4),包括:
- Android SDK Platform
- Android SDK Tools
- Android SDK Platform-Tools
- Android SDK Build-Tools
- 模拟器映像(如 ARM 系统映像)
- 可选:安装 Google APIs、Extras(如 Google Play Services)。
2.3 安装 ADT 插件
- 打开 Eclipse:
- 启动 Eclipse,选择工作空间(Workspace)。
- 安装 ADT:
- 打开 “Help” > “Install New Software”。
- 点击 “Add”,输入:
- Name:ADT
- Location:
https://dl-ssl.google.com/android/eclipse/
(可能不可用,需离线安装)。
- 选择 “Developer Tools”,安装 ADT 插件。
- 离线安装(若在线源失效):
- 下载 ADT 插件 ZIP 文件(搜索 “ADT 23.0.7 zip”)。
- 在 “Install New Software” 中选择 “Add” > “Archive”,加载 ZIP 文件。
- 安装后重启 Eclipse。
- 配置 ADT:
- 打开 “Window” > “Preferences” > “Android”。
- 设置 SDK 路径(如
C:\android-sdk
)。 - 验证 SDK 是否正确加载(应显示已安装的 API 级别)。
2.4 配置模拟器或真机
- 模拟器:
- 打开 “Window” > “Android Virtual Device (AVD) Manager”。
- 创建 AVD:
- 选择设备(如 Nexus 5)。
- 选择目标 API(如 Android 4.4 – API 19)。
- 配置 CPU(ARM 或 x86)、RAM 等。
- 启动 AVD 测试。
- 真机:
- 启用设备 “开发者选项” 和 “USB 调试”。
- 安装设备驱动(Windows 需要)。
- 连接设备,Eclipse 应自动识别。
3. 创建 Android 项目
- 新建项目:
- 在 Eclipse 中,选择 “File” > “New” > “Android Application Project”。
- 填写:
- Application Name:应用名称(如 MyApp)。
- Project Name:项目名称。
- Package Name:包名(如
com.example.myapp
)。 - Minimum SDK:最低支持 API(如 API 16)。
- Target SDK:目标 API(如 API 19)。
- Compile With:编译 API。
- Theme:选择 UI 主题(如 Holo)。
- 选择默认 Activity(如 Blank Activity)。
- 项目结构:
- src/:Java 源代码。
- res/:
layout/
:XML 布局文件。values/
:字符串、样式等。drawable/
:图片资源。
- AndroidManifest.xml:应用配置文件。
- libs/:外部 JAR 包。
- project.properties:项目配置(如目标 API)。
4. 示例:简单计数器应用
以下是一个简单的 Android 应用,包含一个按钮和文本,点击按钮增加计数。
4.1 布局文件(res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/counterText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textSize="24sp" />
<Button
android:id="@+id/incrementButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Increment" />
</LinearLayout>
4.2 Activity 代码(src/com/example/myapp/MainActivity.java)
package com.example.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView counterText;
private int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
counterText = (TextView) findViewById(R.id.counterText);
Button incrementButton = (Button) findViewById(R.id.incrementButton);
incrementButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter++;
counterText.setText(String.valueOf(counter));
}
});
}
}
4.3 配置文件(AndroidManifest.xml)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
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>
4.4 运行应用
- 编译:在 Eclipse 中,点击 “Run” > “Run As” > “Android Application”。
- 选择设备:选择 AVD 或连接的真机。
- 调试:
- 使用 Eclipse 的 LogCat 视图查看日志(
Log.d("TAG", "Message")
)。 - 设置断点调试。
5. 异步任务(使用 AsyncTask)
Android 开发中,耗时任务需在后台线程执行。以下是一个使用 AsyncTask
(ADT 时代常用)的示例,模拟网络请求并更新 UI。
5.1 AsyncTask 示例
package com.example.myapp;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.counterText);
new DownloadTask().execute();
}
private class DownloadTask extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute() {
textView.setText("Starting...");
}
@Override
protected String doInBackground(Void... params) {
try {
Thread.sleep(2000); // 模拟耗时任务
return "Task completed!";
} catch (InterruptedException e) {
return "Error: " + e.getMessage();
}
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
}
}
5.2 注意事项
- AsyncTask 局限:API 30 起废弃,易导致内存泄漏。
- 替代方案(现代开发):在 Eclipse 中可使用
Thread
+Handler
,但新项目建议迁移到 Android Studio 使用 Kotlin Coroutines。
6. 关键开发要点
6.1 布局设计
- 使用 XML 定义 UI,支持
LinearLayout
、RelativeLayout
等。 - 注意:ADT 不支持现代
ConstraintLayout
,需手动调整布局。 - 资源引用:
@string/
、@drawable/
、@id/
。
6.2 权限管理
- 在
AndroidManifest.xml
中声明权限:
<uses-permission android:name="android.permission.INTERNET" />
- Android 6.0+(API 23)需动态请求运行时权限(如存储、相机)。
6.3 调试与测试
- LogCat:查看日志,过滤错误。
- AVD Manager:测试不同设备和 API 级别。
- DDMS:分析内存、CPU 使用情况(在 Eclipse 的 Perspective 中)。
6.4 项目管理
- 依赖管理:手动添加 JAR 文件到
libs/
目录(如android-support-v4.jar
)。 - 构建:Eclipse 使用 Ant 或早期 Gradle 构建,配置
project.properties
。
7. 优缺点
优点:
- Eclipse 轻量,适合低配置电脑。
- ADT 提供直观的 Android 开发工具(如 AVD Manager、布局编辑器)。
- 适合维护旧项目(API 19 或更早)。
缺点:
- 过时:ADT 不支持新 API(如 Android 14+)和现代工具(如 Jetpack)。
- 功能有限:缺乏 Android Studio 的 Gradle、LiveData、View Binding 等支持。
- 社区支持减少:问题解决依赖旧文档或论坛。
- 调试复杂:相比 Android Studio,调试工具较弱。
8. 迁移建议
由于 Eclipse + ADT 已过时,建议:
- 迁移到 Android Studio:
- 导入 Eclipse 项目:Android Studio 支持导入 ADT 项目,自动转换为 Gradle 结构。
- 学习 Kotlin 和 Jetpack 组件(如 ViewModel、LiveData)。
- 现代替代工具:
- Kotlin Coroutines:取代 AsyncTask。
- WorkManager:处理后台任务。
- ConstraintLayout:更灵活的布局。
- 维护旧项目:
- 使用 Eclipse + ADT 仅限支持旧设备(如 Android 4.x)。
- 考虑重写关键功能以适配新 API。
9. 扩展示例(带 Intent 跳转)
以下是一个包含两个 Activity 的应用,点击按钮跳转并传递数据。
9.1 第二个 Activity(SecondActivity.java)
package com.example.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView textView = (TextView) findViewById(R.id.resultText);
String data = getIntent().getStringExtra("data");
textView.setText("Received: " + data);
}
}
9.2 第二个布局(res/layout/activity_second.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/resultText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp" />
</LinearLayout>
9.3 修改 MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.incrementButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("data", "Hello from MainActivity");
startActivity(intent);
}
});
}
}
9.4 更新 AndroidManifest.xml
<application ...>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" />
</application>
10. 总结
使用 Eclipse + ADT + Android SDK 开发 Android 应用适合维护旧项目或学习 Android 开发历史。通过配置 Eclipse、安装 ADT 和 SDK,可以快速创建简单的 Android 应用。然而,由于 ADT 已停止更新,功能受限,推荐新项目迁移到 Android Studio,使用 Kotlin 和 Jetpack 组件以支持现代 Android 开发。
如果需要更详细的代码示例(如网络请求、数据库操作)、特定功能实现,或迁移到 Android Studio 的指导,请告诉我!