您现在的位置是:主页 > news > 兴义市住房城乡建设局网站/关键词快速排名怎么做

兴义市住房城乡建设局网站/关键词快速排名怎么做

admin2025/5/17 17:30:42news

简介兴义市住房城乡建设局网站,关键词快速排名怎么做,中国网站的建设,做免费漫画网站有风险吗文章目录0 背景1 导入Android文件3 进行自动更新功能编写3.1 调用方法3.2 注意事项4 附赠单元测试文件0 背景 因为项目涉及到使用Qt进行自动跟新,在网上的谷歌、百度、360搜索一番后,并且尝试了里面的各种方法,最后为没有成功。在同事的帮助…

兴义市住房城乡建设局网站,关键词快速排名怎么做,中国网站的建设,做免费漫画网站有风险吗文章目录0 背景1 导入Android文件3 进行自动更新功能编写3.1 调用方法3.2 注意事项4 附赠单元测试文件0 背景 因为项目涉及到使用Qt进行自动跟新,在网上的谷歌、百度、360搜索一番后,并且尝试了里面的各种方法,最后为没有成功。在同事的帮助…

文章目录

  • 0 背景
  • 1 导入Android文件
  • 3 进行自动更新功能编写
    • 3.1 调用方法
    • 3.2 注意事项
  • 4 附赠单元测试文件

0 背景

因为项目涉及到使用Qt进行自动跟新,在网上的谷歌、百度、360搜索一番后,并且尝试了里面的各种方法,最后为没有成功。在同事的帮助下,完成了Android自动更新的功能,实现的答题思路为:使用Qt的JNI调用Android的java更新代码实现自动更新。最后成功实现了更新,这里提供给需要帮助的同学们。

效果:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1 导入Android文件

  • 1, 打开项目,在里面选择Create Templates
    在这里插入图片描述
  • 2,勾选Copy the Gradle files to Android directory

在这里插入图片描述
然后就会自动引入Android的项目文件夹,此时.pro中会自动加入下面的代码:(意思就是把android文件夹下的所有文件都打包进Android)

DISTFILES += \android/AndroidManifest.xml \android/build.gradle \android/gradle.properties \android/gradle/wrapper/gradle-wrapper.jar \android/gradle/wrapper/gradle-wrapper.properties \android/gradlew \android/gradlew.bat \android/res/values/libs.xmlANDROID_PACKAGE_SOURCE_DIR = $$PWD/android

此时我们把下载资源文件中的Android文件夹替换当前项目下的Android文件夹,以此来达到引入编写好的java文件、包、配置的信息。

  • 3 在.pro文件中更改信息

把自动添加的的代码换成下面的代码:(意思是仅在Android编译下,引入文件,并且添加androidextras库,为调用JNI作准备)

android {
QT += androidextrasDISTFILES += \android/AndroidManifest.xml \android/build.gradle \android/gradle.properties \android/gradle/wrapper/gradle-wrapper.jar \android/gradle/wrapper/gradle-wrapper.properties \android/gradlew \android/gradlew.bat \android/res/values/libs.xmlANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
}

3 进行自动更新功能编写

3.1 调用方法

在Qt中需要调用的地方加入下面的代码

引入头文件

#ifdef Q_OS_ANDROID
#include<QAndroidJniEnvironment>
#include<QAndroidJniObject>
#include<QtAndroid>
#endif

使用方法调用

      // Android自动更新的方法
#ifdef Q_OS_ANDROID
//用于检查异常QAndroidJniEnvironment env;QAndroidJniObject m_activity;m_activity = QtAndroid::androidActivity();m_activity.callMethod<void>("updateSoftware");//调用跟新方法if(env->ExceptionCheck()){env->ExceptionDescribe();//异常描述env->ExceptionClear();//清除异常}
#endif

为了调用上面的非静态方法(需要对象创建才能调用),已对AndroidManifest.xml文件进行修改,修改如下:
将第十四行的android:name改为我们调用java文件:

 <application android:hardwareAccelerated="true"  android:networkSecurityConfig="@xml/network_security_config"  android:name="com.janyee.xu.XUpdateApp" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true">

为了能进行网路权限的访问,AndroidManifest.xml文件进行修改,修改如下:
在第十四行加入:

android:networkSecurityConfig="@xml/network_security_config"  

3.2 注意事项

  • 1, 更新方法在UpdateAty.java中,如果需要开启程序自动调用更新(不需要在Qt主程序中调用更新方法),则把文件中方法改为:(updateSoftware方法可以删除)
    public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d("====","更新测试");XUpdateInit.checkUpdate(getApplicationContext(),true);Log.d("====","更新测试2");}
  • 2,如果Qt默认的包名被更改了,则需要进行相应的修改,把XUpdateInit.java中第二十六行改为app的包名:

原始的引入包名:

import org.qtproject.example.BuildConfig;
  • 3,apk下载基地址修改,在XupdateApp.java文件中XHttpSDK.setBaseUrl()填写更新的基地址。
  • 4,修改接受的json数据,在XUpdateInit.java文件中更改接受的json数据

下面的原始的解析json方法,解析的json数据为:
在这里插入图片描述

@Override
public UpdateEntity parseJson(String json) throws Exception {Log.d("====","获取到版本信息,尝试解析:"+json);Log.d("===","本地版本是:"+BuildConfig.VERSION_CODE);Gson gson=new Gson();CodeMsg cm= gson.fromJson(json, CodeMsg.class);UpdateEntity entity=new UpdateEntity();if(cm.getCode()==200){entity.setDownloadUrl(cm.getResult().getDownloadUrl());//下载地址entity.setVersionCode(cm.getResult().getClientVersionNumber());//版本号entity.setVersionName(cm.getResult().getVersionName());//版本名字entity.setUpdateContent(cm.getResult().getPromptInfo());//更新内容entity.setIsIgnorable(cm.getResult().getClientVersionNumber()<BuildConfig.VERSION_CODE);//忽律entity.setHasUpdate(cm.getResult().getClientVersionNumber() > BuildConfig.VERSION_CODE);//更新}return entity;}

如果需要编写自己的json数据,则自己修改java方法即可。

注意⚠️:此自动更新的方法,参考了xuexiangjys的开源更新库。

4 附赠单元测试文件

码云地址
github
csdn下载