Python跨平台应用-BeeWare打造移动端应用和构建Android时的异常处理

目录

简介

安装

创建demo

运行

打包为Windows程序

打包为安卓APP

构建安卓错误处理

>>gradle改为本地

报错1:Could not resolve all artifacts for configuration ':classpath'.

>>解决方案:使用阿里云镜像替代jcenter地址

报错2:No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi

解决方案:下载ndk-r16,解压到android-sdk目录下,重命名文件夹16

>>指定ndk目录

编辑android.toolchain.cmake文件

重新构建安卓应用  briefcase build android

Gradle 版本高于3.5

NDK.dir属性定位NDK方法弃用


持续更新!

简介

Python 语言编写图形界面程序的框架有很多,但是有两款框架号称"一次编写,处处部署",就是Kivy 和 BeeWare ,基于这些个框架编写的图形界面程序,都能够打包为全平台的应用程序,比如:Windows、Linux、macOS、Android、IOS。

Kivy 是一个跨平台的Python GUI,可以在应用程序中使用非本机UI工具包,BeeWare项目是原生Python移动应用,可以构建外观和感觉上对于每个特定移动(和桌面)平台都是100%本机的应用程序,缺点是BeeWare项目仍是一个相对较新的项目。两款框架对比起来其实都差不多,但是Kivy 移动端的打包需要在linux上,不如 BeeWare 方便,所以此处选择了BeeWare

安装

在 Windows 上使用,我们首先需要安装 Git 和 WiX Toolset

ps:python3

pip 工具安装 BeeWare

pip install briefcase

安装Python toga包 一个 Python 原生的, 操作系统原生的 GUI 工具包。

pip install toga

创建demo

使用命令 briefcase new 创建一个应用,命令输入之后,会让我们输入「应用的正式名称」、「应用程序名称」、「域名」、「项目名称」等等信息,也可以直接使用默认值。

 

 

运行

cd到demo,直接运行项目

briefcase dev

  

打包为Windows程序

运行命令,创建应用的脚手架,将会生成一些预配置文件,然后下载依赖的包

briefcase create

构建应用:

briefcase build

运行构建的应用

briefcase run

打包应用,打包完成后,demo\windows目录下会生成一个 .msi 的二进制安装文件

briefcase package

      

 双击

打包为安卓APP

pytest-astropy 0.8.0要求安装以下包,先安装上

pip install pytest-cov
pip install pytest-filter-subpackage

创建应用的安卓脚手架

briefcase create android

构建安卓应用

briefcase build android

运行一下构建好的安卓应用,这里会让选择设备,可以选择 BeeWare 提供的安卓虚拟机或者是在电脑上连接自己的手机

briefcase run android

打包安卓应用

briefcase package android

在 .\android\gradle\Hello World\app\build\outputs 找到打包好的文件

BeeWare 提供了两种打包好的文件,一种是用于上架Google Play 的.aab 格式文件,

一种是用于调试的 .apk 文件

构建安卓错误处理

briefcase build android出现的错误:

>>gradle改为本地

(此处不是错误,可以不改)

#distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
distributionUrl=file:///D:/xxx/az/.gradle/wrapper/dists/gradle-5.4.1-all/3221gyojl5jsh0helicew7rwx/gradle-5.4.1-all.zip

报错1:Could not resolve all artifacts for configuration ':classpath'.

Could not resolve all artifacts for configuration ':classpath'.
   > Could not resolve com.google.guava:guava:27.0.1-jre.

// 解决方案:
在demo\android\gradle\demo的build.gradle中的build.gradle里添加jcenter

>>解决方案:使用阿里云镜像替代jcenter地址

jcenter () {url 'https://maven.aliyun.com/repository/jcenter' }

报错2:No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi

Execution failed for task ':app:stripDebugDebugSymbols'
No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi

打开文件夹 demo\android\gradle\demo\app\.cxx 找到ndk_locator_record.json打开

切换到NDK的的toolchais目录下确认是否有arm-linux-androideabi该工具目录,如果确认没有该工具文件,可在sdk manager中取消勾选ndk–>apply–>卸载后重新安装,也可以借助idea。

找到toolchains文件夹,确实没有arm-linux-androideabi文件夹,打开cmd,mklink /j 创建arm-linux-androideabi文件夹软链接指向 llvm文件夹

(其实是因为版本的问题,高版本和低版本的ndk目录不一样,此处步骤略过,直接下载ndk-r16)

 

mklink /j arm-linux-androideabi llvm
mklink /j aarch64-linux-android llvm
mklink /j x86 llvm
mklink /j x86_64 llvm
mklink /j x86-64 llvm

解决方案:下载ndk-r16,解压到android-sdk目录下,重命名文件夹16

验证ndk: 切换目录D:\xxx\android-sdk-windows\ndk\16,cmd输入ndk-build

>>指定ndk目录

在demo\android\gradle\demo下创建local.properties,内容如下

ndk.dir=D\:\\xxx\\zhuangjiruanjian\\android-sdk-windows\\ndk\\16

如果此时运行还报错:

The CMAKE_C_COMPILER:
      D:/xxxxxxxxxxxx/clang.exe
    is not a full path to an existing compiler tool.

打开CMakeSystem.cmake文件,找到红色圆圈中的文件

编辑android.toolchain.cmake文件

查找  # Toolchain.  关键字

修改set(ANDROID_HOST_TAG windows-x86_64)为set(ANDROID_HOST_TAG windows)

重新构建安卓应用  briefcase build android

然后briefcase package android打包

Gradle 版本高于3.5

Gradle 版本高于3.5,local.properties 文件弃用了,当我创建应用的安卓脚手架后版本就是gradle:4.2.0+同时也遇到了一些问题

NDK.dir属性定位NDK方法弃用

NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please use android.ndkVersion or android.ndkPath in build.gradle to specify the NDK to use. https://developer.android.com/r/studio-ui/ndk-dir

删除local.properties 中的dir配置,在app/build.gradle 中配置 android{ndkPath}。注意此版本号对应的ndk 版本需存在,文档

android {
    ndkPath  "D:\\xxx\\zhuangjiruanjian\\android-sdk-windows\\ndk/16"
}

其次gradle-wrapper.properties改为对应的版本

distributionUrl=file:///D:/xxx/az/.gradle/wrapper/dists/gradle-6.8.3-all/6czipnbiesy2sl92ioo8dht91/gradle-6.8.3-all.zip

end!

  • 17
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑶山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值