QLGame 2d Engine win端已经实现了一个动物的动画了,初步的东西已经完成,考虑在Android端也实现这些基本的东西,这样跨平台的引擎也就实现了!

要在Android下编程,首先要实现从Assets文件夹读取资源文件,这就用到了ndk-jni技术!

需要安装 eclpse cdt(开发c++) ndk plugins

下面一步一步来说明下,如何实现读取assets目录下的资源文件!

1.新建一个Android项目,然后右键Android Tools->Add Support,这个时候会弹出一个对话框,会生成一个.so文件,这个就是把我们编写的C++代码打包进去.so中去!

2.编写JNI.java文件,来声明调用这个.so文件

并且实现函数声明

public native  String  ReadFromAssets(AssetManager ass,String filename);

native关键词告诉编译器,这是一个C++的定义方法,需要C++进行具体的代码实现!

还需要载入.so文件,写法如下:

static

{

System.loadLibrary("readassetsdata");

}

3.编译程序(这一步很重要,否则在后一步的生成头文件会失败)

然后CMD窗口到这个工程的bin/classes目录下,输入如下内容:

javah  -classpath  .  -jni  包名.类名即可,然后会在bin/classes文件夹下会生成一个头文件,将其放到jni目录下

生成的头文件如下:

JNIEXPORT jstring JNICALL Java_com_example_readassetsdata_JNI_ReadFromAssets(JNIEnv *, jobject, jobject, jstring);

4.打开自动生成的cpp文件,然后包含刚才的.h头文件,实现这个方法!

#include <jni.h>

#include <android\log.h>

#include <android\asset_manager.h>

#include <android\asset_manager_jni.h>

#include <stdlib.h>

#include "com_example_readassetsdata_JNI.h"

JNICALL jstring Java_com_example_readassetsdata_JNI_ReadFromAssets(JNIEnv *env, jobject obj, jobject obj1, jstring string1) {

AAssetManager* mgr = AAssetManager_fromJava(env, obj1);

if (mgr == NULL) {

return env->NewStringUTF("");

}

/*获取文件名并打开*/

jboolean iscopy;

const char *mfile = env->GetStringUTFChars(string1, &iscopy);

AAsset* asset = AAssetManager_open(mgr, mfile, AASSET_MODE_UNKNOWN);

env->ReleaseStringUTFChars(string1, mfile);

if (asset == NULL) {

return env->NewStringUTF("");

}

/*获取文件大小*/

off_t bufferSize = AAsset_getLength(asset);

char *buffer = (char *) malloc(bufferSize + 1);

buffer[bufferSize] = 0;

int numBytesRead = AAsset_read(asset, buffer, bufferSize);

jstring resultstring;

resultstring=env->NewStringUTF(buffer);

free(buffer);

/*关闭文件*/

AAsset_close(asset);

return resultstring;

}

5.然后就可以ndk-build生成.so文件,在java中进行获取就行!

view=(TextView) findViewById(R.id.textView1);

view.setText(new JNI().ReadFromAssets(getAssets(), "qlgame2dtest.txt"));

就可以通过这样,C++就可以访问Assets目录下的文件了!

QLGame 2d Engine Android端环境搭建(通过jni读取assets目录的文件)的更多相关文章

  1. QLGame 2D Engine编写环境搭建

    QLGame 2D Engine编写 (win7环境搭建) 广州麒麟网络工作室,计划制作一款2d game engine,基于opengl(es)平台,暂时支持android,以后考虑支持linux, ...

  2. Ionic2 cordova angular2 打包到Android apk环境搭建

    一.前言 前段时间,公司有个APP项目需要支持不同平台,于是采用了Ionic2 + cordova + angular2,在搭建环境过程中遇到了不少问题,刚好最近有时间整理出来. 二.开发环境搭建 参 ...

  3. Android测试环境搭建

    Android测试环境搭建 一.操作系统 使用Win7_64位操作系统.(可以用其他的系统,下面都是针对Win7 64位进行操作) 二.安装JDK 运行jdk-6u45-windows-x64.exe ...

  4. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  5. Android开发环境搭建全程演示(jdk+eclipse+android sdk)

    全程演示android开发环境的搭建过程,无需配置环境变量.所有软件都是写该文章时最新版本 一 相关下载 (1) java JDK下载: 进入该网页: http://java.sun.com/java ...

  6. Java、Android 开发环境搭建

    一.准备工作 为便于管理,将java开发工具集中到一个文件夹中.创建D:\javaDevE文件夹,JDK.Android-SDK.Eclipse.tomcat等都可以安装到这个文件夹中. 二.搭建Ja ...

  7. Android开发环境搭建相关文章列表(转载)

    Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...

  8. Android开发环境搭建及常见问题解决方法

    转自: http://www.cnblogs.com/rwxwsblog/p/4769785.html 在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网 ...

  9. Android测试环境搭建(win7)

    一.安装JDK并配置环境变量 1.在Java官方网站上下载相应系统的jdk文件安装,如win7 64 位系统下安装jdk-6u45-windows-x64,全部选择默认的安装路径即可安装完成. 2.配 ...

随机推荐

  1. virtualization-vs-containerization

    http://containerz.blogspot.com/2015/03/virtualization-vs-containerization.html Virtualization vs. Co ...

  2. [翻译]Python with 语句

    With语句是什么? Python's with statement provides a very convenient way of dealing with the situation wher ...

  3. javascript源码阅读推荐

    作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)版权声明:本文的版权归作者与博客园共同所有.转载时请在明显地方注明本文的详细链接,未经作者同意请不要删 ...

  4. http://venkatbaggu.com/file-upload-in-asp-net-mvc-using-dropzone-js-and-html5/

    http://venkatbaggu.com/file-upload-in-asp-net-mvc-using-dropzone-js-and-html5/ http://www.cnblogs.co ...

  5. web 电子商务网站开发笔记整理

    js只保留整数,向上取整,四舍五入,向下取整等函数 来源:ab蓝学网整理 时间:2014-07-09 点击:30131 简介:WEB前端|1.丢弃小数部分,保留整数部分parseInt(5/2)2.向 ...

  6. Hyper-V Windows 8.1 & Windows Server 2012 R2 Q&A

    从Windows8开始,x64位系统自带Hyper-V功能,很多开发者和专业用户往往希望利用的Microsoft提供的这一免费功能,但是微软在这方面并不是最佳. 主要写几个大家经常遇到的问题. Win ...

  7. Android开发MVP模式解析

    http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html 在开发Android应用时,相信很多同学遇到和我一样的情况,虽然 ...

  8. ios Toll-Free Bridging

    有一些数据类型是能够在 Core Foundation Framework 和 Foundation Framework 之间交换使用的.这意味着,对于同一个数据类型,你既可以将其作为参数传入 Cor ...

  9. 游标、type使用示例

    declare  my_cur sys_refcursor; --定义游标变量  type v_record is record( --定义 record类型    obj_id   number,  ...

  10. iOS 项目中将 http 改成 https 后需要改动的地方(密钥验证)

    这种是不验证证书的密钥 AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone] ...