是不是想开发一个自己的电商 APP,却被 “商品列表展示”“购物车逻辑”“权限申请” 这些问题难住?跟着教程写商品列表,运行时要么空白不显示,要么图片加载不出来;好不容易做了购物车,添加商品后退出 APP 数据就丢了;更愁的是,在新手机上打开 APP,总提示 “权限被拒绝”,连网络都用不了。电商 APP 开发涉及的模块多、权限杂,新手很容易在某个环节卡壳。今天兔子哥就带大家走一遍电商 APP 开发全流程,从环境配置到核心功能实现,再到权限适配和错误解决,每个步骤都讲透,跟着做,你也能做出能展示商品、加购物车的电商 APP!
基础问题:电商 APP 开发难在哪?核心模块有哪些?
可能有朋友会问:“电商 APP 看起来功能复杂,零基础真能学会吗?” 其实电商 APP 的核心功能没那么难,无非就是 “商品展示→详情查看→加入购物车→提交订单” 这几个流程,咱们拆分成模块一步步做,就会简单很多。
核心模块就这几个,新手先搞定基础的:
商品列表页:展示商品图片、名称、价格,能上下滑动查看;
商品详情页:点列表商品后显示大图、详情描述、加入购物车按钮;
购物车:临时存用户选的商品,能增减数量、删除商品;
权限适配:网络、存储、位置这些权限,没它们 APP 可能连图片都加载不了。
网友 “电商小白开发者” 说:“之前觉得电商 APP 遥不可及,拆成模块后,先做商品列表,再慢慢加购物车,居然真的跑起来了,原来分步走这么重要!” 所以别被 “电商” 两个字吓住,拆解开每个模块都不难。
步骤 1:环境搭建,这些配置要提前弄好
开发电商 APP,环境搭建和基础 APP 类似,但有几个电商特有的配置得注意,不然后面加载商品、图片会出问题:
基础环境准备
还是用 Android Studio 最新版,安装时确保勾选 “Android Virtual Device” 和 “Google Play Services”(电商 APP 可能用到地图或支付,提前装上)。首次启动后,新建项目选 “Empty Activity”,名称填 “ShopApp”,语言选 “Kotlin”,Minimum SDK 选 “API 24”(兼容大多数手机)。
电商必备依赖库
打开项目里的 “app→build.gradle” 文件,加几个电商常用的依赖库,这样不用自己写网络请求和图片加载代码:
gradle
dependencies {// 网络请求库,加载商品数据用implementation 'com.squareup.retrofit2:retrofit:2.9.0'// 图片加载库,显示商品图片用implementation 'com.github.bumptech.glide:glide:4.15.1'// 数据存储库,保存购物车数据用implementation 'androidx.room:room-runtime:2.5.2'kapt 'androidx.room:room-compiler:2.5.2'}
加完后点右上角 “Sync Now” 同步,等进度条走完,依赖库就装好了。
| 依赖库 | 作用 | 新手易错点 |
|---|---|---|
| Retrofit | 网络请求 | 版本选错导致编译失败 |
| Glide | 图片加载 | 忘记加网络权限导致图片不显示 |
| Room | 本地存储 | 实体类写错导致数据存不了 |
兔子哥提示:依赖库版本别追最新,选教程里验证过的版本,不然容易出现兼容性问题,新手折腾起来很费劲。
步骤 2:核心功能开发,先搞定商品列表和购物车
咱们先做两个最核心的功能:商品列表展示和购物车存储,这俩做好了,电商 APP 的架子就有了。
功能 1:商品列表页,展示商品信息
先定义商品数据结构:新建 “data→Goods.kt”,存商品的 id、名称、价格、图片地址:kotlin
data class Goods(val id: Int,val name: String,val price: String,val imageUrl: String)
设计列表布局:在 “res→layout” 里新建 “item_goods.xml”,放一个 ImageView(显示图片)和两个 TextView(显示名称和价格),用 LinearLayout 排列就行。
写列表逻辑:在 MainActivity 里用 RecyclerView 展示列表,通过 Glide 加载图片,代码里记得加网络请求(新手可以先用本地模拟数据,别一上来就连真实接口)。
痛点解决:列表空白不显示?检查 RecyclerView 的布局高度是不是 “wrap_content”,适配器有没有设置,数据是不是空的。
功能 2:购物车功能,保存用户选择的商品
用 Room 做本地存储:新建 “database→AppDatabase.kt” 和 “entity→CartEntity.kt”,定义购物车表结构(商品 id、名称、数量、价格)。
加购物车逻辑:在商品详情页加个 “加入购物车” 按钮,点击时把商品信息存到 Room 数据库里。
购物车页面:新建 CartActivity,查询 Room 数据库里的商品,用列表展示,加 “+”“-” 按钮增减数量。
痛点解决:退出 APP 后购物车数据丢失?检查 Room 数据库操作是不是少了 “allowMainThreadQueries ()”(新手暂时允许主线程操作,方便测试),或者实体类没加注解。
步骤 3:权限适配,Android 13 + 这些权限要注意
电商 APP 需要的权限不少,特别是 Android 13 以后权限管理更严,不处理好会导致功能用不了。
必申请的权限及适配方法
网络权限:在 “AndroidManifest.xml” 里加
,这个权限不用动态申请,加了就能用,但注意模拟器要联网。存储权限(可选,保存图片到本地用):Android 13 以前用
WRITE_EXTERNAL_STORAGE,13 及以后要申请 “照片和视频” 权限,代码里得判断系统版本:kotlinif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {ActivityResultContracts.RequestPermission()} else {ActivityResultContracts.RequestMultiplePermissions()}位置权限(可选,定位附近商品用):需要动态申请
ACCESS_FINE_LOCATION,申请前先检查是否已授权,没授权就弹框请求。
权限被拒后怎么办?
用户可能会拒绝权限,这时候要引导用户打开权限:在权限被拒的回调里,显示一个提示框,告诉用户 “需要存储权限才能保存图片哦”,并跳转到 APP 权限设置页面(用startActivityForResult打开设置页)。
兔子哥提示:别一打开 APP 就弹一堆权限申请,用户会反感。用到某个功能时再申请对应的权限,比如点 “保存图片” 时再申请存储权限,体验更好。
常见错误解决:电商 APP 开发必踩的 5 个坑
错误 1:商品图片加载不出来,显示问号或空白
现象:商品列表文字正常,图片是灰色问号或空白。
原因:没加网络权限,或者图片地址错了,也可能是 Glide 依赖没同步好。
解决:检查 AndroidManifest.xml 有没有网络权限;用浏览器打开图片地址,看能不能访问;重新同步依赖库(点 “Sync Now”)。
错误 2:购物车数据存不进去,查询结果为空
现象:点 “加入购物车” 没报错,但购物车页面空白。
原因:Room 实体类没加@Entity(tableName = "cart")注解,或者数据库操作没在子线程(新手可以暂时允许主线程操作)。
解决:给实体类加正确注解;数据库构建时加.allowMainThreadQueries()(仅测试用,正式版别这么写)。
错误 3:Android 13 手机提示 “无网络访问权限”
现象:APP 能安装,但商品列表刷不出来,提示 “网络错误”。
原因:Android 13 对网络权限没影响,但可能是模拟器没联网,或者 APP 被系统限制了网络。
解决:检查模拟器是否联网(右上角看信号图标);在手机 “设置→应用→你的 APP→权限” 里确认网络权限已打开。
错误 4:列表滑动卡顿,图片多了更明显
现象:商品多的时候滑动列表,一顿一顿的不流畅。
原因:图片太大没压缩,或者在列表适配器里频繁创建对象。
解决:用 Glide 加载图片时指定尺寸(override(300, 300));在适配器的onBindViewHolder里复用控件,别每次都 findViewById。
错误 5:点击商品跳转到详情页,数据传不过去
现象:点列表商品打开详情页,详情页显示的商品信息不对或为空。
原因:跳转时 Intent 传数据错了,或者详情页接收数据时 key 写错了。
解决:检查传数据的 key(比如 “goods_id”)和接收的 key 是否一致;用intent.getParcelableExtra传自定义对象时,确保对象实现了 Parcelable 接口。
自问自答:电商 APP 开发新手常见疑问
商品数据从哪来?一定要连真实接口吗?
新手可以先用本地模拟数据!在项目里新建一个 “mock→GoodsMock.kt”,写一个列表包含几个商品的假数据(id、名称、价格、图片地址用网络图片),等功能跑通了,再学 Retrofit 连真实接口。这样前期不用纠结后端,专注前端功能。
电商 APP 需要学支付功能吗?新手能做吗?
新手暂时不用学复杂的支付!先做 “模拟支付” 按钮,点击后显示 “支付成功” 就行。真实支付需要接入支付宝、微信支付的 SDK,还要商户资质,等基础功能熟练了再研究,别一口吃成胖子。
不同手机屏幕适配怎么处理?商品布局乱了怎么办?
用约束布局(ConstraintLayout)做界面,少用固定尺寸(dp),多用水平和垂直约束。图片用 “wrap_content”,文字用 “sp” 单位,在 “res” 文件夹下建不同分辨率的布局文件夹(如 layout-sw360dp),针对性调整小屏幕手机的布局。
最后说点实在话
电商 APP 开发看着模块多,但拆分成 “商品列表→购物车→权限适配” 一步步做,其实没那么难。我刚开始做的时候,商品图片加载不出来卡了两天,后来发现是没加网络权限,这么简单的问题居然折腾了这么久,现在想起来还觉得好笑。
新手开发时别追求完美,先做出能跑的基础版本,再慢慢优化。比如先实现 “商品列表展示 + 简单购物车”,能正常运行后,再加图片缓存、权限适配这些细节。遇到错误别慌,大部分问题都是小细节没注意,比如权限没加、注解漏写、数据传错 key。
权限适配是电商 APP 的重点,特别是现在 Android 版本更新快,不同版本权限要求不一样,一定要测试不同版本的手机,不然用户下载了用不了,就白做了。现在就打开 Android Studio,跟着步骤做一个简单的电商 APP,看着自己的 APP 能展示商品、加购物车,那种成就感真的不一样,动手练起来吧!
还木有评论哦,快来抢沙发吧~