ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JNI中使用AAssetManager_open读取assets文件

2021-07-10 11:02:19  阅读:316  来源: 互联网

标签:__ assets pBuf asset AAssetManager jni include JNI


为了方便jni中使用assets文件
NDK中封装了更方便的接口直接读取assets文件

需要注意 必须在Android.mk中添加 【-landroid】
LOCAL_LDLIBS := -llog -lz
LOCAL_LDLIBS += -landroid

JNI代码如下(示例):

#include "jni_main.h"
#include <pthread.h>
#include <stdio.h>
#include <android/asset_manager_jni.h>
#include <android/asset_manager.h>
#include <string.h>

JNIEXPORT void JNICALL jni_debug_assets(JNIEnv *jenv, jobject thiz, jobject assetManager){
	AAssetManager *pAsm = AAssetManager_fromJava(jenv, assetManager);
	AAsset* asset = AAssetManager_open(pAsm, "web/index.html", AASSET_MODE_UNKNOWN);
	if(NULL == asset){
		ehome_printf("[%s]failed to read (web/index.html) \n", __FUNCTION__);
		return;
	}
	
	if (NULL != asset){
		off_t bufSize = AAsset_getLength(asset);
		char *pBuf = (char *) malloc(bufSize + 1);
		memset(pBuf, 0, bufSize + 1);
		int iRealRead = AAsset_read(asset, pBuf, bufSize);
		AAsset_close(asset);
		
		ehome_printf("[%s]read size : %d\n", __FUNCTION__, iRealRead);
		char text[64] = {0};
		strncpy(text, pBuf, 30);
		free(pBuf);
		pBuf = NULL;
		ehome_printf("[%s]%s\n", __FUNCTION__, text);
	}
}

其中注册方法
{“jni_debug_assets”,"(Landroid/content/res/AssetManager;)V",(void *) jni_debug_assets},

java部分声明
public native void jni_debug_assets(AssetManager assetManager);

java部分调用
jniclass.jni_debug_assets(MainActivity.this.getAssets());

安卓部分目录结构
assets/web/index.html

JNI的注册和使用参考
https://blog.csdn.net/dreamInTheWorld/article/details/118631514

标签:__,assets,pBuf,asset,AAssetManager,jni,include,JNI
来源: https://blog.csdn.net/dreamInTheWorld/article/details/118632048

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有