gpt4 book ai didi

android - AAssetManager 无法从共享库访问原始资源

转载 作者:行者123 更新时间:2023-11-29 23:29:16 26 4
gpt4 key购买 nike

我正在尝试访问我在 res/raw/coolvetica.ttf 中的资源。 enter image description here

这是我加载 NDK 共享库的 Java Activity 类:

public class OGLActivity extends Activity{
private GLSurfaceView m_glView;

@Override
public void onCreate(Bundle savedInstanceBundle) {
super.onCreate(savedInstanceBundle);
// some init code and setting the current view here, not neccessary for code to run
getGlyphs(getResources().getAssets(), "Hello World");
}

static {
System.loadLibrary("GlyphCreator");
}

public native int getGlyphs(AssetManager amgr, String text);
}

这是我的共享库 GlyphCreator 中的 NDK C++ 代码:

extern "C"
JNIEXPORT jint JNICALL Java_com_myapplication_sometest_OGLActivity_getGlyphs(JNIEnv *env, jobject object, jobject assetManager, jstring text)
{
AAssetManager *assetMgr = AAssetManager_fromJava(env, assetManager);
if(assetMgr != nullptr)
{
AAsset *fontFile = AAssetManager_open(assetMgr, "res/raw/coolvetica.ttf", AASSET_MODE_BUFFER);
if(fontFile != nullptr)
{
// The code here is never reached, fontFile is always NULL
}
}
}

我已经调试了我的代码并调用了函数 getGlyphs()

fontFile 始终为 NULL,我已尝试从字符串加载资源:"coolvetica.ttf"、"raw/coolvetica.ttf"、"res/raw/coolvetica.ttf",它们都导致 fontFile 为 NULL。

AAssetManager 不是 NULL,我认为获取 AAssetManager 的代码是正确的。

它与共享的库有什么关系吗?它没有资源访问权限吗?

感谢您的帮助。

最佳答案

只是出于帮助他人的目的,将此作为评论区的“答案”: How To Get File In Assets From Android NDK

关于android - AAssetManager 无法从共享库访问原始资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com