Cocos2d-x3.1下 Android,APK自動升級

來源:互聯網
上載者:User

Cocos2d-x3.1下 Android,APK自動升級

項目要做Android的自動升級,對於我們之前做iOS的轉Cocos開發做Android方面的功能。。。。。

不對說了。這裡記錄下我的實現過程。

原文地址:http://blog.csdn.net/qqmcy/article/details/36713113

首先我們要Crowdsourced Security Testing道Cocos下Android有幾個Activity,我推測是只有一個,如果不對的話請批評指正啊。

所以我們要在主Activity也就是AppActivity.java裡面添加如下代碼:

static AppActivity activity  = null;//一定要靜態對象@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);activity = this;}public static Object cppCall_logsth(String name){return activity;}public void updateversion(String name){Log.i("ddd", "開始更新");//下面三行就是Android更新APK的關鍵  name是apk的路徑Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(new File(name)),"application/vnd.android.package-archive");activity.startActivity(intent);}

之後就是我們在cocos下用C++寫了。

首先添加標頭檔

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#include <jni.h>#include "../../cocos2d/cocos/platform/android/jni/JniHelper.h" //這裡的路徑要根據你工程的實際情況變更#include <android/log.h>#if 1#define  LOG_TAG    "JniHelper"#define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)#else#define  LOGD(...)#endif#endif

下面具體的C++調用Android的代碼。如果對NDK不熟,可以百度下C++和Android調用

////  //  ////  Created by 杜甲 on 14-5-31.////#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)                JniMethodInfo minfo;        jobject jobj;        bool b = JniHelper::getStaticMethodInfo(minfo,                                                "org/cocos2dx/cpp/AppActivity",  //類路徑                                                "cppCall_logsth",   //靜態方法名                                                "(Ljava/lang/String;)Ljava/lang/Object;");   //括弧裡的是參數,後面的是傳回值。                if (!b) {            LOGD("JniHelper::getMethodInfo error...");        }else        {            std::string key = FileUtils::getInstance()->getWritablePath() + "update_mobile.apk";            jstring jkey = minfo.env->NewStringUTF(key.c_str());            jobj =   minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID,jkey);                    }                        b = JniHelper::getMethodInfo(minfo, "org/cocos2dx/cpp/AppActivity",  //類路徑                                     "updateversion",   //靜態方法名                                     "(Ljava/lang/String;)V");   //括弧裡的是參數,後面的是傳回值。        if (!b) {            LOGD("JniHelper::getMethodInfo error...");        }else        {            std::string key = FileUtils::getInstance()->getWritablePath() + "apk安裝包的名字";            jstring jkey = minfo.env->NewStringUTF(key.c_str());            minfo.env->CallVoidMethod(jobj, minfo.methodID,jkey);                    }        #endif

當然調用代碼要寫在apk下載完成之後,但為了減少篇幅所以下載代碼請自行百度。

以上代碼就能夠實現apk自動更新。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.