Python python 测试安卓 jar 的疑问,有没有大佬来救救孩子

phoenix · 2021年01月18日 · 最后由 剪烛 回复于 2021年02月02日 · 3938 次阅读

背景:
1、打算用 python 直接调用安卓 jar 中的 api,以达到深入测试目的。
方法:
1、利用 jpype 与 jar 交互,发现 apk 的 jar 会依赖安卓系统的类库
2、下载 android-2.3.1.jar,与 apk 的 jar 同时加载
3、发现 android.app.Activity 只有一个五参构造函数,但是其直接 throw 异常😭 ,同时又需要这个 Activity 的一个实例,作为 apk jar 的入参。
有没有老司机有相关经验的,来指导一下,不胜感激!!!
或者老哥们过来提供下其他思路也行,不胜感激!!!

共收到 15 条回复 时间 点赞

救救孩子吧,老哥们😭

不能调用,SDK 内置的 jar 是个空实现的,你需要在安卓上跑你得 Python 脚本

3楼 已删除

原理上就走不通了。

android.jar 内置的全是接口,里面都是空实现,真实实现只有在 android 操作系统下才会被调用到。而且有可能这个 android.jar 替换为真实实现是依赖 android 系统运行应用使用的 jvm 虚拟机的,所以在 android 下跑 python 也不一定能走得通的。

不知道你想测试什么,为啥要调用系统自带的 api ?如果是想拉起 activity 之类的在应用内的操作,建议直接在 app 项目里写单测?

陈恒捷 回复

想用 python 接安卓 SDK,直接测试 SDKjar 中的 api。这些 api 的入参需要一个 activity 的实例

首先为何一定要用 python 呢,为什么要测试系统层的 api,要达到什么目的,其次作为一个工程师不应被语言限制住,需用什么语言就要会什么语言。

你这孩子我们救不了

你做的是 sdk 测试? 那我告诉你这样的没用

blues_mli 回复

测试的对象是个 sdk,供 app 调用的。不想只是通过带有简单 UI 的 demo 测试。打算绕过 UI😂

王_test 回复

的确想测试 SDK,老哥有没有更好的思路分享下😀

phoenix 回复

写个壳,去安卓系统去运行,sdk 测试不都这样吗?

用反射,动态执行就可以了

我之前弄过通用的 sdk 测试,把 java 调用封装成 http api 用 postman 测试

非 java 基础数据类型,需要自己写动态构造函数实现传参

剪烛 回复

会说就多说一点呢😮

你参考一下 @Suneo 的方法,我们也是这么搞的,写个单独的工程,在工程中搞个调用 sdk 的服务,然后外部用 http 调用来测试

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册