Android的APK文件安装(QtCreator6.0.1+Qt5.15.2+jni+Arm64-v8a)

本文档详述了使用Qt Creator 6.0.1和Qt 5.15.2,通过JNI在Android(包括鸿蒙系统)上实现APK安装的方法。包括新建Qt项目、修改AndroidManifest注册FileProvider、添加权限、创建update_files.xml、添加依赖以及通过JNI调用安装APK的步骤。重点讲解了在Android 7.0以上版本中,如何处理权限和FileProvider的配置。
摘要由CSDN通过智能技术生成

前言

因项目需要,需要在鸿蒙系统下实现自动升级功能,应用程序使用的是Qt for android开发,因此只要实现android下的apk安装就可以了。网上资料不少,但真正可以用的不多,大部分资料还有些过时了。

本次文档,记录通过jni进行APK文件安装

一、实现方法

Qt使用jni安装的原理基本相同,实现方法主要分如下两种:

1.使用jni直接调用已写好的java代码

2.使用jni直接调用java接口

两者需要了解下java相关的代码,后者要求更高一点,每一步操作,都要经过jni。前者需要额外编写java代码,后者直接在C++中调用即可

笔者本次使用的是后者,我们看下如何实现

二、新建Qt项目

本文档着重实现apk安装,因此非相关部分,就不详细介绍了

1.新建一个Qt Quick项目

2.项目文件添加androidextras模块

3.编写工具类Tool,并将实例注册到qml上下文中

4.qml界面放入一个Label和一个Button,并实现调用工具类Tool的installApk()函数

5.生成android相关配置文件

三、修改AndroidManifest ,注册FileProvider

1.修改包名Package name

此步非必要,但建议读者实际使用时,修改成自己的

2.添加权限Permissions

权限代码添加如下

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
     <application
         ...>
         ...
     </application>
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 </manifest>

(1)android.permission.REQUEST_INSTALL_PACKAGES

这个权限在下拉菜单中,是找不到的,需要手工添加到AndroidManifest.xml中

Android7.0引入“私有目录被限制访问”,“StrictMode API 政策”。

targetsdkversion大于25(android 7.1.1及以上),必须声明REQUEST_INSTALL_PACKAGES权限,见官方说明

(2)android.permission.READ_EXTERNAL_STORAGE

若android版本在6.0及以上,可以不用添加。因为从Android6.0开始,引入的动态权限控制(Runtime Permissions),需要运行时,实时获取才行。 

3.添加FileProvider

若android版本在7.0及以上,必须要注册FileProvider

添加如下代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
     <application
         ...>
         <provider
             android:name="android.support.v4.content.FileProvider"
             android:authorities="edu.xidianqd.updatefileprovider"
             android:grantUriPermissions="true"
             android:exported="false">
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
                 andro
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

꧁白杨树下꧂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值