{"id":10996,"date":"2021-11-04T01:33:13","date_gmt":"2021-11-03T17:33:13","guid":{"rendered":"https:\/\/www.bookcard.net\/wordpress\/?p=10996"},"modified":"2021-11-04T01:33:13","modified_gmt":"2021-11-03T17:33:13","slug":"android_studio_ndk_javavm","status":"publish","type":"post","link":"https:\/\/www.bookcard.net\/wordpress\/android_studio_ndk_javavm\/","title":{"rendered":"Android Studio NDK-\u7372\u53d6JavaVM"},"content":{"rendered":"<figure id=\"attachment_10997\" aria-describedby=\"caption-attachment-10997\" style=\"width: 1280px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/11\/Android_Studio_NDK_JavaVM.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-10997\" src=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/11\/Android_Studio_NDK_JavaVM.jpg\" alt=\"Android Studio NDK-\u7372\u53d6JavaVM\" width=\"1280\" height=\"800\" srcset=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/11\/Android_Studio_NDK_JavaVM.jpg 1280w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/11\/Android_Studio_NDK_JavaVM-300x188.jpg 300w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/11\/Android_Studio_NDK_JavaVM-768x480.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/a><figcaption id=\"caption-attachment-10997\" class=\"wp-caption-text\">Android Studio NDK-\u7372\u53d6JavaVM<\/figcaption><\/figure>\n<p>\u300eJavaVM\u300f\u6307\u300eJava\u865b\u64ec\u6a5f\u300f, \u58f9\u9032\u7a0b\u300eProcess\u300f\u58f9\u300eJavaVM\u300f, \u519a\u8fa6\u721b\u7dda\u7a0b\u300eThread\u300f\u5171\u7528\u58f9\u300eJavaVM\u300f.<\/p>\n<p>\u4fc2\u539f\u751f\u4ee3\u78bc\u7372\u5f97\u300eJava\u865b\u64ec\u6a5f\u300f, \u901a\u904e\u300eJNI_OnLoad ()\u300f\u51fd\u5f0f, \u8f09\u5165\u5171\u4eab\u5eab\u300eSystem.loadLibrary(&#8220;lib&#8221;);\u300f,\u8f09\u5165\u300eLIB.SO\u300f \u6703\u81ea\u52d5\u8abf\u7528\u300eJNI_OnLoad ()\u300f. \u5c07javaVm\u4ee5\u5168\u57df\u8b8a\u91cf\u5132\u5b58.<\/p>\n<p>\u7de9\u5b58JavaVM\u63a5\u53e3\u6307\u91dd<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">JavaVM javaVm;<\/td>\n<\/tr>\n<tr>\n<td width=\"575\">jint JNI_OnLoad (JavaVM* vm, void* reserved){<\/p>\n<p>javaVm = vm;<\/p>\n<p>return JNI_VERSION_1_4;<\/p>\n<p>}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u52a0\u5165\u300ejni.h\u300f\u982d\u6587\u6a94\u8072\u660e\u300eJava\u539f\u751f\u63a5\u53e3\u300f<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">#include &lt;jni.h&gt;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u300eJNI\u300f\u6307\u300eJava Native Interface\u300f\u300eJava\u539f\u751f\u63a5\u53e3\u300f,\u5be6\u73fe\u300eJavaVM\u300f\u540c\u300eNative\u300f\u901a\u4fe1.\u300eJava\u4ee3\u78bc\u300f\u540c\u300e\u539f\u751f\u4ee3\u78bc\u300f\u8abf\u7528.<\/p>\n<p>\u300eJNIEnv\u300f\u6307\u5411\u7576\u524d\u300e\u7dda\u7a0b\u5c40\u90e8\u6578\u64da\u300f, \u300e\u7dda\u7a0b\u5c40\u90e8\u6578\u64da\u300f\u5167\u542b\u300e\u539f\u751f\u51fd\u5f0f\u6307\u91dd\u5217\u8868\u300f. \u58f9\u7dda\u7a0b\u300ethread\u300f\u58f9\u300eJNIEnv\u300f. \u5514\u5f97\u8de8\u7dda\u7a0b\u300ethread\u300f\u50b3\u905e\u5f7c\u6b64\u7368\u7acb,<\/p>\n<p>\u4e8b\u56e0\u300ePOSIX\u7dda\u7a0b\u300f\u5514\u5c6c\u4e8e\u300eJAVA\u300f\u5e73\u81fa, \u5c0e\u81f4\u300eJAVA\u865b\u64ec\u6a5f\u300f\u5187\u767c\u8b58\u5225\u300ePOSIX\u7dda\u7a0b\u300f, \u00a0\u70ba\u5497\u8a2a\u554f\u300eJAVA\u865b\u64ec\u6a5f\u300f,\u300ePOSIX\u7dda\u7a0b\u300f\u7dda\u7a0b\u5148\u9644\u4fc2\u300eJAVA\u865b\u64ec\u6a5f\u300f\u518d\u884c.<\/p>\n<ol>\n<li>\u5c07\u7dda\u7a0b\u9644\u8457\u4fc2JAVA\u865b\u64ec\u6a5f,\u7372\u5f97\u5c6c\u65bc\u672c\u7dda\u7a0bJNIEnv\u63a5\u53e3. \u8fd4\u56de\u300e\u96f6\u300f\u6210\u529f,\u975e\u300e\u96f6\u300f\u70ba\u932f\u8aa4\u78bc<\/li>\n<\/ol>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">\u00a0\u00a0\u00a0 if(javaVm-&gt;AttachCurrentThread(&amp;env,NULL) == 0)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ol start=\"2\">\n<li>\u4fc2JAVA\u865b\u64ec\u6a5f\u5206\u96e2\u7dab\u7a0b.\u8fd4\u56de\u300e\u96f6\u300f\u6210\u529f,\u975e\u300e\u96f6\u300f\u70ba\u932f\u8aa4\u78bc<\/li>\n<\/ol>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">\u00a0\u00a0\u00a0 if(javaVm-&gt;DetachCurrentThread() == 0)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u300eJavaVM\u300f\u6307\u300eJava\u865b\u64ec\u6a5f\u300f, \u58f9\u9032\u7a0b\u300eProcess\u300f\u58f9\u300eJavaVM\u300f, \u519a\u8fa6\u721b\u7dda\u7a0b\u300eThread &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/android_studio_ndk_javavm\/\" class=\"more-link\">\u7e7c\u7e8c\u95b1\u8b80 <span class=\"screen-reader-text\">Android Studio NDK-\u7372\u53d6JavaVM<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[2],"class_list":["post-10996","post","type-post","status-publish","format-standard","hentry","category-android","tag-android","entry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/10996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/comments?post=10996"}],"version-history":[{"count":1,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/10996\/revisions"}],"predecessor-version":[{"id":10998,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/10996\/revisions\/10998"}],"wp:attachment":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/media?parent=10996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/categories?post=10996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/tags?post=10996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}