项目要做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. 04Hibernate连接数据库环境配置

    Hibernate连接数据库环境配置

  2. windows下载安装mysql

    一.下载mysql 1.下载地址 https://www.mysql.com/downloads/ 2.选择windows,如图 3.点击MySQL Install 4.现在版本是8.0.16,在弹出 ...

  3. filezilla server FTP 安装报错 "could not load TLS network. Aborting start of administration interface"

    filezilla server FTP 安装报错   "could not load TLS network. Aborting start of administration inter ...

  4. PHP中设置session过期的时间

    如何严格限制session在30分钟后过期!1.设置客户端cookie的lifetime为30分钟:2.设置session的最大存活周期也为30分钟:3.为每个session值加入时间戳,然后在程序调 ...

  5. 【06】对AJAX的总结(转)

    对AJAX的总结   通过前面对 AJAX 的讲解,我们可以将 AJAX 请求分成以下几个步骤: 创建 XMLHttpRequest 对象: 设置事件处理函数,处理返回的数据: 初始化并发送请求. 可 ...

  6. Jmeter关联,正则表达式提取器使用2

    正则表达式的用处很多,最基础的用法 1,断言 2,传参(关联) 例子 1.http请求 2正则表达式提取,想要提取列表列中id,一遍打开列表页 如果是1,每次就会取相同的值!匹配数字的权限高于模板$0 ...

  7. xcap发包工具的简单使用2(发送报文)

    上一篇文章介绍了如何构造报文,现在简单讲一下发送报文的步骤 1.获取接口列表 点击主界面工具栏中的“刷新列表”按钮(或对应菜单“interface->Reference interfaces”) ...

  8. PHP读取mysql中的数据

    <!DOCTYPE HTML> <html> <head> <title> PHP动态读取mysql中的数据 </title> <me ...

  9. node.js里的buffer常见操作,copy,concat等实例讲解

    //通过长度构建的buffer内容是随机的 var buffer=new Buffer(100); console.log(buffer); //手动清空buffer,一般创建buffer不会清空 b ...

  10. [bzoj2229][Zjoi2011]最小割_网络流_最小割树

    最小割 bzoj-2229 Zjoi-2011 题目大意:题目链接. 注释:略. 想法: 在这里给出最小割树的定义. 最小割树啊,就是这样一棵树.一个图的最小割树满足这棵树上任意两点之间的最小值就是原 ...