我的第一个安卓应用出生过程及总结

一.应用简介

二.开发环境

三,第三方库

四.功能的实现

五.上架流程,签名和打包

六.bug原因及解决

七.学到的知识


一.应用简介

当时选材的时候在新闻类和音乐类中选择了做一款在线播放音乐的app,而且我自己的iOS项目中正好有一款音乐类app,这就省去了P图和抓接口的琐事直接拿iOS中的图片和接口来就能用(由于这边偷懒导致了下面一个困扰我2天的bug)。我做的音乐app叫夜听-故事汇,目前在应用宝和360还有百度管家还有小米商店上架。

二.开发环境

IDE:android studio 2.3.3

应用的最低版本 api4.12 16 

开发环境搭建我用1天的时间才顺利写出hello world!这里不得不吐槽下android开发的困境,由于谷歌在退出中国所以很多东西都需要翻墙下载,而且感觉一个开发环境是东拼西凑才搭建完成。

搭建环境需要三样东西 java jdk, android sdk,然后还需要下载as开发工具最后在配置

jdk:mac中自带的所以只需要更新一下

android:需要翻墙去官网下载

as:同上

最后就是配置和更新

对了还有一样的模拟器,用过自带的以后我决定还是真机了。你们懂得

如果不用真机的可以去找一下貌似有一个叫VirtualBox的第三方还可以

不过需要配置一下

最后as的老长辈是eclipse

经过漫长的sdk的更新终于可以愉快的写代码了

三.第三方库

在build.gradle(Module)中导入

比如:

compile 'com.squareup.okhttp3:okhttp:3.9.0'

如果是导入别人写的类中药复制粘贴

项目中用的第三方库

网络请求(要manifests申请网络权限

<uses-permission android:name="android.permission.INTERNET" />

okhttp

图片加载

picasso

字符串转对象

gson

上啦刷新下拉加载

pulltorefresh

数据库

greendao

图片毛玻璃效果

FastBlurUtil

四.功能的实现

安卓开发一般是在xml布局,然后在activity中通过id找控件并实现一些逻辑

我的主界面是用activity(Fragment+RadioGroup)实现4个标签互相切换

Fragment中通过listview+baseAdapter+item实现数据绑定并显示视图(这里详情请看我另一个文章)

Fragment中与activity用的Intent实现相互传值并跳转

播放界面:musicplayeractivity中xml布局分为头部的导航栏+中部的播放盘和机械臂+底部的播放暂停按钮

功能:后台播放暂停,上一首(),下一首,随机,循环播放,播放完毕自动播放下一首,收藏歌曲

其中当点击播放展厅,和上一首,下一首的时候有一个机械臂摇摆的动画并且中间的imageview要换图片,底部的背景图也换

五.上架

上架必须要签名(意思就是要让人家知道这个应用是谁开发的)

真机测试和模拟器为什么不要签名呢当时我也有这个疑问,后来度娘了一下才知道as帮我们生成了一个debug一个store文件。

签名的化我是用as签名的

另外说一下上架各大商店的时候才知道有一个加固的说法,而且各家的加固不一样。不知道什么鬼,我把在360加古国的apk上传到应用宝的时候竟然还要我加固真是无语

六.开发中遇到的bug

1.oom:原因设置一张背景图的时候没有使用background而是用领一个属性导致

解决:换成background

2.生成apk的时候报错:图片xml文件没有放在drawable中

解决:凡是drawable()的xml文件放到drawbale

3.字符串错误(也是生成apk出现的)

解决在build.gradle(module)

android {
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
}

4.按下back返回键时出现intent为空bug

原因:由于我在ab两个界面互相传智,当如果我按back键时没有给intent传智那么就会出现消息吗正确,二intent为空的错误

解决复写onBackpressed(){}方法

5.listview,adpater错误

这是一个隐shi错误,不定每次都出现而且控制台还无法定位

网上说了出现这个bug的原因是在子线程中跟新的adpater的数据而没有通知listview不然就会报这个错误

解决:在主线程跟新adpater数据并且通知listview

mAdatpter.notifyDataSetChanged();

七.学到的知识

学到了开发一个安卓应用的流程和相关知识

学到出现bug能够根据控制台很快的定位到bug

学到相关控件的使用

学到了传智

学到了service的用法

学到了导入三方库的导入和使用

学到了五大布局的相互使用

八:不足

现阶段我知道用什么怎么用,比如控件我用什么,库我要用什么怎么用,而且还没看源码只能实现功能而它的背后我还没有发掘

下一步:学习到为什么用这个,并且会改底层源码


最后附上我的项目的几张截图






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值