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

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

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

首先我们要先知道Cocos下Android有几个Activity,我猜測是仅仅有一个。假设不正确的话请批评指正啊。

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

	static AppActivity activity  = null;//一定要静态对象
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.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" //这里的路径要依据你project的实际情况进行更改
#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自己主动更新。

Cocos2d-x3.1下 Android,APK自己主动升级的更多相关文章

  1. mac下Android apk 破解流程

    相关工具下载:http://pan.baidu.com/s/1kTkOicn 首先你要有eclipse工具,在sdk目录下有如下工具可以使用 android:adb shell:进入交互shell  ...

  2. Ubuntu下Android apk反编译

    需要用到的工具 1.apktool_2.0.3.jar https://bbuseruploads.s3.amazonaws.com/0becf6a1-1706-4f2e-9ae6-891e00a8d ...

  3. android apk壳

    壳对于有过pc端加解密经验的同学来说并不陌生,android世界中的壳也是相同的存在.看下图(exe = dex):    概念清楚罗,我们就说下:壳最本质的功能就是实现加载器.你看加壳后,系统是先执 ...

  4. cocos2d jsb 打包 Android APK

    1.首先要会普通的cpp 打包成Android APK 下面所说的是在cocos2d-x 2.2.2 或者 2.3 版本号中.本文在Eclipse总用ndk编译cocos2d-x. 老生常谈cocos ...

  5. eclipse下Android无法自动生成apk文件怎么办?

    eclipse下Android无法自动生成apk文件怎么办? 现象:创建android工程后,通过手动build/clean或自动build均无法在bin文件夹下生成.apk文件 解决方法:进入win ...

  6. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

  7. 【ReactNative】Mac下分分钟打包 Android apk

    时间:2016-11-20 09:17:07 地址:https://github.com/zhongxia245/blog/issues/52 Mac 下 ReactNative如何打包构建Andro ...

  8. android 4.0.4系统下实现apk的静默安装和启动

    转 android 4.0.4系统下实现apk的静默安装和启动 分类: Android 2013-02-14 14:13 1762人阅读 评论(10) 收藏 举报 最近在android 4.0.4系统 ...

  9. 『原』在Linux下反编译Android .apk文件 使用apktool dex2jar JD-eclipse

    一.使用apktool 将 apk反编译生成程序的源代码和图片.XML配置.语言资源等文件 具体步骤: (1)下载反编译工具包:apktool 官方的打不开 http://apktool.shouji ...

随机推荐

  1. 03HibernateJAVA类与数据库表映射配置

    HibernateJAVA类与数据库表映射配置

  2. 第1节 MapReduce入门:mapreduce的wordcount程序执行问题

    执行时报错: 19/06/03 23:00:41 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs. ...

  3. Linux从入门到适应(一):VSCode C++环境配置

    作为在Windows环境下习惯使用Visual Studio IDE的人,对于Linux环境下的Vim编辑使用十分难受,虽然网上很多人说vim非常牛逼和强大,但是我更加习惯于使用VS code的界面, ...

  4. BZOJ4873 LuoguP3749 寿司餐厅

    题面太长,请诸位自行品尝—>寿司餐厅 分析: 首先题目中给了限制条件,假如选了D(i,j)(i<j),那么也就选了D(i+1,j)和D(i,j-1)两个点. 于是我们一下就明白了,哦,最大 ...

  5. WC2007 石头剪刀布 数学+最小费用最大流

    题面: 有N个人参加一场比赛,赛程规定任意两个人之间都要进行一场比赛:这样总共有N*(N-1)/2场比赛.比赛已经进行了一部分,我们想知道在极端情况下,比赛结束后最多会发生多少剪刀石头布情况.即给出已 ...

  6. 珂朵莉树(Chtholly Tree)学习笔记

    珂朵莉树(Chtholly Tree)学习笔记 珂朵莉树原理 其原理在于运用一颗树(set,treap,splay......)其中要求所有元素有序,并且支持基本的操作(删除,添加,查找......) ...

  7. 远程连接mysql数据库

    远程连接mysql数据库需要以下步骤(改表法): 1.数据源(数据库服务器)对要访问数据库进行授权: 2.本地库(本地)连接: 具体方法: 1. 进入数据服务器,输入cmd进入控制台:输入 mysql ...

  8. nginx配置错误页面

    有时候页面会遇到404页面找不到错误,或者是500.502这种服务端错误,这时候我们可能希望自己定制返回页面,不希望看到默认的或者是内部的错误页面,可以通过nginx配置来实现. 1 50x错误对于5 ...

  9. canvas学习--准备

    一)canvas标签 属性: 1.width 和 height 控制canvas宽高: 2.style添加基本样式 3.class,id属性 4.标签内添加一行文本,主要用于浏览器不支持canvas标 ...

  10. Bootstrap-Table 总结

    Bootstrap-Table 总结 jQuery Java Bootstrap-Table JS文件 传参:直接将需要的参数置于 queryParams 方法中,例如 line:formData注意 ...