加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos2d-x3.1下 Android,APK自动升级

发布时间:2020-12-14 16:55:44 所属栏目:百科 来源:网络整理
导读:项目要做Android的自动升级,对于我们之前做iOS的转Cocos开发做Android方面的功能。。。。。 不对说了。这里记录下我的实现过程。 原文地址:http://www.jb51.cc/article/p-pjkzfjhe-qr.html 首先我们要先知道Cocos下Android有几个Activity,我推测是只有一

项目要做Android的自动升级,对于我们之前做iOS的转Cocos开发做Android方面的功能。。。。。

不对说了。这里记录下我的实现过程。

原文地址:http://www.52php.cn/article/p-pjkzfjhe-qr.html

首先我们要先知道Cocos下Android有几个Activity,我推测是只有一个,如果不对的话请批评指正啊。

所以我们要在主Activity也就是AppActivity.java里面添加如下代码:

[java] view plain copy
print ?
  1. staticAppActivityactivity=null;//一定要静态对象
  2. @Override
  3. protectedvoidonCreate(BundlesavedInstanceState)
  4. {
  5. //TODOAuto-generatedmethodstub
  6. super.onCreate(savedInstanceState);
  7. activity=this;
  8. }
  9. publicstaticObjectcppCall_logsth(Stringname)
  10. {
  11. returnactivity;
  12. }
  13. publicvoidupdateversion(Stringname)
  14. Log.i("ddd","开始更新");
  15. //下面三行就是Android更新APK的关键name是apk的路径
  16. Intentintent=newIntent(Intent.ACTION_VIEW);
  17. intent.setDataAndType(Uri.fromFile(newFile(name)),
  18. "application/vnd.android.package-archive");
  19. activity.startActivity(intent);
  20. }

之后就是我们在cocos下用C++写了。

首先添加头文件

[cpp] copy
?
    #if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
  1. #include<jni.h>
  2. #include"../../cocos2d/cocos/platform/android/jni/JniHelper.h"//这里的路径要根据你工程的实际情况进行更改
  3. #include<android/log.h>
  4. #if1
  5. #defineLOG_TAG"JniHelper"
  6. #defineLOGD(...)__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
  7. #else
  8. #defineLOGD(...)
  9. #endif
  10. #endif

下面具体的C++调用Android的代码。如果对NDK不熟,可以百度下C++和Android调用

copy
//
  • //
  • //Createdby杜甲on14-5-31.
  • JniMethodInfominfo;
  • jobjectjobj;
  • boolb=JniHelper::getStaticMethodInfo(minfo,226)"> "org/cocos2dx/cpp/AppActivity",//类路径
  • "cppCall_logsth",0); background-color:inherit">//静态方法名
  • "(Ljava/lang/String;)Ljava/lang/Object;");//括号里的是参数,后面的是返回值。
  • if(!b){
  • LOGD("JniHelper::getMethodInfoerror...");
  • }else
  • std::stringkey=FileUtils::getInstance()->getWritablePath()+"update_mobile.apk";
  • jstringjkey=minfo.env->NewStringUTF(key.c_str());
  • jobj=minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID,jkey);
  • b=JniHelper::getMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity",0); background-color:inherit">//类路径
  • "updateversion",0); background-color:inherit">//静态方法名
  • "(Ljava/lang/String;)V");//括号里的是参数,后面的是返回值。
  • std::stringkey=FileUtils::getInstance()->getWritablePath()+"apk安装包的名字";
  • minfo.env->CallVoidMethod(jobj,85); font-family:'microsoft yahei'; line-height:35px; font-size:18px">当然调用代码要写在apk下载完成之后,但为了减少篇幅所以下载代码请自行百度。

    以上代码就能够实现apk自动更新。

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    • 推荐文章
        热点阅读