gradle/wrapper/gradle-wrapper.properties

技术清醒派
2025-06-14 13:44
阅读 636

从零开始玩转Android Studio:一个老码农的入门手记

从零开始玩转Android Studio:一个老码农的入门手记

作为一名有几年经验的全栈开发工程师,我曾经也是一名刚接触 Android Studio 的小白。回想当初第一次打开这个 IDE 时,看到那一堆密密麻麻的窗口、菜单和配置项,心里真的有点发怵——它看起来比 IntelliJ IDEA 还复杂得多!不过别担心,今天我就是来带你一步步揭开它的神秘面纱。

这篇文章是我结合自己这几年实际项目开发中的踩坑经历写出来的,特别适合刚刚接触 Android 开发的新手朋友。如果你是一个前端转移动端的同学,或者是一个刚入行的新人程序员,那么这篇内容可能会让你少走很多弯路。

初识 Android Studio:我的第一印象

第一次接触 Android Studio 是在 2018 年,那个时候公司决定做一个企业内部使用的考勤 App,我作为后端出身,被临时拉来做前端部分的工作。为了能快速上手,我选了最主流的原生开发工具——Android Studio。

当时的版本是 3.1 左右,整个 UI 给我的第一感觉就是“臃肿”。左侧是一棵复杂的项目结构树,中间是代码编辑区,右边还有各种预览窗、变量监视器、布局设计器……更别说底部的各种标签页了。

第一个问题很快就出现了:

“为什么我在创建新项目的时候,选择不同的模板,生成的目录结构不一样?这些 fragment 啊、binding 啊、viewModel 啊都是什么鬼?”

这其实是一个新手很常见的困扰。别急,我们慢慢来。


Hello World:我们的第一个 App

刚开始学任何一门语言,通常都会先写一个 "Hello World",Android 也不例外。

第一步:安装和环境配置

这里我强烈建议你使用 最新稳定版的 Android Studio(比如目前是 Flamingo 版),官方对 Kotlin 支持更好,而且有很多新的功能改进,例如 Jetpack Compose 集成体验提升了不少。

安装完之后,首先要做的是:

  1. 安装必要的 SDK(建议至少安装 SDK 29 及以上)
  2. 安装 Build-Tools、CMake 和 NDK(如果你要搞底层或跨平台)
  3. 配置 Gradle(建议使用较新的 8.x 系列)

小贴士:在国内下载 SDK 很慢的话,可以考虑设置国内镜像源,如中科大、清华的镜像,速度会快很多。

第二步:创建一个新项目

你可以选择 Empty Activity 模板,这样生成的代码相对简洁一些。

选择好你的项目名称、包名、保存路径、语言类型(Kotlin 或 Java)之后,点击 Finish,等待几秒钟,Android Studio 就会为你生成一个初始项目结构:

MyFirstApp/
├── build.gradle (Project)
├── settings.gradle
├── gradle.properties
├── app/
│   ├── build.gradle (Module)
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/包名/
│   │   │   ├── res/
│   │   │   └── AndroidManifest.xml
│   │   └── test/
│   └── ...
└── ...

应用商店发布流程-1

第三步:运行你的应用

你可以连接一台真实设备,也可以使用内置模拟器。

点击顶部工具栏的 Run 按钮(绿色三角),Studio 会自动编译项目,并启动应用。如果一切顺利,你应该能看到默认显示的 Hello World 文字。


实战一回:加个按钮点一点

为了让你更熟悉整个流程,我们来简单实现一个带按钮的页面,点击按钮改变文本。

布局文件(XML)

res/layout/activity_main.xml 中修改布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/textViewHello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:textSize="24sp"/>

    <Button
        android:id="@+id/buttonChangeText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点我!"/>
</LinearLayout>

Java/Kotlin 控制逻辑

假设你选择了 Kotlin,对应的 MainActivity.kt 文件如下:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val textView = findViewById<TextView>(R.id.textViewHello)
        val button = findViewById<Button>(R.id.buttonChangeText)

        button.setOnClickListener {
            textView.text = "点击成功啦~"
        }
    }
}

运行一下试试看?是不是很有成就感?


我遇到的第一个坑:Gradle 同步失败

在我第一次尝试构建项目时,遇到了一个问题:Gradle sync failed!

控制台提示说找不到某个插件版本,大概是下面这样的错误信息:

Could not find method implementation() for arguments [androidx.core:core-ktx:+]

查了半天发现是因为没有设置正确的 Gradle 版本号和插件版本不匹配。

解决方法:

  1. 打开 build.gradle (Project) 文件,确认 classpath 使用了合适的 AGP(Android Gradle Plugin)版本
  2. gradle-wrapper.properties 中指定合适的 Gradle 版本

我当时用的是:

// build.gradle(Project)
classpath 'com.android.tools.build:gradle:8.0.2'

对应的 Wrapper 版本是 8.0:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip

Gradle 插件和 Gradle 版本一定要对应起来,否则会出现各种同步问题。这个问题我踩了很多次,后来干脆写了个备忘录放在桌面上 😅。


从 XML 到 Jetpack Compose:现代开发范式转变

去年公司又接了一个项目,这次是面向年轻用户的社交型记账 App。考虑到团队规模小、迭代频繁,我们决定采用 Jetpack Compose 来开发 UI。

说实话,一开始我还挺抵触这个的,总觉得用声明式编程写 UI 怪怪的。但真正用了才发现,Compose 真香!

举个简单的例子:同样是上面那个“点按钮改文字”的需求,在 Compose 中我们可以这么写:

@Composable
fun MainContent() {
    var text by remember { mutableStateOf("Hello World!") }

    Column(
        modifier = Modifier.padding(16.dp)
    ) {
        Text(text = text, fontSize = 24.sp)
        Spacer(modifier = Modifier.height(16.dp))
        Button(onClick = { text = "点击成功啦~" }) {
            Text("点我!")
        }
    }
}

是不是干净多了?而且不用再写一堆 XML 和 findViewById 啦。

不过要注意的是:

  • Compose 对版本兼容性要求比较高,你需要确保所有的依赖库都支持 Compose。
  • 如果你要适配低版本系统(如 Android 5.x),有些 Compose 功能可能不支持,需要做降级处理。

多设备适配:别让布局“露馅儿”了

有一次上线前测试,我们在 Pixel 上跑得好好的界面,到了小米手机上直接乱套了:文字超出边界、按钮错位、甚至有的控件不见了……

这就是典型的多屏幕适配问题

解决方案主要有:

  1. 使用 ConstraintLayout 做主布局,它可以更好地适配不同分辨率。
  2. 配合尺寸限定符(如 values-sw320dp, values-sw600dp)定义不同资源。
  3. 避免固定宽高,优先使用 match_parent / wrap_content + margin/padding 调节间距
  4. 使用 sp 单位表示字体大小,dp 表示布局尺寸

举个简单的适配技巧:

<!-- res/values-dimens.xml -->
<dimen name="text_size">24sp</dimen>

<!-- res/values-sw600dpx-mdpi/dimens.xml -->
<dimen name="text_size">32sp</dimen>

这样在平板上就会自动使用更大的字号。


构建发布包:终于要上架了!

开发完功能还不够,最后一步是要打包上传到 Google Play 或应用宝等市场。

正式签名打包步骤:

  1. Generate Signed Bundle or APK
  2. 创建 keystore(秘钥库)
  3. 填写 alias、密码等信息
  4. 选择 release 构建变体
  5. 输出 aab 或 apk 文件

这里有个小建议:aab(Android App Bundle)是未来的趋势,推荐优先打 aab 包用于 Google Play 发布。因为它可以根据用户设备自动分发最小化资源。

另外,别忘了在清单文件中设置正确的 <supports-screens> 属性,防止部分机型无法安装。


性能优化:别让用户等你!

性能优化是个长期话题,但有几个关键点值得初学者关注:

  1. 减少主线程阻塞:网络请求、数据库操作不要放主线程,用协程、RxJava 或 AsyncTask。
  2. 合理使用图片资源:大图记得压缩,可以用 Glide 或 Coil 自动处理。
  3. 优化布局层级:扁平化结构有助于减少绘制时间。
  4. 监控 ANR 和卡顿:利用 Profiler 工具查看 CPU 占用、内存泄漏等情况。

之前有个项目因为大量使用 GIF 图片导致内存暴涨,后来换成了 WebView 加载在线视频才缓解,这也是我学到的一个教训:别怕重构,只要性能更好!


经验总结与小建议

作为一个“过来人”,给新手几点建议:

  1. 别着急啃大部头教材,先动手做一个小 App,哪怕只是跳转页面也好。
  2. 学会阅读 Logcat,这是你调试的第一利器。
  3. 善用 Layout Editor 预览,可以在 IDE 里拖拽组件快速布局。
  4. 定期清理缓存和重建项目,有时候莫名其妙的错误只是缓存的问题。
  5. 多参考官方文档和 Medium、Medium 之类的技术博客,而不是百度上的过时教程。

跨平台开发对比-2


写在最后:Android 开发,越用越上头!

回头看看这几年,从最开始被一堆插件折腾得死去活来,到现在熟练地用 Jetpack + MVVM 架构搭建项目,Android Studio 真的是一个越用越顺手、越用越爱不释手的开发工具。

如果你正在学习的路上,希望这篇文章能给你带来一点点启发。技术这东西不怕慢,就怕停,坚持下去,总有一天你会感谢现在努力的自己。

祝你在 Android 开发路上一路畅通!📱✨

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝