我已经成功地在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仿真器的好链接/教程吗?在
先谢谢你! 谨致问候, 伯恩哈德
我不清楚你到底有什么问题。在
你是说没有仿真器的你的apk构建得很好吗?我这么问是因为模拟器的存在并不会对任何事情产生影响。您可以通过停止仿真器、使用build命令并手动将apk复制到您的设备来进行测试。在
(看起来您的构建有时会成功完成。即使无法复制到设备,它也将位于bin目录中。)
您可以通过多种方式将apk上传到手机上(甚至只是通过电子邮件发送),但最简单的方法是使用android sdk中的
adb
工具-将手机插入计算机,打开其开发模式,然后运行adb install /path/to/apk
。这只需要几秒钟。在我的上一段也谈到了这一点。这是非常简单和容易安装与亚行,我一直这样做时,为安卓开发。实际上,它可能与使用模拟器竞争,因为这两种方法最终都是键入相同的命令并传输到设备(真实的或模拟的)。在
我还建议使用buildozer工具,它是android构建过程的一个很好的包装器,具有更方便的界面。它还可以自己下载相应的android依赖项,并与adb接口。在
听起来你的Android仿真器运行不正常。新AVD的第一次运行速度非常慢,尤其是在旧电脑上。如果你的CPU很慢的话,你可能需要10-20分钟才能进入Android桌面。在
你需要确保的一件事是,你的AVD有“使用主机GPU”在其选项。如果没有这个选项,Kivy将无法在Android仿真器上运行。然而,在我看来,你从来没有达到你的AVD启动完全。在
相关问题 更多 >
编程相关推荐