工作日记-首次安卓开发

前言

刀具组最近上线了新的业务,周一刀具组很多人请假了,但是又有一些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,就可以调试了。

点击关闭就可以结束调试。

原文地址:https://www.cnblogs.com/ging/p/13877780.html