3
이 전체 경고입니다 :충돌은 AAssetManager_fromJava를 호출 할 때 "JNI 경고 : 예를 fieldID가 0x571819bc 유효하지 않습니다"
JNI 경고 : 예를 fieldID가 클래스 에 대한 0x571819bc 유효하지 Ljava/랭/클래스; (/ 고해상도/AssetManager Landroid/컨텐츠) V (GetIntField를)
그리고 역 추적 : .onCreate, Lcom/brokenteapot/lwtemplate/JNI에 여기
#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)
입니다 코드입니다 그것의 원인 :
자바
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)
난 정말 이해가 안 :