如何使用 android 模拟器(使用 Ubuntu 12.04 + kivy)测试我的 python 应用程序?
Posted
技术标签:
【中文标题】如何使用 android 模拟器(使用 Ubuntu 12.04 + kivy)测试我的 python 应用程序?【英文标题】:How can I test my python apps using the android emulator (using Ubuntu 12.04 + kivy)? 【发布时间】:2014-03-26 22:53:09 【问题描述】:我已经设法在 Ubuntu 12.04 64 位上构建了 kivy 提供的两个示例,并在我的 Nexus 4 设备上运行这些示例,基本上遵循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 程序,因为将应用程序复制到设备有点麻烦并且需要很长时间才能传输,我认为(请更正如果您认为这不是真的,请告诉我——我还没有经验)。
因此,我使用 Android SDK Manager [19.0.2] 在模拟的 Nexus 4 设备上运行 Android 4.4.2 创建了一个 AVD。 当我启动模拟器时,会出现一个新窗口,以闪亮的字体显示“android”,但没有其他任何反应,似乎是一个冻结(模拟)设备(即我无法与模拟器交互)。 AVD 管理器将此位于我的 ~/.android/avd 中的 AVD 列为“有效的 Android 虚拟设备”。我已经尝试将 Intel Atom (x86) 和 ARM armeabiv7a 作为 CPU,但没有。 由于我找不到关于如何在模拟器上复制和测试我的 python 应用程序的良好说明,我尝试了以下天真地将调试选项从上面更改为已安装
./build.py --package org.test.touchtracer --name touchtracer --version 1.0 --dir /home/bernhard/Development/kivy/examples/demo/touchtracer installd
但大多数情况下我都明白:
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 模拟器的好链接/教程吗?
提前非常感谢! 最好的祝福, 伯恩哈德
【问题讨论】:
【参考方案1】:听起来您的 Android 模拟器运行不正常。首次运行新的 AVD 或速度非常慢,尤其是在旧计算机上。如果你的 CPU 很慢,实际上可能需要 10 到 20 分钟才能进入 Android 桌面。
您需要确保的一件事是您的 AVD 在其选项中选择了“使用主机 GPU”。如果没有该选项,Kivy 将无法在 Android 模拟器上运行。但是,在我看来,您永远无法完全启动 AVD。
【讨论】:
感谢“使用主机 GPU”的提示 - 这大大加快了速度,现在模拟器出现了。尽管如此,kivy 的“touchtracer”演示应用程序仍然没有运行。我现在需要研究如何调试它。当然,非常欢迎提示!但是非常感谢你! 确保您正在运行带有调试的构建命令,而不是安装【参考方案2】:我不清楚你的问题到底是什么。
你是说没有模拟器,你的apk 可以构建吗?我问是因为模拟器的存在不应该真正对任何事情产生影响。您可以通过停止模拟器、使用 build 命令并手动将 apk 复制到您的设备来进行测试。
(看起来你的构建有时会成功完成。即使它无法复制到设备,它也会在 bin 目录中。)
您可以通过多种方式将 apk 上传到手机(甚至只是通过电子邮件发送),但最简单的方法是使用 android sdk 中的adb
工具 - 将手机插入计算机,打开其开发者模式,然后运行adb install /path/to/apk
。这应该只需要几秒钟。
因为将应用程序复制到设备有点麻烦并且需要很长时间才能传输,所以我认为(如果您认为这不是真的,请纠正我
我上面的段落也解决了这个问题。使用 adb 安装非常简单易行,我在为 android 开发时一直这样做。实际上,它可能与使用模拟器相比具有竞争力,因为这两种方式最终都会输入相同的命令并传输到设备(真实的或模拟的)。
我还推荐使用buildozer 工具,它是android 构建过程的一个很好的包装器,具有更方便的界面。它还能够自行下载适当的 android 依赖项,并与 adb 交互。
【讨论】:
嗨,问题似乎是(或者更确切地说是)android 模拟器还没有真正启动,但这似乎是通过使用主机 GPU 来解决的,我猜这应该是默认选项.现在,安装工作正常,但如上所述,kivy 演示应用程序无法运行,需要进一步调查。不管怎么说,还是要谢谢你!我将尝试 buildozer 和 adb 工具。我希望他们提供一种更丰富的方式来提供有关问题的反馈,而不是简单地说“Touchtracer 已停止”......非常感谢您的回答! 您应该使用 logcat (adb logcat
) 查看出错的日志。以上是关于如何使用 android 模拟器(使用 Ubuntu 12.04 + kivy)测试我的 python 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章