如何使用android仿真器(使用ubuntu12.04+kivy)测试python应用程序?

2024-05-17 05:42:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经成功地在ubuntu12.04 64位上构建了kivy提供的两个示例,并在我的nexus4设备上运行了这些示例,基本上遵循了python-for-android websites 上给出的以下命令:

./build.py --package org.test.touchtracer --name touchtracer --version 1.0 --dir /home/bernhard/Development/kivy/examples/demo/touchtracer debug

为了进一步的开发和必要的调试,我想在Android仿真器上测试我编译的python程序,因为将应用程序复制到设备上有点麻烦,而且需要相当长的时间来传输(如果您认为这不是真的,请纠正我-我还没有经验)。在

所以,我用androidsdkmanager[19.0.2]在一个模拟的nexus4设备上运行android4.4.2,创建了一个AVD。 当我启动模拟器时,会出现一个新的窗口,以闪亮的字体显示“android”,但其他的一切都没有发生,看起来像是一个冻结(模拟)的设备(即,我无法与模拟器交互)。AVD管理器将位于my~/.android/AVD中的AVD列为“有效的android虚拟设备”。我尝试过Intel Atom(x86)和armeabiv7a作为CPU,但什么都没有。 由于我找不到关于如何在模拟器上复制和测试python应用程序的良好说明,我尝试了以下天真的方法将debug选项从上面改为installd

^{pr2}$

但主要是这样:

install:
    [echo] Installing /home/bernhard/Development/python-for-android/dist/default/bin/touchtracer-1.0-debug.apk onto default emulator or device...
    [exec] error: device not found
    [exec] - waiting for device -
    [exec] rm failed for /data/local/tmp/touchtracer-1.0-debug.apk, No such file or directory

BUILD FAILED
    /home/bernhard/Development/android-sdk-linux/tools/ant/build.xml:1364: The following error occurred while executing this line:
    /home/bernhard/Development/android-sdk-linux/tools/ant/build.xml:1378: exec returned: 1

Total time: 51 seconds
Traceback (most recent call last):
  File "./build.py", line 412, in <module>
    make_package(args)

 File "./build.py", line 336, in make_package
   subprocess.check_call([ANT, arg])
 File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
   raise CalledProcessError(retcode, cmd)
 subprocess.CalledProcessError: Command '['ant', 'installd']' returned non-zero exit status 1

这是令人困惑的,因为模拟器正在运行。 有一次,我得到了一些更有希望的东西,但仍然没有改变模拟器的输出:

install:
     [echo] Installing /home/bernhard/Development/python-for-android/dist/default/bin/touchtracer-1.0-debug.apk onto default emulator or device...
     [exec] 979 KB/s (6559511 bytes in 6.542s)
     [exec] WARNING: linker: libdvm.so has text relocations. This is wasting memory and is a security risk. Please fix.
     [exec] Error: Could not access the Package Manager.  Is the system running?

installd:

BUILD SUCCESSFUL

或者:

install:
     [echo] Installing /home/bernhard/Development/python-for-android/dist/default/bin/touchtracer-1.0-debug.apk onto default emulator or device...
     [exec] 988 KB/s (6559511 bytes in 6.482s)
     [exec] WARNING: linker: libdvm.so has text relocations. This is wasting memory and is a security risk. Please fix.
     [exec]     pkg: /data/local/tmp/touchtracer-1.0-debug.apk
     [exec] - waiting for device -
     [exec] rm failed for /data/local/tmp/touchtracer-1.0-debug.apk, No such file or directory

很抱歉,我对不同的输出如此不精确,我自己也不明白差异的原因。我认为这可能是因为在一次试用之前,真正的设备已经连接好了,或者我已经删除了python for android/dist/default/bin文件夹中的所有touchtracer*文件。 最后,我的问题是:

1)我是否正确地使用build命令在模拟器上安装编译的代码?在

2)为什么模拟器只显示一个闪亮的“android”字母而没有任何交互的可能性?在

3)你知道关于如何在Ubuntu上使用Android仿真器的好链接/教程吗?在

先谢谢你! 谨致问候, 伯恩哈德


Tags: orindebugbuilddefaulthomefordevice
2条回答

我不清楚你到底有什么问题。在

你是说没有仿真器的你的apk构建得很好吗?我这么问是因为模拟器的存在并不会对任何事情产生影响。您可以通过停止仿真器、使用build命令并手动将apk复制到您的设备来进行测试。在

(看起来您的构建有时会成功完成。即使无法复制到设备,它也将位于bin目录中。)

您可以通过多种方式将apk上传到手机上(甚至只是通过电子邮件发送),但最简单的方法是使用android sdk中的adb工具-将手机插入计算机,打开其开发模式,然后运行adb install /path/to/apk。这只需要几秒钟。在

because copying the app to the device is a bit cumbersome & takes quite long time to transfer, I think (please correct me if you think this is not true

我的上一段也谈到了这一点。这是非常简单和容易安装与亚行,我一直这样做时,为安卓开发。实际上,它可能与使用模拟器竞争,因为这两种方法最终都是键入相同的命令并传输到设备(真实的或模拟的)。在

我还建议使用buildozer工具,它是android构建过程的一个很好的包装器,具有更方便的界面。它还可以自己下载相应的android依赖项,并与adb接口。在

听起来你的Android仿真器运行不正常。新AVD的第一次运行速度非常慢,尤其是在旧电脑上。如果你的CPU很慢的话,你可能需要10-20分钟才能进入Android桌面。在

你需要确保的一件事是,你的AVD有“使用主机GPU”在其选项。如果没有这个选项,Kivy将无法在Android仿真器上运行。然而,在我看来,你从来没有达到你的AVD启动完全。在

相关问题 更多 >