前言
刀具组最近上线了新的业务,周一刀具组很多人请假了,但是又有一些bug着急改,就分配我们组帮助修改刀具组的一些bug和业务需求变更,其中涉及到了安卓开发。这篇笔记主要记录了,一个几乎没学习过安卓的Java开发,修改安卓代码遇到的一些问题,希望给大家有所帮助。
环境搭建
搭建环境部分首先按照下面的链接进行搭建
使用Android Studio搭建Android集成开发环境(图文教程)
svn下载代码部分略去不表
使用android studio打开项目后,遇到了如下问题
项目路径问题
因为项目路径中包含中文,所以打开项目的构建过程会报错,如图所示:
将路径修改为不包含中文的路径,该问题解决。
platform异常
解决了上述问题后自动build过程中报了下面的错误
按照下面的提示,使用SDK Managerinstall 23版本的sdk后问题消失。
需求修改
本次需求针对对读写器的单次盘点功能,将单次盘点的超时时间变长。
首先,查看API中是否可修改,查看API后,发现单次盘点的API不需要传递超时时长,应该是默认写在代码中了,这种方法无法实现。
上面的方法无法实现,我们就只能考虑修改应用层代码了。分析后发现,应用代码只需要增加调用单次盘点的循环次数,并且把循环次数的参数抽取到配置文件中,即可实现需求。
循环代码
循环代码中需要考虑增加的业务逻辑增加到哪一层的问题,着重需要分析是否会影响其他业务。修改后代码如下:
public String readUHFTag() {
String res = "";
int count = 0;
UHFTAGInfo strUII = null;
//在应用层增加单次盘点的超时时长
while (strUII == null && count < 5) {
strUII = mReader.inventorySingleTag();
count++;
}
if (strUII != null) {
playSound(1);
res = strUII.getEPC();
} else {
playSound(2);
return "";
}
return res;
}
参数抽取
参数抽取部分,我查阅了相关资料后,先确定了一个方案:每次使用参数都进行读取。
这种方式的优点是,修改后,可以热加载;缺点是可能会降低性能。
在assets目录中增加一个config.properties配置文件,并增加配置项
#单次盘点循环次数
singlereader.count=5
修改代码如下:
增加一个读取配置文件的方法
/**
* 读取配置文件
*
* @param context 配置文件名字 包名key
* @return
*/
private String getPackageName(Context context, String configName, String packageNameKey) {
String result = "";
Properties properties = new Properties();
InputStream is = null; //这两个都是获得文件的流文件
try {
is = context.getAssets().open(configName);
properties.load(is);//is是通过上面获得的输入流
result = properties.getProperty(packageNameKey);//通过key获得相应的值
Log.i("kaijiguangbo Config", result);
} catch (IOException e) {
e.printStackTrace();
Log.i("Conf error", "读取不到配置文件");
}
return result;
}
使用代码增加如下:
public String readUHFTag() {
String res = "";
int count = 0;
UHFTAGInfo strUII = null;
//获取单次盘点次数
String singleReaderCount = getPackageName(MainActivity.this, "config.properties", "singlereader.count");
//在应用层增加单次盘点的超时时长
while (strUII == null && count < Integer.parseInt(singleReaderCount)) {
strUII = mReader.inventorySingleTag();
count++;
}
if (strUII != null) {
playSound(1);
res = strUII.getEPC();
} else {
playSound(2);
return "";
}
return res;
}
硬件测试
请教了安卓开发相关的同事,在andriod studio上进行调试,可以用usb直连上硬件,点击debug按钮,然后就可以打断点调试了。
ps:debug按钮,是帮助我们省略了打成apk包并发布到平板的过程。
测试过程如下:
点击debug后,开始构建,如果系统中已经存在一个app,就会提示我们是否需要删除原来的app
点击ok,会发现原来的app已经被卸载,平板自动打开新的app,就可以调试了。
点击关闭就可以结束调试。