使用Android studio进行Unit Test中遇到的问题记录

1、模块本身代码运行不起来

提示:

Cannot resolve method 'getVolumes' in 'StorageManager'

Cannot resolve method 'registerListener' in 'StorageManager'

Cannot resolve method 'unregisterListener' in 'StorageManager'

查看Android 源码,发现getVolumes,registerListener和unregisterListener是被UnsupportedAppUsage修饰,这些注解的函数、类、变量是不编译进谷歌提供的sdk里面的,所以直接使用不能通过编译器检查。

解决方法:

android studio引用的sdk默认为当前android版本的Android API XX Platform的android.jar,而被UnsupportedAppUsage修饰的函数是调用不到的,所以当我们需要调用隐藏的接口或者常量时,去默认的sdk是找不到方法的,直接引用默认sdk的包Android studio就会报错。这个时候可以听过导入系统framework.jar包并更改引用库的优先级 的方式来解决这个问题。

实际上就是修改引用的sdk为framework.jar,这样在编译时就会去framework.jar里面去找对应的方法。

修改配置:

cpp 复制代码
//module下的配置
gradle.projectsEvaluated {
    tasks.withType(JavaCompile).tap {
        configureEach {
            Set<File> fileSet = options.bootstrapClasspath.getFiles()
            List<File> newFileList = new ArrayList<>();
            //JAVA语法,可连续调用,输入参数建议为相对路径
            newFileList.add(new File("libs/framework.jar"))
            //最后将原始参数添加
            newFileList.addAll(fileSet)
            options.bootstrapClasspath = files(
                    newFileList.toArray()
            )
        }
    }
}

修改之后再点击run:

可以成功生成apk

注意 :虽然上面运行ok了,但是在代码里调用getVolumes,registerListener和unregisterListener的地方还是标红的,标红问题暂时未解决,只解决了编译问题。

2、Installation did not succeed.

提示:

Installation did not succeed.

The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

List of apks:

0\] 'D:\\Code\\app\\build\\outputs\\apk\\debug\\app-debug.apk' Installation failed due to: 'Failed to commit install session 536069324 with command cmd package install-commit 536069324. Error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Package couldn't be installed in /data/app/com.gwm.car.usblistener-Ggm1yrjuga-bWTjnyFohSA==: Package com.gwm.car.usblistener has no signatures that match those in shared user android.uid.system; ignoring!' 原因: 在模拟器里面跑的,大概意思是没有android.uid.system的sharedUserId。我这里的话,换成我测试的目标设备就可以了。

相关推荐
Java面试题总结10 分钟前
FVG3 构建系统 MinGW 配置问题排查文档
java
乐之者v16 分钟前
游标分批查询,提高查询性能
java
城管不管24 分钟前
嵌入模型Embedding Model
java·开发语言·python·embedding·嵌入模型
斯维赤26 分钟前
每天学习一个小算法:选择排序
java·学习·算法
book123_0_9932 分钟前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
NCIN EXPE34 分钟前
使用Springboot + netty 打造聊天服务(一)
java·spring boot·后端
爱学习的小囧44 分钟前
ESXi性能历史怎么监控?2种方法,图形化+命令行全覆盖
java·linux·运维·服务器·网络·esxi·esxi8.0
黑心的奥利奥1 小时前
WeeX跨平台框架,自定义安卓平台MarkDown文本渲染组件高度跟随内容自适应实现思路探索
android
逻辑驱动的ken1 小时前
Java高频面试考点场景题11
java·深度学习·面试·职场和发展·高效学习
KIHU快狐1 小时前
快狐KIHU|110寸壁挂触控一体机G+G电容屏安卓系统汽车展厅查询展示
android·python·汽车