首页 > 编程知识 正文

androidassets目录(Android ndk下用AssetManager读取assets的资源)

时间:2023-05-05 23:08:06 阅读:124084 作者:1689

使用cocos2dx在Android上进行游戏开发时,遇到了奇怪的事情。 任何代码都无法读取资源文件。 不要要求更新版本的Api。

在Android ndk api第9级之后,提供了一组称为资产管理器的API。

这个api的工作原理是

- Java通过JNI将getAssets中得到的资产管理器传递给JNI的c函数。

- JNI的c函数通过AAssetManager_fromJava检索此AssetManager对象。

-通过一系列资产管理器的api操作资产。

c的jni函数如下

saticaassetmanager * gassetmgr=null;

extern'C '

{

void Java _ org _ cocos2d x _ lib _ cocos2d x activity _ nativesetassetmanager (JNI env * env,jclasscls,jobjectassetasetetmanation manager

{

gassetmgr=aassetmanager _ from Java (env,asset manager );

}

(;

读取资源的方法如下

do{

asset * passet=aasset manager _ open (gassetmgr,pszFileName,AASSET_MODE_UNKNOWN );

if(passet==null ) break;

size _ tsize=aasset _ getlength (passet );

是if(size0)

{

pData=newunsignedchar[size];

intiret=aasset_read(passet,pData,size );

if(iret=0) )

{

delete[]pData;

pdata=空;

}

}

asset_close(passet;

if(passet==null ) size=0;

是if(psize )

*pSize=size;

(while ) 0;

这里修改的是cocos2dx的CCFileUtils_Android.cpp中的getFileData函数。

最后,在编译libgame.so时,请注意通过将-landroid添加到Android.mk的LOCAL_LDLIBS选项中来链接相关库。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。