ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

从零开始:使用Android Studio构建首个天气查询应用

2026/8/10 11:12:47 拓冰建站 浏览量
从零开始:使用Android Studio构建首个天气查询应用 1. 项目概述从零构建你的第一个安卓应用2003年安迪·鲁宾创立安卓系统时可能没想到如今全球会有超过30亿台活跃设备运行这个绿色机器人标志的系统。作为移动开发领域的绝对霸主安卓开发已成为程序员必备技能之一。这个教程将带你用最新版Android Studio2023.3.1完成首个具备完整交互功能的APP从环境搭建到最终打包APK全程避开我当年踩过的那些坑。不同于其他教程假设你已经掌握Java基础我会特别说明每个代码片段对应的编程概念。你最终将做出一个带按钮点击事件、页面跳转和简单数据传递的天气查询应用虽然界面简陋但包含了90%安卓应用都具备的核心要素。整个过程不需要任何付费工具你的电脑只要能运行Win10或macOS Big Sur即可。重要提示安装Android Studio时务必确保磁盘剩余空间大于8GBSDK和模拟器会占用大量存储。我见过太多新手卡在安装环节就因为C盘空间不足。2. 开发环境配置2.1 Android Studio安装详解访问官网developer.android.com/studio下载时你会看到两个版本包含Android SDK的完整包约1GB仅IDE的基本包建议选这个后面单独下载SDK选择后者能避免默认安装过时的SDK版本。安装过程中有三个关键选项需要特别注意安装类型选择勾选Standard模式会让IDE自动下载最新SDK但可能包含你不需要的组件。我推荐Custom后手动勾选Android SDKAndroid Virtual DevicePerformanceIntel HAXM或AMD HypervisorSDK组件选择至少勾选Android SDK Platform 34对应Android 14Sources for Android 34查看源码用Android EmulatorAndroid SDK Build-Tools 34.0.0硬件加速配置根据CPU型号选择Intel处理器启用HAXMAMD处理器启用Hypervisor苹果M系列无需特别设置安装完成后别急着创建项目先到Configure → SDK Manager检查以下项目SDK Platforms选项卡确认Android 14已安装SDK Tools选项卡确保Android SDK Command-line Tools已勾选2.2 解决首次运行的典型问题新手常遇到的三个拦路虎及解决方案问题1Gradle构建卡在Downloading gradle-x.x.x-all.zip原因国内网络访问Gradle服务器不稳定解决方案1. 手动下载对应版本zip包版本号看报错信息 2. 放入C:\Users\你的用户名\.gradle\wrapper\dists\gradle-x.x.x-all\一串随机字符\ 3. 重启Android Studio问题2模拟器启动黑屏尝试以下步骤关闭Windows Hyper-V功能在BIOS中开启VT-x虚拟化支持删除现有AVD新建时选择x86_64系统镜像问题3中文乱码修改安装目录下bin/idea.properties文件追加-Dfile.encodingUTF-8 -Dsun.jnu.encodingUTF-83. 创建首个项目3.1 项目模板选择启动Android Studio后选择New Project你会看到各种模板Empty Activity最干净的单页面推荐新手选这个Basic Activity带导航抽屉和悬浮按钮Bottom Navigation底部Tab布局我们选择Empty Activity注意三个关键配置项Name首字母大写的驼峰命名如MyFirstAppPackage name逆域名格式com.yourdomain.appnameSave location路径不要包含中文或空格Language选Java虽然Kotlin是趋势但Java资料更丰富Minimum SDK选API 26Android 8.0覆盖90%以上设备点击Finish后Gradle会开始构建项目可能需要几分钟。构建完成后主要目录结构如下app/ ├── manifests/ │ └── AndroidManifest.xml # 应用配置入口 ├── java/ │ └── com.../ │ ├── MainActivity.java # 主界面代码 ├── res/ │ ├── drawable/ # 图片资源 │ ├── layout/ # 界面XML文件 │ ├── mipmap/ # 应用图标 │ └── values/ # 颜色/字符串等资源3.2 认识关键文件AndroidManifest.xml相当于应用的身份证manifest ... application android:iconmipmap/ic_launcher !-- 应用图标 -- android:labelstring/app_name !-- 应用名称 -- activity android:name.MainActivity android:exportedtrue !-- 允许其他应用启动 -- intent-filter action android:nameandroid.intent.action.MAIN / category android:nameandroid.intent.category.LAUNCHER / /intent-filter /activity /application /manifestMainActivity.java的主干结构public class MainActivity extends AppCompatActivity { Override // 当界面创建时调用 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 加载布局文件 // 在这里添加你的代码 } }activity_main.xml的典型内容androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/android android:layout_widthmatch_parent android:layout_heightmatch_parent TextView android:idid/textView android:layout_widthwrap_content android:layout_heightwrap_content android:textHello World! app:layout_constraintBottom_toBottomOfparent app:layout_constraintLeft_toLeftOfparent app:layout_constraintRight_toRightOfparent app:layout_constraintTop_toTopOfparent / /androidx.constraintlayout.widget.ConstraintLayout4. 构建天气查询应用4.1 界面设计修改res/layout/activity_main.xml添加以下控件一个EditText用于输入城市一个Button用于触发查询一个TextView用于显示结果一个ProgressBar用于加载状态完整代码LinearLayout android:layout_widthmatch_parent android:layout_heightmatch_parent android:orientationvertical android:padding16dp EditText android:idid/cityInput android:layout_widthmatch_parent android:layout_heightwrap_content android:hint输入城市名称/ Button android:idid/queryButton android:layout_widthwrap_content android:layout_heightwrap_content android:layout_gravitycenter_horizontal android:text查询天气/ ProgressBar android:idid/loadingBar android:layout_widthwrap_content android:layout_heightwrap_content android:layout_gravitycenter_horizontal android:visibilitygone/ TextView android:idid/resultText android:layout_widthmatch_parent android:layout_heightwrap_content android:layout_marginTop16dp android:textSize18sp/ /LinearLayout4.2 添加按钮逻辑在MainActivity.java中实现点击事件public class MainActivity extends AppCompatActivity { private EditText cityInput; private Button queryButton; private ProgressBar loadingBar; private TextView resultText; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化视图 cityInput findViewById(R.id.cityInput); queryButton findViewById(R.id.queryButton); loadingBar findViewById(R.id.loadingBar); resultText findViewById(R.id.resultText); // 设置按钮点击监听 queryButton.setOnClickListener(v - { String city cityInput.getText().toString().trim(); if (city.isEmpty()) { Toast.makeText(this, 请输入城市名称, Toast.LENGTH_SHORT).show(); } else { queryWeather(city); } }); } private void queryWeather(String city) { loadingBar.setVisibility(View.VISIBLE); resultText.setText(); // 模拟网络请求 new Handler().postDelayed(() - { loadingBar.setVisibility(View.GONE); String mockResult city 天气晴 25℃\n空气质量良; resultText.setText(mockResult); }, 1500); } }4.3 添加网络权限真实的天气查询需要网络访问在AndroidManifest.xml中添加uses-permission android:nameandroid.permission.INTERNET /注意Android 6.0需要动态申请危险权限但INTERNET属于普通权限只需声明即可。5. 调试与优化5.1 使用Logcat查看日志Android Studio底部的Logcat窗口是排查问题的利器。在代码中添加日志Log.d(WeatherApp, 开始查询城市 city);通过过滤器可以快速定位你的日志按标签过滤tag:WeatherApp按级别过滤level:DEBUG5.2 解决常见编译错误错误Cannot resolve symbol R清理项目Build → Clean Project重建项目Build → Rebuild Project检查XML文件中是否有错误错误ActivityNotFoundException检查AndroidManifest.xml是否声明了Activity确认Activity的exported属性设置正确5.3 内存泄漏预防在Activity中使用Handler时要注意// 错误写法匿名内部类会隐式持有Activity引用 handler.postDelayed(new Runnable() { Override public void run() { // 如果Activity已销毁这里会导致内存泄漏 } }, 10000); // 正确写法使用静态内部类 private static class MyRunnable implements Runnable { private final WeakReferenceMainActivity activityRef; MyRunnable(MainActivity activity) { this.activityRef new WeakReference(activity); } Override public void run() { MainActivity activity activityRef.get(); if (activity ! null !activity.isFinishing()) { // 安全操作 } } }6. 打包与发布6.1 生成签名APK点击Build → Generate Signed Bundle / APK选择APK新手建议先不选Android App Bundle创建新密钥库路径建议放在项目根目录密码至少8位字符别名自定义名称有效期默认25年选择构建类型Debug测试用自动签名Release发布用选择签名版本V1Jar Signature必须勾选V2Full APK Signature建议勾选6.2 测试安装将生成的APK文件通常在app/release/目录下传输到手机安装。如果安装失败检查手机是否开启了允许未知来源应用安装是否与现有debug版本冲突包名相同但签名不同minSdkVersion是否高于手机系统版本6.3 发布到应用市场虽然我们这个练习项目还达不到上架标准但了解基本流程注册开发者账号Google Play需要一次性支付$25准备素材512x512像素应用图标至少2张截图1080x1920功能描述文案在Google Play Console创建应用上传签名的APK或AAB文件填写内容分级问卷提交审核通常需要1-3天7. 进阶学习建议完成这个基础项目后你可以继续扩展连接真实天气API使用Retrofit库发起网络请求解析JSON响应数据添加网络状态检查增加数据持久化使用SharedPreferences存储最近查询记录学习Room数据库框架优化UI体验添加下拉刷新功能实现天气图标动画支持主题切换学习架构组件ViewModel管理界面数据LiveData实现数据观察使用Repository模式分离数据源推荐的学习路线图先掌握Java核心语法面向对象、集合、IO学习Android四大组件Activity、Service、Broadcast、ContentProvider深入理解Fragment和ViewModel掌握主流开源库Retrofit、Glide、Room学习性能优化技巧内存管理、启动优化