目录
android.permissions
android.features
android.api
android.minapi
android.sdk
android.ndk
android.ndk_api
android.private_storage
android.ndk_path
android.sdk_path
android.ant_path
android.skip_update
android.accept_sdk_license
android.apptheme
android.wakelock
android.archs
android.allow_backup
android.backup_rules
android.no-compile-pyo
android.release_artifact
android.debug_artifact
log_level
build_dir
bin_dir
在第四节,笔者介绍了buildozer.spec配置文件中的一些常见参数。在本节,我们再来了解下该配置文件中其他一些参数,好让我们更深入了解buildozer.spec的作用。
android.permissions
该参数用来获取权限,有Normal Permissions(对用户隐私没有风险)和Dangerous permissions(需要涉及用户私人信息数据)两种权限区分。以下表格罗列了Normal Permissions的各个权限名称。
注:如果代码中涉及到了网络请求,比如使用了requests库,那必须要开启INTERNET权限,否则会报错。
权限名 | 解释 |
---|---|
ACCESS_LOCATION_EXTRA_COMMANDS | 允许程序访问额外的定位提供者指令 |
ACCESS_NETWORK_STATE | 允许程序获取网络信息状态,如当前的网络连接是否有效 |
ACCESS_NOTIFICATION_POLICY | 通知APP通知显示在状态栏 |
ACCESS_WIFI_STATE | 允许程序获取当前WiFi接入的状态以及WLAN热点的信息 |
BLUETOOTH | 允许程序连接配对过的蓝牙设备 |
BLUETOOTH_ADMIN | 允许程序进行发现和配对新的蓝牙设备 |
BROADCAST_STICKY | 允许程序收到广播后快速收到下一个广播 |
CHANGE_NETWORK_STATE | 允许程序改变网络状态,如是否联网 |
CHANGE_WIFI_MULTICAST_STATE | 允许程序改变WiFi多播状态 |
CHANGE_WIFI_STATE | 允许程序改变WiFi状态 |
DISABLE_KEYGUARD | 允许程序禁用键盘锁 |
EXPAND_STATUS_BAR | 允许程序扩展或收缩状态栏 |
GET_PACKAGE_SIZE | 允许程序获取应用的文件大小 |
INSTALL_SHORTCUT | 创建快捷方式 |
INTERNET | 允许程序访问网络连接,可能产生GPRS流量 |
KILL_BACKGROUND_PROCESSES | 允许程序调用killBackgroundProcesses(String).方法结束后台进程 |
MANAGE_OWN_CALLS | 允许通过自我管理的ConnectionService API管理自己的调用的调用应用程序 |
MODIFY_AUDIO_SETTINGS | 允许程序修改声音设置信息 |
NFC | 允许程序执行NFC近距离通讯操作,用于移动支持 |
READ_SYNC_SETTINGS | 允许程序读取同步设置,读取Google在线同步设置 |
READ_SYNC_STATS | 允许程序读取同步状态,获得Google在线同步状态 |
RECEIVE_BOOT_COMPLETED | 允许程序开机自动运行 |
REORDER_TASKS | 允许程序重新排序系统Z轴运行中的任务 |
REQUEST_COMPANION_RUN_IN_BACKGROUND | 允许伴随应用在后台运行 |
REQUEST_COMPANION_USE_DATA_IN_BACKGROUND | 允许伴随应用在后台使用数据 |
REQUEST_DELETE_PACKAGES | 允许应用程序请求删除软件包 |
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS | 应用程序必须拥有该权限才能使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS |
SET_ALARM | 允许程序设置闹铃提醒 |
SET_WALLPAPER | 允许程序设置桌面壁纸 |
SET_WALLPAPER_HINTS | 允许程序设置壁纸建议 |
TRANSMIT_IR | 允许使用设备的红外发射器 |
USE_FINGERPRINT | 允许应用使用指纹硬件 |
VIBRATE | 允许程序振动 |
WAKE_LOCK | 允许程序在手机屏幕关闭后后台进程仍然运行 |
WRITE_SYNC_SETTINGS | 写入Google在线同步设置 |
以下表格罗列了Dangerous Permissions的各个权限名称。
权限名 | 解释 |
---|---|
READ_CALENDAR | 允许程序读取用户的日程信息 |
WRITE_CALENDAR | 允许程序写入日程,但不可读取 |
CAMERA | 允许程序访问摄像头进行拍照 |
READ_CONTACTS | 允许程序访问联系人通讯录信息 |
WRITE_CONTACTS | 允许程序写入联系人,但不可读取 |
GET_ACCOUNTS | 允许程序访问账户Gmail列表 |
ACCESS_FINE_LOCATION | 允许程序通过GPS芯片接收卫星的定位信息 |
ACCESS_COARSE_LOCATION | 允许程序通过WiFi或移动基站的方式获取用户错略的经纬度信息 |
RECORD_AUDIO | 允许程序录制声音通过手机或耳机的麦克 |
READ_PHONE_STATE | 允许程序访问电话状态 |
READ_PHONE_NUMBERS | 允许程序读取设备的电话号码 |
CALL_PHONE | 允许程序从非系统拨号器里拨打电话 |
ANSWER_PHONE_CALLS | 允许程序接听来电 |
READ_CALL_LOG | 允许程序读取通话记录 |
WRITE_CALL_LOG | 允许程序写入(但是不能读)用户的联系人数据 |
ADD_VOICEMAIL | 允许程序添加语音邮件系统 |
USE_SIP | 允许程序使用SIP视频服务 |
PROCESS_OUTGOING_CALLS | 允许程序监视,修改或放弃播出电话 |
BODY_SENSORS | 允许应用程序访问用户用来测量身体内部情况的传感器数据,例如心率 |
SEND_SMS | 允许程序发送短信 |
RECEIVE_SMS | 允许程序接收短信 |
READ_SMS | 允许程序读取短信内容 |
RECEIVE_WAP_PUSH | 允许程序接收WAP PUSH信息 |
RECEIVE_MMS | 允许程序接收彩信 |
READ_EXTERNAL_STORAGE | 允许程序可以读取设备外部存储空间 |
WRITE_EXTERNAL_STORAGE | 允许程序写入外部存储,如SD卡上写文件 |
android.features
我们可以使用adb罗列安卓设备的特性(feature),比如笔者这里是用夜神模拟器自带的adb,罗列出了所有特性。命令如下所示:
adb shell pm list features
注:如果还不了解adb的使用方法,可以阅读下第五节。
android.api
设置打包所使用的安卓api版本。
android.minapi
设置最低安卓api版本,低于这个值的安卓手机将无法运行打包出来的apk。
android.sdk
设置SDK版本。
android.ndk
设置NDK版本。
android.ndk_api
设置使用的NDK API版本,跟android.minapi的值一样。
android.private_storage
如果设置为True,则表明打包生成的应用在手机上会有一块私有存储空间。Android把外存储分为两块区域,一块是所有应用均可访问的公共空间,另一块是只有应用自己才可访问的私有空间。私有空间只有当前应用才能够读写文件,其他应用不允许进行读写。
android.ndk_path
设置NDK的路径。如果读者的电脑上已经有NDK了,那可以设置这个参数,这样Buildozer就不会再去下载了。当然Buildozer如果已经下载过一次,那之后打包时也不会再去下载的。
android.sdk_path
设置SDK的路径。如果读者的电脑上已经有SDK了,那可以设置这个参数,这样Buildozer就不会再去下载了。当然Buildozer如果已经下载过一次,那之后打包时也不会再去下载的。
android.ant_path
设置ANT的路径。如果读者的电脑上已经有ANT了,那可以设置这个参数,这样Buildozer就不会再去下载了。当然Buildozer如果已经下载过一次,那之后打包时也不会再去下载的。
android.skip_update
该参数表示是否跳过更新。如果设置为True,则在打包时不会去更新Android SDK,可以节省很多时间。
android.accept_sdk_license
该参数表示是否接收许可证(license)。如果设置为True,则自动接受许可证中的条款;如果设置为False,则许可证中的条款会在首次运行buildozer时显示(届时需要用户输入y或者N)。
android.apptheme
用该参数可以设置app主题,如果应用是基于Kivy开发的话,那使用默认的就可以。常见的系统主题请见以下表格。
主题 | 解释 |
@android:style/Theme.Dialog | 灰色背景,将一个Activity显示为能话框模式 |
@android:style/Theme.NoTitleBar | 灰色背景,不显示应用程序标题栏 |
@android:style/Theme.NoTitleBar.Fullscreen | 灰色背景,不显示应用程序标题栏,并全屏 |
@android:style/Theme.Light | 背景为白色 |
@android:style/Theme.Light.NoTitleBar | 白色背景并无标题栏 |
@android:style/Theme.Light.NoTitleBar.Fullscreen | 白色背景,无标题栏,全屏 |
@android:style/Theme.Black | 背景黑色 |
@android:style/Theme.Black.NoTitleBar | 黑色背景并无标题栏 |
@android:style/Theme.Black.NoTitleBar.Fullscreen | 黑色背景,无标题栏,全屏 |
@android:style/Theme.Wallpaper | 用系统桌面为应用程序背景 |
@android:style/Theme.Wallpaper.NoTitleBar | 用系统桌面为应用程序背景,且无标题栏 |
@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen | 用系统桌面为应用程序背景,无标题栏,全屏 |
@android:style/Theme.Translucent | 半透明 |
@android:style/Theme.Translucent.NoTitleBar | 半透明、无标题栏 |
@android:style/Theme.Translucent.NoTitleBar.Fullscreen | 半透明、无标题栏、全屏 |
@android:style/Theme.Panel | 面板风格显示 |
android.wakelock
如果设置为True,那该应用在运行时设备不会真正进入休眠状态。比如我们打开的音乐APP在设备灭屏的状态下也会正常播放音乐,不会让设备真正休眠。
如果将android.wakelock设置为True,那要记得在android.permissions参数中加入WAKE_LOCK值。
android.archs
安卓架构,针对不同的机型设置不同的值即可,可以填入的值有:armeabi-v7a, arm64-v8a, x86, x86_64。
android.allow_backup
设置为True的话,允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或者数据丢失后恢复应用,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复。
android.backup_rules
通过一个xml文件设置备份规则,读者可以前往这个文档地址查看如何编写。
android.no-compile-pyo
设置为True的话,可以禁止在打包时将py文件编译成pyc或pyo格式,能够减少打包时间,当然代码也更容易泄露。
android.release_artifact
release模式下打包出来的文件格式,可以是aab、apk、aar。
android.debug_artifact
debug模式下打包出来的文件格式,可以是apk或aar。
log_level
设置输出日志的等级。0代表只输出error等级的日志,1代表输出error和info等级的日志,2代表输出error、info和debug等级的日志。
build_dir
设置打包时生成的.buildozer文件夹的路径。
bin_dir
设置打包时生成的bin文件夹路径。