APP下载

Android移动开发遇到的问题及解决办法

2018-05-07韦丽霜

课程教育研究·新教师教学 2017年33期

【摘要】本文指出了在教学中使用黑马程序员编著的Android 移动开发基础案例教程中遇到的几个问题,并给出相应的解决办法。并给出了用Android Studio开发无网络的情况下导入项目不成功的解决办法。

【关键词】Android移动开发;Android Studio;项目导入

【中图分类号】TP311.52 【文献标识码】B 【文章编号】2095-3089(2017)33-0290-02

一、Andriod简介

Android系统是Google开发的一款开源操作系统,国内用户俗称“安卓”。Android操作系统内核基于Linux设计,使用了Google公司自己开发的Dalvik Java虚拟机。Android操作系统主要应用于移动设备,如智能手机、平板电脑、可穿戴设备、智能家居等领域。Android在中国市场智能手机操作系统中占据90%以上的市场份额,全球占据80%以上。

Android完全开源,此平台从底层操作系统到上层的用户界面和应用程序都不存在阻碍产业创新的专有权障碍。开源的最大好处是 Android平台会拥有越来越多的应用与开发者,随着用户与应用的壮大,Android平台日益成熟与稳定。

全球最大的在线搜索服务商Google已经逐渐的渗透进人们的日常生活中了Android緊密结合Google应用,与Google服务无缝集成。人们不仅仅满足于使用电脑终端来享受诸如Gamil、谷歌地图、在线翻译等在线服务,由PC到移动终端的延伸成了一种必然的趋势。而Android,则可以满足人们的愿望。

Android版本更新很快,而且大的升级有可能出现版本之间的兼容性问题,或增加了新的技术。Android书籍的内容滞后是正常的,编写的程序有的运行不成功。增加初学者的学习难度。本人在教学中就遇到了一些问题。

二、开发环境

1.教材使用的开发环境是:

Windows 7

Android Studio2.2.2 SDK API Level 24 模拟器用Android SDK自带的

JDK1.8.0

2.调试程序所用的开发环境是:

Windows 7/10

Android Studio2.3.3 SDK API Level26模拟器用Android SDK自带的

JDK1.8.0以上

三、Android Studio的项目与模块简介

Project(项目)相当于Eclipse中的workspace。Module(模块)相当于Eclipse中的Project。

一个Project可以包含多个Module,Project中的build.grade用于指定构建的项目任务,Module中的build.grade用于配置模块的构建任务。第一次运行Android Studio都是选择New Project,后面还想再创建新的App工程时,可选择New Module,在当前工作空间下新建一个App工程。本文中的Project均只有一个App。

工程的目录结构如下:

Gradle Scripts中主要是工程的编译配置文件,主要有:

1.build.gradle,该文件分为Project级与Module级,用于描述App工程的编译规则,构建配置文件。

2.gradle-wrapper.properties,该文件为gradle wrapper的配置文件。此文件默认内容如下:

#Mon Dec 25 23:15:38 CST 2017

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

这个文件一般不用修改,如果gradle的版本不一样,需手动更改的,可修心distributionUrl,也可在可视化的环境下通过操作修改。

3.proguard-rules.pro,描述java文件代码混淆规则。

4.gradle.properties,Gradle的配置文件,在这个文件中可设置Gradle的代理。一般不用设。

5.settings.gradle,全局配置文件,如为include ':app',表示只编译App模块。有多个模块要编译可添加。

6.local.properties,项目的本地配置文件,指明SDK和NDK的本地路径。一般不用改动。

四、遇到的问题及解决办法

我们用的是由中国工信出版集团和人民邮电出版社出版的、黑马程序员编著的Android 移动开发基础案例教程。

1.使用SD卡遇到的权限问题

编程实现播放处于SD卡中的音乐或视频文件。学生学习的过程中就没有播放出音乐和视频,需要补充知识点,增加一些代码和操作,才可运行成功。

(1)把音乐文件放入SD卡指定的目录中

在Windowsr的命令提示符下,进入Android的sdk目录下的platform-tools文件夹中,输入以下命令

adb root

adb remount

adb push a.mp3 /mnt/sdcard/Music/a.mp3

将当前文件夹platform-tools中的a.mp3放到模拟器/mnt/sdcard/Music文件夹中,文件名依然为a.mp3。

然后修改app/manifests/AndroidManifest.xml文件,在節点外添加一行代码如下进行权限配置:

(2)加了这行代码之后,打开模拟器的设置→应用找到应用程序名并单击,打开应用信息窗口查看权限发现未配置权限前灰色显示的“未请求任何权限”变为黑色显示,单击“权限”进入“应用访问授权”窗口,向右拖动存储空间右侧的滑块,使之变为蓝色。

(3)返回模拟器的主界面,找到应用程序的图标再单击运行,声音就出来了。视频文件播放也类似。

学生要在教师的指导下才能做出来,自学有难度。其它很多应用也是要开发权限的,需要举一反三。

2.系统文件存放位置与教材所讲不符

系统存放短信的数据库文件路径与教材所讲路径不符。调试程序所用的开发环境中存放在/data/user_de/0/com.android.providers.telephony/databases目录下的mmssms.db文件中。而教材中所指的文件存放在/data/datae/com.android.providers.telephony/databases目录中。

3.编码格式转换问题

网络编程中,存放在服务器上的.JSON文件的编码格式,获取服务器的.JSON文件并将其解析出来显示到ListView或RecyclerView上。如用记事本编辑,默认的是ANSI编码格式,解析后显示乱码,需要将其转换为UTF_8编码格式。如在Android studio中转换则依然显示乱码。而用记事本打开,将文件另存为UTF-8编码格式则显示正常。

4.有序广播无法拦截

拦截有序广播的程序,用android自带的模拟器拦截不了,用Genymotion和夜神可拦截。

5.导入项目遇到的问题

导入一个android studio项目,继续之前的工作,如果网络不通很麻烦,特别是使用软件的版本不同的情况下,需要从网上下载文件。我们偿试着从File→Settings→Build,Execution,Deployment→Gradle,选择Use local gradle distribution,并修改Gradle Scripts下的文件,使它们与在本机上创建的可运行的工程项目一致,还是不行。通过各种尝试,找到一个便捷的方法,方便继续之前的工作。可以在Android Studio中新建一个项目,然后在资源管理器中找到需要导入的app文件夹中的src文件夹,将其复制粘贴到新建工程相应的位置即可运行,这需要在Window资源管理器窗口中操作。此时,如果项目中无访问网络的操作,则项目可运行成功,有网络访问则需网络通畅。

五、结束语

Android程序开发前几年用的是Eclipse环境,由于谷歌的不支持,现转到了Android Studio环境。软件环境的不断更新,程序设计人员也要不断地学习,在使用新工具时不免会遇到各种各样的问题,希望我们遇到的问题及处理方法对大家有些帮助。

参考文献

[1]黑马程序员.Android移动开发基础案例教程[M].北京:人民邮电出版社,2017;148-248.

[2]李宁.Android开发权威指南[M].北京:人民邮电出版社,2013.9,564.

[3]欧阳燊.Android Studio开发实战从基础到App上线[M].北京:清华大学出版社,2017.6,12-16.

作者简介:韦丽霜,1968,女,壮族,广西柳江,学士,副教授,计算机应用。