标题:Qt安卓开发经验技巧总结V202308
作者:liudianwu
日期:2023-08-20 11:41
内容:
### 01:01-05
1. pro中引入安卓拓展模块 QT += androidextras 。
2. pro中指定安卓打包目录 ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android 指定引入安卓特定目录比如程序图标、变量、颜色、java代码文件、jar库文件等。
- AndroidManifest.xml 每个程序唯一的一个全局配置文件,里面xml格式的数据,标明支持的安卓版本、图标位置、横屏竖屏、权限等。这个文件是最关键的,如果没有这个文件则Qt会默认生成一个。
- android/res/drawable-hdpi drawable-xxxhdpi 等目录下存放的是应用程序图标。
- android/res/layout 目录下存放的布局文件。
- android/res/values/libs.xml 存储的一些变量值。
- android/libs 目录下存放的jar库文件。
- android/src 目录下存放的java代码文件,可以是根据包名建立的一层层子目录,也可以直接在src目录下。
- 其他目录自行搜索安卓目录规范。
- 后面的说明统一用的android目录举例,其实你可以改成任意目录,比如你的代码目录下是xxoo存放的安卓相关的打包文件,你就写成 ANDROID_PACKAGE_SOURCE_DIR = $$PWD/xxoo 。
3. java类名必须和文件名完全一致,区分大小写。
4. java类必须在android/src目录下不然不会打包到apk文件,可以是子目录比如 android/src/com/qt 。
5. Qt代码中的QAndroidJniObject指定传入的java包名,必须严格和java文件package完全一致,不然程序执行到此处会因为找不到而崩溃。
- android/scr/MainActivity.java 顶部 没有 package 则代码中必须是 QAndroidJniObject javaClass("MainActivity");
- android/scr/MainActivity.java 顶部 package com.qandroid; 则代码中必须是 QAndroidJniObject javaClass("com/qandroid/MainActivity");
- android/scr/com/example/MainActivity.java 顶部 package com.qandroid; 则代码中必须是 QAndroidJniObject javaClass("com/qandroid/MainActivity");
- android/scr/com/example/MainActivity.java 顶部 package com.example.qandroid; 则代码中必须是 QAndroidJniObject javaClass("com/qandroid/example/MainActivity");
- 总之这个包名是和代码中的package后面一段吻合,而不是目录路径。为了统一管理方便查找文件,建议包名和目录路径一致。
### 02:06-10
6. Qt只能干Qt内部类的事情,做一些简单的UI交互还是非常方便,如果涉及到底层操作,还是需要熟悉java会如虎添翼,一般的做法就是写好java文件 ..
#1 [圣域天子 08-29 09:06]
来点实际的干货,比如:
怎么具体接入推送
怎么扫码
怎么拍照
怎么打电话
怎么打开其它app的指定页面(URL?)
....
....
#2 [vres197 08-30 10:37]
qt6配置安卓开发环境,一件下载配置,简直不要方便太多。
#3 回 圣域天子 的帖子 [fsu0413 09-02 17:34]
圣域天子:来点实际的干货,比如:
怎么具体接入推送
怎么扫码
怎么拍照
怎么打电话
....... (2023-08-29 09:06)
接入推送 -> 监视通知栏还是只是发通知?发通知的话可能用通用接口就能做?
扫码和拍照 -> 先申请权限,申请完之后用QtSensors里的Camera系列(我没用过)
打开其他app -> 获得你要的这个其他app的indent,使用Qt提供的接口(啥来着忘了)就可以打开(安卓11+需要通过此方法授权外部存储权限)
打电话 -> 在打开其他app基础上把电话号码加上(猜的)