使用Kivy编码时生成的.apk文件大小与Java生成的文件相比如何?

5

我刚刚在kivy中创建了一个应用程序,然后创建了一个apk文件,但是在安卓设备上,我发现创建的apk文件非常大,并且在运行应用程序后,大小不断增加。以下是示例:

  1. 这个示例的.apk代码是一个最小的“Hello World”应用程序。 代码如下:

import kivy kivy.require('1.0.6')

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button

class MyApp(App):
    def build(self):
        return Button(text='Hello world')


if __name__ == '__main__':
    MyApp().run()
  1. 以上代码文件大小为1 kb

  2. 使用Python for Android项目创建其apk的步骤及其大小(6.7 MB): 3.1 ./distribute.sh -m "kivy" 3.2 ./build.py --dir /home/kivy/HelloWorld/ --package org.ex.helloworld --name "HelloWorld" --icon /home/kivy/Work/HelloWorldDistribute/a.png --version 1.3 --orientation portrait debug installd

kivy@kivy-VirtualBox:~/android/python-for-android/dist/first/bin$ du -h HelloWorld-1.3-debug.apk 6.7M HelloWorld-1.3-debug.apk

  1. 通过以下命令在安卓三星Galaxy S3上安装此应用:

    4.1 adb install -r HelloWorld-1.3-debug.apk 421 KB/s (6996727 bytes in 16.208s) pkg: /data/local/tmp/HelloWorld-1.3-debug.apk Success

安卓上的大小:10.5 MB

  1. 如果我在安卓上运行此应用程序一次,然后检查其大小,它将变为24.11 MB。

这是否意味着从kivy创建的安卓应用程序的最小大小为10.5 MB?我看到许多用Java制作的较小的应用程序?有没有办法使kivy制作的应用程序更小?有人能给些建议吗?


2
Java是Android的本地语言。几乎所有运行Java应用程序所需的内容都已包含在Android中。当使用Python Kivy时,没有这种便利性,必须将所有内容都包含在您的APK中。 - brousch
还有一个关于这个问题的未解决的问题在这里。只有libpythonX.so文件的大小为2.8MB(在apk文件安装后,压缩并嵌入到apk文件中的大小为800KB)。 - Omid Raha
1个回答

5
当您使用Kivy和Python编写Android应用程序时,必须在构建中包含一些Kivy和Python库。Kivy本身的大小为5-6mb,因此根据您在应用程序中包含多少数据,大小会有所变化。正如Brousch所指出的那样,每个构建都有一个完整的Python解释器。
构建apk后,如果您查看文件内部,将会看到分发中每个文件的不同大小。
如果您在这里查看,可以找到有关分发基本布局的指南。

2
不仅仅是Python库,Kivy必须在每个APK中捆绑整个Python解释器,因为Android中没有包含Python。 - brousch
@brousch,抱歉我本来想放进去的,我会编辑我的回答。 - Padraic Cunningham
Python应用程序代码在构建过程中被编译,我认为没有包含Python解释器。无论如何,这些库足够大以解释apk的大小。 - user1981924
@user1981924,它已经编译成Python字节码,但仍需要解释器才能运行。 - Padraic Cunningham
@PadraicCunningham,它实际上使用的是Cython,因此不是Python字节码。但你说得对,仍然需要Python解释器来运行。 - user1981924

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接