项目要做Android的自动升级,对于我们之前做iOS的转Cocos开发做Android方面的功能。。。。。
不对说了。这里记录下我的实现过程。
原文地址:http://www.52php.cn/article/p-pjkzfjhe-qr.html
首先我们要先知道Cocos下Android有几个Activity,我推测是只有一个,如果不对的话请批评指正啊。
所以我们要在主Activity也就是AppActivity.java里面添加如下代码:
- staticAppActivityactivity=null;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState)
- {
-
- super.onCreate(savedInstanceState);
- activity=this;
-
-
- }
- publicstaticObjectcppCall_logsth(Stringname)
- {
- returnactivity;
- }
- publicvoidupdateversion(Stringname)
- Log.i("ddd","开始更新");
- //下面三行就是Android更新APK的关键name是apk的路径
- Intentintent=newIntent(Intent.ACTION_VIEW);
- intent.setDataAndType(Uri.fromFile(newFile(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>
- #if1
- #defineLOG_TAG"JniHelper"
- #defineLOGD(...)__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
- #else
- #defineLOGD(...)
- #endif
- #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自动更新。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|