如何用python的Kivy开发app?
网友回复
要使用Kivy开发安卓应用程序,你需要遵循以下步骤:
1. 安装Kivy和Buildozer安装Kivy: 按照上一个步骤安装Kivy。安装Buildozer: Buildozer是一个用于将Kivy应用打包为安卓应用的工具。|开源地址:https://github.com/kivy/buildozerbuildozer采用docker运行的方式2. 创建你的Kivy应用创建一个简单的Kivy应用,例如 main.py:
from kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout class MyApp(App): def build(self): layout = BoxLayout(orientation='vertical') btn1 = Button(text='Button 1') btn2 = Button(text='Button 2') layout.add_widget(btn1) layout.add_widget(btn2) return layout if __name__ == '__main__': MyApp().run()3. 创建Buildozer配置文件
在你的项目目录中,运行以下命令来生成一个Buildozer配置文件:
这会创建一个 buildozer.spec 文件,你可以在其中配置你的应用设置。
4. 配置Buildozer文件打开 buildozer.spec 文件,设置应用的名称、包名等。例如:
# This .spec config file tells Buildozer an app's requirements for being built. # # It largely follows the syntax of an .ini file. # See the end of the file for more details and warnings about common mistakes. [app] # (str) Title of your application title = My Application # (str) Package name package.name = myapp # (str) Package domain (needed for android/ios packaging) package.domain = org.test # (str) Source code where the main.py live source.dir = . # (list) Source files to include (leave empty to include all the files) source.include_exts = py,png,jpg,kv,atlas # (list) List of inclusions using pattern matching #source.include_patterns = assets/*,images/*.png # (list) Source files to exclude (leave empty to not exclude anything) #source.exclude_exts = spec # (list) List of directory to exclude (leave empty to not exclude anything) #source.exclude_dirs = tests, bin, venv # (list) List of exclusions using pattern matching # Do not prefix with './' #source.exclude_patterns = license,images/*/*.jpg # (str) Application versioning (method 1) version = 0.1 # (str) Application versioning (method 2) # version.regex = __version__ = ['"](.*)['"] # version.filename = %(source.dir)s/main.py # (list) Application requirements # comma separated e.g. requirements = sqlite3,kivy requirements = python3,kivy # (str) Custom source folders for requirements # Sets custom source for any requirements with recipes # requirements.source.kivy = ../../kivy # (str) Presplash of the application #presplash.filename = %(source.dir)s/data/presplash.png # (str) Icon of the application #icon.filename = %(source.dir)s/data/icon.png # (list) Supported orientations # Valid options are: landscape, portrait, portrait-reverse or landscape-reverse orientation = portrait # (list) List of services to declare # This is currently only relevant to Android services. # Each service consists of a name (a valid Java class name, with the first letter capitalized) # followed by a colon, followed by the name of the Python script (.py file) that should be # launched. This is optionally followed by ":foreground" for foreground services or # ":foreground:sticky" for sticky foreground services. The default is a background service. # Bound services are not supported. #services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY # # OSX Specific # # # author = © Copyright Info # Kivy version to use osx.kivy_version = 2.2.0 # # Android specific # # (bool) Indicate if the application should be fullscreen or not fullscreen = 0 # (string) Presplash background color (for android toolchain) # Supported formats are: #RRGGBB #AARRGGBB or one of the following names: # red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray, # darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy, # olive, purple, silver, teal. #android.presplash_color = #FFFFFF # (string) Presplash animation using Lottie format. # see https://lottiefiles.com/ for examples and https://airbnb.design/lottie/ # for general documentation. # Lottie files can be created using various tools, like Adobe After Effect or Synfig. #android.presplash_lottie = "path/to/lottie/file.json" # (str) Adaptive icon of the application (used if Android API level is 26+ at runtime) #icon.adaptive_foreground.filename = %(source.dir)s/data/icon_fg.png #icon.adaptive_background.filename = %(source.dir)s/data/icon_bg.png # (list) Permissions # (See https://python-for-android.readthedocs.io/en/latest/buildoptions.html for all the supported syntaxes and properties) #android.permissions = android.permission.INTERNET, (name=android.permission.WRITE_EXTERNAL_STORAGE;maxSdkVersion=18) # (list) features (adds uses-feature -tags to manifest) #android.features = android.hardware.usb.host # (int) Target Android API, should be as high as possible. #android.api = 31 # (int) Minimum API your APK / AAB will support. #android.minapi = 21 # (int) Android SDK version to use #android.sdk = 20 # (str) Android NDK version to use #android.ndk = 23b # (int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi. #android.ndk_api = 21 # (str) Android NDK directory (if empty, it will be automatically downloaded.) #android.ndk_path = # (str) Android SDK directory (if empty, it will be automatically downloaded.) #android.sdk_path = # (str) ANT directory (if empty, it will be automatically downloaded.) #android.ant_path = # (bool) If True, then skip trying to update the Android SDK # This can be useful to avoid excess Internet downloads or save time # when an update is due and you just want to test/build your package # android.skip_update = False # (bool) If True, then automatically accept SDK license # agreements. This is intended for automation only. If set to False, # the default, you will be shown the license when first running # buildozer. # android.accept_sdk_license = False # (str) Android entry point, default is ok for Kivy-based app #android.entrypoint = org.kivy.android.PythonActivity # (str) Full name including package path of the Java class that implements Android Activity # use that parameter together with android.entrypoint to set custom Java class instead of PythonActivity #android.activity_class_name = org.kivy.android.PythonActivity # (str) Extra xml to write directly inside the <manifest> element of AndroidManifest.xml # use that parameter to provide a filename from where to load your custom XML code #android.extra_manifest_xml = ./src/android/extra_manifest.xml # (str) Extra xml to write directl...
点击查看剩余70%