2012-11-01 2 views
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) 

난 정말 이해가 안 :

답변

0

윽, 내가, 메소드 서명이 JNI 함수의 잘못을 알아 냈어 void * 및 일부는 ...

관련 문제