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.配 ...
随机推荐
- 使用Keytool工具生成证书Keystore和证书签名请求文件
内容概览: keytool的几个常用的命令. 1.创建证书 2.查看证书库 3.导出证书文件 4.导入证书的信息 5.查看证书信息 6.删除密钥库中的条目 7.修改证书条目的口令 ---------- ...
- Orcle11g用户密码恢复
1.当安装Orcle11g后,很久不用,忘记了用户名和密码.可以通过以下方法重置: 如上图及重置用户sys,system密码为123
- 访问 HTML中元素的方法
http://www.w3school.com.cn/jsref/index.asp 1.document.getElementbyId("id1"),Html中,名称是id1 ...
- 17_AOP入门准备_Salay案例(利用动态代理)
[案例分析] 查看Salary: 1.启动日志 2.启动安全性的框架 3.检查权限:如果有查看工资的权限,则查看工资,否则提示"权限不足" [工厂截图] [SalaryManage ...
- 12_复杂查询01_Mapper代理实现
[工程截图] [代码实现] [user.java] package com.Higgin.Mybatis.po; import java.util.Date; public class User { ...
- HDU 1300 Pearls (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1300 题目大意:珠宝店有100种不同质量的珍珠,质量越高价钱越高,为了促进销售,每买一种类型的珍珠,要 ...
- zoj 1649 Rescue (BFS)(转载)
又是类似骑士拯救公主,不过这个是朋友拯救天使的故事... 不同的是,天使有多个朋友,而骑士一般单枪匹马比较帅~ 求到达天使的最短时间,杀死一个护卫1 units time , 走一个格子 1 unit ...
- Linux的关机与重启命令
Linux的关机与重启命令 作者: Aillo, 发布于2009-05-10, 在系统分类下, 1条留言. 重启命令:1.reboot2.shutdown -r now 立刻重启(root用户使用)3 ...
- cp 命令参数
cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大. 语法: cp [选项] 源文件或目录 目标文件或目录 ...
- PHP文件下载方式
<?php// 不能是中文目录,其实如果是 .rar, .zip 类的这些文件,直接连接就可以下载了!function download($file_dir,$file_name)//参数说明: ...