返回

java-无法在本机 C 应用程序中通过 JNI 从 R.string.* 获取 jstring

发布时间:2022-06-02 21:41:14 363
# java# c++# java# 设备

我正在开发一个原生 c/c++ 应用程序,它通过 strings.xml 文件使用字符串资源。

尝试使用 AAssetManager 加载“strings.xml”文件,没有效果。返回相同的错误

我试过寻找各种其他的实现,但没有一个奏效

Android API 级别(项目):25

Android API 级别(设备):30

到目前为止,我尝试使用的代码如下:

JNIEnv* jni;
g_App->activity->vm->AttachCurrentThread(&jni, NULL);
jclass rcl = jni->FindClass("com.avetharun.rosemary.R$string");
// attempted the above as well as "... R.string" instead of "... R$string"
jfieldID fid = jni->GetStaticFieldID(rcl, "app_name", "s");
// attempted the above as well as "Ljava/lang/String;" instead of "s"
jstring jstr = (jstring)jni->GetObjectField(rcl, fid);
const char* str = jni->GetStringUTFChars(jstr, 0);

Directory tree:

assets

- test.txt

res

- values

- - strings.xml

strings.xml :

<string name="app_name">Rosemary Project</string>

运行它会导致错误:0x0000007f1881daac in __rt_sigtimedwait ()来自 libc.so,以及“序列包含多个元素”。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像