QLGame 2d Engine Android端环境搭建(通过jni读取assets目录的文件)
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目录的文件)的更多相关文章
- QLGame 2D Engine编写环境搭建
QLGame 2D Engine编写 (win7环境搭建) 广州麒麟网络工作室,计划制作一款2d game engine,基于opengl(es)平台,暂时支持android,以后考虑支持linux, ...
- Ionic2 cordova angular2 打包到Android apk环境搭建
一.前言 前段时间,公司有个APP项目需要支持不同平台,于是采用了Ionic2 + cordova + angular2,在搭建环境过程中遇到了不少问题,刚好最近有时间整理出来. 二.开发环境搭建 参 ...
- Android测试环境搭建
Android测试环境搭建 一.操作系统 使用Win7_64位操作系统.(可以用其他的系统,下面都是针对Win7 64位进行操作) 二.安装JDK 运行jdk-6u45-windows-x64.exe ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- Android开发环境搭建全程演示(jdk+eclipse+android sdk)
全程演示android开发环境的搭建过程,无需配置环境变量.所有软件都是写该文章时最新版本 一 相关下载 (1) java JDK下载: 进入该网页: http://java.sun.com/java ...
- Java、Android 开发环境搭建
一.准备工作 为便于管理,将java开发工具集中到一个文件夹中.创建D:\javaDevE文件夹,JDK.Android-SDK.Eclipse.tomcat等都可以安装到这个文件夹中. 二.搭建Ja ...
- Android开发环境搭建相关文章列表(转载)
Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...
- Android开发环境搭建及常见问题解决方法
转自: http://www.cnblogs.com/rwxwsblog/p/4769785.html 在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网 ...
- Android测试环境搭建(win7)
一.安装JDK并配置环境变量 1.在Java官方网站上下载相应系统的jdk文件安装,如win7 64 位系统下安装jdk-6u45-windows-x64,全部选择默认的安装路径即可安装完成. 2.配 ...
随机推荐
- maven项目在tomcat中运行遇到的问题
在使用maven构建项目,并在tomcat容器中运行的时候遇到了一些问题,现做一下记录 maven项目中jdk版本会自动恢复 maven项目的编译jdk即使在window -> java -&g ...
- tcl/tk实例详解——glob使用例解
glob命令 这里以实例的形式解释一下glob命令的用法,很多时候纯粹的语法讲解根本讲不清楚,往往没有一个例子清晰,一下就glob命令进行一些分析,环境为Tclsh85,操作系统为windows XP ...
- 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 ...
- JQuery AJAX请求aspx后台方法
利用JQuery封装好的AJAX来请求aspx的后台方法,还是比较方便的,但是要注意以下几点: 1.首先要在方法的顶部加上[WenMethod]的特性(此特性要引入using System.Web.S ...
- Android 系统常用的权限
权限 说明 ACCESS_NETWORK_STATE 允许应用程序获取网络状态信息的权限 ACCESS_WIFI_STATE 允许应用程序获取 Wi-Fi 网络状态的权限 BATTERY_STATE ...
- jQuery多图上传Uploadify插件使用及传参详解
因为工作需要,这两天接触到了Uploadify插件,由于是第一次用,花了我近一天的时间.下面我把我在用这个插件过程详细的分享出来,也让自己巩固一下,也希望能帮助到你. 所需文件: jquery-1.8 ...
- JQ实现复选框的全选反选不选
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- .Net之美读书系列(一):委托与事件
开启新的读书之旅,这次读的书为<.Net之美:.Net关键技术深入解析>. 我是选择性阅读的,把一些自己觉得容易忘记的,或者比较重要的知识点记录下来,以便以后能方便呢查阅. 尊重书本原作者 ...
- Ajax编程技术
AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML. 指一种创建交互式网页应用的网页开发技术. 不是指一种单一的技术,而是有机地利 ...
- .NET垃圾回收机制 转
在.NET Framework中,内存中的资源(即所有二进制信息的集合)分为"托管资源"和"非托管资源".托管资源必须接受.NET Framework的CLR( ...