gpt4 book ai didi

android - 调用 AAssetManager_fromJava 时崩溃 : "JNI WARNING: instance fieldID 0x571819bc not valid"

转载 作者:太空狗 更新时间:2023-10-29 15:15:21 25 4
gpt4 key购买 nike

这是完整的警告:

JNI WARNING: instance fieldID 0x571819bc not valid for class Ljava/lang/Class; in Lcom/brokenteapot/lwtemplate/JNI;.onCreate:(Landroid/content/res/AssetManager;)V (GetIntField)

回溯:

#00  pc 00045dd0  /system/lib/libdvm.so (dvmAbort+75)
#01 pc 00039819 /system/lib/libdvm.so
#02 pc 0003e96b /system/lib/libdvm.so
#03 pc 000089b9 /system/lib/libandroid.so (AAssetManager_fromJava+88)
#04 pc 00002f54 /data/data/com.brokenteapot.lwtemplate/lib/libLiveWallpaperTemplate.so (Java_com_brokenteapot_lwtemplate_JNI_onCreate+128)

这是导致它的代码:

Java

public final class LiveWallpaperService extends WallpaperService 
{
static AssetManager assetManager;

@Override
public void onCreate()
{
assetManager = getAssets();
JNI.onCreate(assetManager);
}
}

C++

void Java_com_brokenteapot_lwtemplate_JNI_onCreate(JNIEnv* env, jobject assetManager)
{
AAssetManager* pAssetManager = AAssetManager_fromJava(env, assetManager);
}

我真的不知道这些警告是什么意思,也不知道为什么会崩溃。我几乎完全按照 NDK 示例中的示例进行操作。是因为它是一项服务,所以有所不同吗?

最佳答案

呃,我想通了,JNI 函数中的方法签名是错误的:

void Java_com_brokenteapot_lwtemplate_JNI_onCreate(JNIEnv* env, jobject assetManager)

应该是

void Java_com_brokenteapot_lwtemplate_JNI_onCreate(JNIEnv* env, void* reserved, jobject assetManager)

我真的不明白为什么有些 JNI 函数需要 void* 而有些不需要...

关于android - 调用 AAssetManager_fromJava 时崩溃 : "JNI WARNING: instance fieldID 0x571819bc not valid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13184772/

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