赞
踩
目录
报错1:Could not resolve all artifacts for configuration ':classpath'.
报错2:No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
解决方案:下载ndk-r16,解压到android-sdk目录下,重命名文件夹16
重新构建安卓应用 briefcase build android
持续更新!
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
使用命令 briefcase new 创建一个应用,命令输入之后,会让我们输入「应用的正式名称」、「应用程序名称」、「域名」、「项目名称」等等信息,也可以直接使用默认值。
cd到demo,直接运行项目
briefcase dev
运行命令,创建应用的脚手架,将会生成一些预配置文件,然后下载依赖的包
briefcase create
构建应用:
briefcase build
运行构建的应用
briefcase run
打包应用,打包完成后,demo\windows目录下会生成一个 .msi 的二进制安装文件
briefcase package
双击
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出现的错误:
(此处不是错误,可以不改)
- #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
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 () {url 'https://maven.aliyun.com/repository/jcenter' }
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: 切换目录D:\xxx\android-sdk-windows\ndk\16,cmd输入ndk-build
在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文件,找到红色圆圈中的文件
查找 # Toolchain. 关键字
修改set(ANDROID_HOST_TAG windows-x86_64)为set(ANDROID_HOST_TAG windows)
然后briefcase package android打包
Gradle 版本高于3.5,local.properties 文件弃用了,当我创建应用的安卓脚手架后版本就是gradle:4.2.0+,同时也遇到了一些问题
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!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。