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

前端之家收集整理的这篇文章主要介绍了Cocos2d-x3.1下 Android,APK自动升级前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

原文地址:http://www.jb51.cc/article/p-pjkzfjhe-qr.html

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

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

  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自动更新。

  • 猜你在找的Cocos2d-x相关文章