项目要做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. Java中数组在内存中的图解

    Java中的数组在内存中的图解,其实对于数组,还是比较熟悉的,平时用的也是很多的,在看数据结构与算法的极客时间专栏,最常用的10个数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie ...

  2. ffmpeg处理网络流

    最近遇到好几个人在问ffmpeg如何处理网络流,刚好前段时间也在做这方面,抽空整理了下,把主要代码发出来,希望对大家有用.为简单处理,我这里只简单介绍UDP接收TS流,其实只要是socket接收的都可 ...

  3. javascript中常见undefined与defined的区别

    在JavaScript中相信“undefined”与“defined”对大家来说都肯定不陌生,但是又不是很清楚它们的区别,先看两个demo我们再说, 例1. console.log(parms); / ...

  4. buf.swap16()

    buf.swap16() 返回:{Buffer} 将 Buffer 解释执行为一个16位的无符号整数数组并以字节顺序交换到位.如果 Buffer 的长度不是16位的倍数,则抛出一个 RangeErro ...

  5. assert.ok()详解

    assert.ok(value[, message]) 测试 value 是否为真值.它等同于 assert.equal(!!value, true, message). 如果 value 不是真值, ...

  6. Python之面向对象多态

    Python之面向对象多态 多态与多态性: 多态: 多态是指一类事物有多种形态,一个抽象类有多个子类,因而多态的概念依赖于继承. 1.序列类型有多种形态:字符串.列表.元组. 2.动物有多种形态:Pe ...

  7. Linux下汇编语言学习笔记61 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  8. Help Jimmy DP

    Help Jimmy" 是在下图所示的场景上完成的游戏. 场景中包括多个长度和高度各不相同的平台.地面是最低的平台,高度为零,长度无限. Jimmy老鼠在时刻0从高于所有平台的某处开始下落, ...

  9. UVA 129_ Krypton Factor

    题意: 一个字符串含有两个相邻的重复的子串,则称这个串为容易的串,其他为困难的串,对于给定n,l,求出由前l个字符组成的字典序第n小的困难的串. 分析: 按字典序在字符串末尾增加新的字符,并从当前字符 ...

  10. 【编程大系】Java资源汇总

    1.学习资料: 1)Spring Boot 那些事:https://www.w3cschool.cn/springboot/ 对应的 gitHub代码: https://github.com/Jeff ...