学习android JNI的那些事儿--------4. Field & Method --> Accessing Field

本文详细介绍了如何使用JNI访问Java中的非静态成员变量和静态成员变量,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在我们知道了怎样使用native code访问简单的数据类型和引用参考类型(string,array),下面我们来介绍怎样让jni代码去访问java中的成员变量和成员函数,然后可以再jni中回调java中的方法。

-------------------------------------------------------------------------------------

Accessing fields

java提供2中成员,静态成员和非静态成员,JNI支持了怎么样去get和set这些静态以及非静态成员的方法,下面来举一个例子。

先来访问非静态成员。

我们先在类中声明一个非静态的成员变量:

public class MyJNI extends Activity {
    /** Called when the activity is first created. */
	//declear a instance field
	private String s="123";

在点击按钮的时候我们把title的textview的字符串改成s,

				MyJNI mj = new MyJNI();

				mj.accessField();
				tv.setText(mj.s);

java代码很简单,只要实现我们的功能就好了,下面来看jni是如何进入class中的成员变量的:

Java_com_android_jni_MyJNI_accessField(JNIEnv *env,jobject obj)
{
	jfieldID fid;
	jstring jstr;
	const char *str;

	//get a reference to obj's class
	jclass cls = (*env)->GetObjectClass(env,obj);
//	jclass cls = (*env)->FindClass(env,"com/android/jni/Native");
	__android_log_print(ANDROID_LOG_INFO,"-JNI-","here in native C!");
	//look for the instance field in cls
	fid = (*env)->GetFieldID(env,cls,"s",
			"Ljava/lang/String;");
	if(fid == NULL){
		__android_log_print(ANDROID_LOG_INFO,"-JNI-","can not find field");
		return;
	}
	//read the instance field s
	jstr = (*env)->GetObjectField(env,obj,fid);
	str = (*env)->GetStringUTFChars(env,jstr,NULL);
	if(str == NULL)
		return;
	(*env)->ReleaseStringUTFChars(env,jstr,str);
	//create a new string and overwrite the instance field
	jstr = (*env)->NewStringUTF(env,"abc");
	if(jstr == NULL)
		return; //out of memory
	(*env)->SetObjectField(env,obj,fid,jstr);
}

为了访问目标类中的成员变量,要做2步,首先呼叫GetFieldID从类中来得到一个field ID,根据成员的名字和描述:

fid = (*env)->GetFieldID(env,cls,"s",
"Ljava/lang/String;");

然后根据这个field ID来访问这个成员:

jstr = (*env)->GetObjectField(env,obj,fid);

因为在java中string是对象,所以这边呼叫的是GetObjectField函数。

最后运行模拟器,点击按钮的时候textView会变成JNI中修改的“abc”



ok,这部分结束,下面来看如何访问静态成员变量。

同样的java代码中:

public class MyJNI extends Activity {
    /** Called when the activity is first created. */
	//declear a instance field
	private static int si=100;
	private String s="123";


我们定义一个静态的整形变量si初始化为100,当我们点击按钮的时候通过jni访问static field来改变si的值,然后再title的textView中显示出来。

				MyJNI mj = new MyJNI();

				mj.accessStaticField();
				tv.setText(mj.si+"");

我们来看下如何进入static field:

void
Java_com_android_jni_MyJNI_accessStaticField(JNIEnv *env,jobject obj)
{
	jfieldID fid;	//store the field id
	jint si;

	//get a reference to obj's class
	jclass cls = (*env)->GetObjectClass(env,obj);
	__android_log_print(ANDROID_LOG_INFO,"-JNI-","here in native C!");
	
	//look for the static field si in lcs
	fid = (*env)->GetStaticFieldID(env,cls,"si","I");
	if(fid == NULL)
		return; //field not found
	//access the static field si
	si = (*env)->GetStaticIntField(env,cls,fid);
	(*env)->SetStaticIntField(env,cls,fid,200);
}

大家可以看到只是调用的方法不一样,多了一个static,和非静态的使用方法一样。

-------------------------------------------------------------------------------------------------------

jni中访问class 中的field就到此结束,下面一篇会介绍如何访问java中class 的method。


--------- beginning of main --------- beginning of system 2025-06-05 19:19:52.875 2778-2778 Zygote com.example.diaryapp I seccomp disabled by setenforce 0 2025-06-05 19:19:52.876 2778-2778 xample.diaryap com.example.diaryapp I Late-enabling -Xcheck:jni 2025-06-05 19:19:52.893 2778-2778 xample.diaryap com.example.diaryapp W Unexpected CPU variant for X86 using defaults: x86_64 2025-06-05 19:19:53.227 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/os/Trace;->TRACE_TAG_APP:J (light greylist, reflection) 2025-06-05 19:19:53.227 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (light greylist, reflection) 2025-06-05 19:19:53.258 2778-2778 AppCompatDelegate com.example.diaryapp D Checking for metadata for AppLocalesMetadataHolderService : Service not found 2025-06-05 19:19:53.273 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking) 2025-06-05 19:19:53.273 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking) 2025-06-05 19:19:53.273 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking) 2025-06-05 19:19:53.273 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking) 2025-06-05 19:19:53.293 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection) 2025-06-05 19:19:53.294 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection) 2025-06-05 19:19:53.298 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/graphics/FontFamily;-><init>()V (light greylist, reflection) 2025-06-05 19:19:53.298 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z (light greylist, reflection) 2025-06-05 19:19:53.298 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z (light greylist, reflection) 2025-06-05 19:19:53.298 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/graphics/FontFamily;->freeze()Z (light greylist, reflection) 2025-06-05 19:19:53.298 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/graphics/FontFamily;->abortCreation()V (light greylist, reflection) 2025-06-05 19:19:53.299 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; (light greylist, reflection) 2025-06-05 19:19:53.400 2778-2778 OpenGLRenderer com.example.diaryapp D Skia GL Pipeline 2025-06-05 19:19:53.417 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/view/WindowInsets;->CONSUMED:Landroid/view/WindowInsets; (light greylist, reflection) 2025-06-05 19:19:53.417 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl; (light greylist, reflection) 2025-06-05 19:19:53.417 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/view/View$AttachInfo;->mVisibleInsets:Landroid/graphics/Rect; (light greylist, reflection) 2025-06-05 19:19:53.417 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/view/ViewRootImpl;->mAttachInfo:Landroid/view/View$AttachInfo; (light greylist, reflection) 2025-06-05 19:19:53.429 2778-2820 <no-tag> com.example.diaryapp D HostConnection::get() New Host Connection established 0x7f2e2dac31c0, tid 2820 2025-06-05 19:19:53.429 2778-2820 <no-tag> com.example.diaryapp W Process pipe failed 2025-06-05 19:19:53.431 2778-2820 ConfigStore com.example.diaryapp I android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 2025-06-05 19:19:53.431 2778-2820 ConfigStore com.example.diaryapp I android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0 2025-06-05 19:19:53.431 2778-2820 OpenGLRenderer com.example.diaryapp I Initialized EGL, version 1.4 2025-06-05 19:19:53.431 2778-2820 OpenGLRenderer com.example.diaryapp D Swap behavior 1 2025-06-05 19:19:53.432 2778-2820 EGL_adreno com.example.diaryapp E CreateContext rcMajorVersion:3, minorVersion:2 2025-06-05 19:19:53.440 2778-2820 EGL_adreno com.example.diaryapp D eglCreateContext: 0x7f2e2da45b20: maj 3 min 2 rcv 3 2025-06-05 19:19:53.440 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:19:53.440 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:19:53.472 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:19:53.472 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:19:53.473 2778-2820 vndksupport com.example.diaryapp D Loading /vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so from current namespace instead of sphal namespace. 2025-06-05 19:19:53.473 2778-2820 vndksupport com.example.diaryapp D Loading /vendor/lib64/hw/gralloc.gmin.so from current namespace instead of sphal namespace. 2025-06-05 19:19:53.476 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:19:53.476 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2db09100, error=EGL_BAD_MATCH 2025-06-05 19:19:53.902 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (light greylist, reflection) 2025-06-05 19:19:53.902 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (light greylist, reflection) 2025-06-05 19:19:53.902 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden method Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V (light greylist, reflection) 2025-06-05 19:19:58.602 2778-2845 ProfileInstaller com.example.diaryapp D Installing profile for com.example.diaryapp 2025-06-05 19:22:51.307 2778-2778 Choreographer com.example.diaryapp I Skipped 32 frames! The application may be doing too much work on its main thread. 2025-06-05 19:22:51.377 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:22:51.377 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:22:51.401 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:22:51.401 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2a73b480, error=EGL_BAD_MATCH 2025-06-05 19:22:52.875 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:22:52.875 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:22:52.879 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@b70dda7 2025-06-05 19:22:52.882 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:22:52.882 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2db09880, error=EGL_BAD_MATCH 2025-06-05 19:22:53.180 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:22:53.180 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:22:53.197 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:22:53.197 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2a73b480, error=EGL_BAD_MATCH 2025-06-05 19:22:53.203 2778-2778 Glide com.example.diaryapp W Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored 2025-06-05 19:22:59.515 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@dee6c34 2025-06-05 19:22:59.547 2778-2783 xample.diaryap com.example.diaryapp I Compiler allocated 4MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int) 2025-06-05 19:22:59.572 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:22:59.572 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:22:59.586 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:22:59.586 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2db09b80, error=EGL_BAD_MATCH 2025-06-05 19:23:07.999 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:23:07.999 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:23:08.013 2778-2778 xample.diaryap com.example.diaryapp W Accessing hidden field Landroid/view/View;->mAccessibilityDelegate:Landroid/view/View$AccessibilityDelegate; (light greylist, reflection) 2025-06-05 19:23:08.015 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:23:08.015 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2a73b280, error=EGL_BAD_MATCH 2025-06-05 19:23:10.088 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@a431ad9 2025-06-05 19:23:10.141 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:23:10.141 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:23:10.160 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:23:10.160 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2da27800, error=EGL_BAD_MATCH 2025-06-05 19:23:18.089 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:23:18.089 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:23:18.109 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:23:18.109 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2a736700, error=EGL_BAD_MATCH 2025-06-05 19:23:20.289 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@6e93288 2025-06-05 19:23:20.343 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:23:20.343 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:23:20.364 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:23:20.364 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e1d387d00, error=EGL_BAD_MATCH 2025-06-05 19:23:22.178 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:23:22.178 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:23:22.188 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:23:22.188 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e1d5bf900, error=EGL_BAD_MATCH 2025-06-05 19:23:26.082 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:23:26.082 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:23:26.102 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:23:26.102 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e1d5bf900, error=EGL_BAD_MATCH 2025-06-05 19:27:41.046 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@4c87c69 2025-06-05 19:27:41.111 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:27:41.111 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:27:41.124 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:27:41.124 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e1d4afd00, error=EGL_BAD_MATCH 2025-06-05 19:27:42.651 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:27:42.651 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:27:42.667 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:27:42.667 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e1d4af080, error=EGL_BAD_MATCH 2025-06-05 19:27:42.732 2778-2789 System com.example.diaryapp W A resource failed to call close. 2025-06-05 19:27:42.732 2778-2789 chatty com.example.diaryapp I uid=10062(com.example.diaryapp) FinalizerDaemon identical 1 line 2025-06-05 19:27:42.734 2778-2789 System com.example.diaryapp W A resource failed to call close. 2025-06-05 19:27:44.377 2778-2820 OpenGLRenderer com.example.diaryapp D endAllActiveAnimators on 0x7f2e1623df00 (RippleDrawable) with handle 0x7f2e2dab3800 2025-06-05 19:27:44.393 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:27:44.393 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:27:44.416 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:27:44.416 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e16286180, error=EGL_BAD_MATCH 2025-06-05 19:27:48.098 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@845b71b 2025-06-05 19:27:48.195 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:27:48.195 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:27:48.203 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:27:48.203 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2a73b500, error=EGL_BAD_MATCH 2025-06-05 19:27:49.264 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@a6acb9a 2025-06-05 19:27:49.389 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:27:49.389 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:27:49.397 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:27:49.397 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e16286e00, error=EGL_BAD_MATCH 2025-06-05 19:28:07.132 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@e46c675 2025-06-05 19:28:07.237 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:28:07.237 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:28:07.262 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:28:07.262 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e16286e00, error=EGL_BAD_MATCH 2025-06-05 19:28:08.766 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:28:08.766 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:28:08.772 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@8487834 2025-06-05 19:28:08.777 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:28:08.777 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e162dca00, error=EGL_BAD_MATCH 2025-06-05 19:28:08.811 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:28:08.811 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:28:08.829 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:28:08.829 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2db8d000, error=EGL_BAD_MATCH 2025-06-05 19:28:11.031 2778-2778 ActivityThread com.example.diaryapp W handleWindowVisibility: no activity for token android.os.BinderProxy@4a13060 2025-06-05 19:28:11.094 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:28:11.094 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:28:11.115 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:28:11.115 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e16430500, error=EGL_BAD_MATCH 2025-06-05 19:28:12.651 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:28:12.651 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:28:12.671 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:28:12.671 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e162dc500, error=EGL_BAD_MATCH 2025-06-05 19:28:14.160 2778-2820 OpenGLRenderer com.example.diaryapp D endAllActiveAnimators on 0x7f2e165b7b00 (RippleDrawable) with handle 0x7f2e2db3c200 2025-06-05 19:28:14.178 2778-2820 EGL_adreno com.example.diaryapp E [getAttribValue] Bad attribute idx 2025-06-05 19:28:14.178 2778-2820 EGL_adreno com.example.diaryapp D eglGetConfigAttrib: bad attrib 0x3339 2025-06-05 19:28:14.197 2778-2820 EGL_adreno com.example.diaryapp E tid 2820: eglSurfaceAttrib(1615): error 0x3009 (EGL_BAD_MATCH) 2025-06-05 19:28:14.197 2778-2820 OpenGLRenderer com.example.diaryapp W Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f2e2db8d180, error=EGL_BAD_MATCH
最新发布
06-06
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值