{"id":1013,"date":"2012-02-29T16:05:11","date_gmt":"2012-02-29T08:05:11","guid":{"rendered":"http:\/\/blog.newnaw.com\/?p=1013"},"modified":"2012-02-29T16:05:11","modified_gmt":"2012-02-29T08:05:11","slug":"%e5%9c%a8%e6%96%b0%e7%9a%84android%e5%b7%a5%e7%a8%8b%e4%b8%ad%e8%b0%83%e7%94%a8%e5%b7%b2%e7%bb%8f%e7%bc%96%e8%af%91%e5%a5%bd%e7%9a%84so%e5%ba%93%e6%96%87%e4%bb%b6%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"https:\/\/blog.newnaw.com\/?p=1013","title":{"rendered":"\u5728\u65b0\u7684Android\u5de5\u7a0b\u4e2d\u8c03\u7528\u5df2\u7ecf\u7f16\u8bd1\u597d\u7684so\u5e93\u6587\u4ef6\u4ee3\u7801"},"content":{"rendered":"<p>\u3000\u3000\u4f9d\u65e7\u662fAndroid\uff0cNDK\uff0cJNI\u76f8\u5173\u7684\u95ee\u9898\u3002<br \/>\u3000\u3000\u7167\u7740ndk\u5e2e\u52a9\u7684\u8bf4\u660e\uff0c\u8fd0\u884c&lt;ndk&gt;\/samples\u76ee\u5f55\u4e0b\u7684hello-jni\u5de5\u7a0b\u540e\uff0c\u4f60\u4e00\u5b9a\u60f3\u77e5\u9053\u5982\u4f55\u5728\u81ea\u5df1\u7684\u9879\u76ee\u91cc\u8c03\u7528\u522b\u4eba\u5df2\u7ecf\u7f16\u8bd1\u597d\u7684.so\u5e93\u6587\u4ef6\u3002\u4e8e\u662f\u65b0\u5efa\u4e00\u4e2aAndroid\u5de5\u7a0b\uff0c\u5c06hello-jni\u4f8b\u5b50\u4e2dndk-build\u540e\u7684\u7ed3\u679c\uff1alibs\u6587\u4ef6\u5939\uff08\u5305\u62ec\u5176\u4e0b\u6240\u6709\u5185\u5bb9\uff09\u62f7\u8d1d\u5230\u65b0\u5efa\u5de5\u7a0b\u7684\u6839\u76ee\u5f55\u4e0b\uff0c\u4eff\u7167hello-jni\u7684\u4ee3\u7801\uff0c\u8c03\u7528native\u65b9\u6cd5\uff1a<\/p>\n<div style=\"border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px\" id=\"codeSnippetWrapper\">\n<div style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\" id=\"codeSnippet\">\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum1\">   1:<\/span> <span style=\"color: #0000ff\">package<\/span> com.my.SoTest;<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum2\">   2:<\/span>&nbsp; <\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum3\">   3:<\/span> <span style=\"color: #0000ff\">import<\/span> android.app.Activity;<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum4\">   4:<\/span> <span style=\"color: #0000ff\">import<\/span> android.os.Bundle;<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum5\">   5:<\/span> <span style=\"color: #0000ff\">import<\/span> android.widget.TextView;<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum6\">   6:<\/span>&nbsp; <\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum7\">   7:<\/span> <span style=\"color: #0000ff\">public<\/span> <span style=\"color: #0000ff\">class<\/span> SoTestActivity <span style=\"color: #0000ff\">extends<\/span> Activity {<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum8\">   8:<\/span>     <span style=\"color: #008000\">\/** Called when the activity is first created. *\/<\/span><\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum9\">   9:<\/span>     @Override<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum10\">  10:<\/span>     <span style=\"color: #0000ff\">public<\/span> <span style=\"color: #0000ff\">void<\/span> onCreate(Bundle savedInstanceState) {<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum11\">  11:<\/span>         <span style=\"color: #0000ff\">super<\/span>.onCreate(savedInstanceState);<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum12\">  12:<\/span>         <\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum13\">  13:<\/span>         TextView tv=<span style=\"color: #0000ff\">new<\/span> TextView(<span style=\"color: #0000ff\">this<\/span>);<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum14\">  14:<\/span>         tv.setText(stringFromJNI());<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum15\">  15:<\/span>         setContentView(tv);<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum16\">  16:<\/span>     }<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum17\">  17:<\/span>     <span style=\"color: #0000ff\">public<\/span> <span style=\"color: #0000ff\">native<\/span> String stringFromJNI();<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum18\">  18:<\/span>     <span style=\"color: #0000ff\">static<\/span> {<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum19\">  19:<\/span>         System.loadLibrary(<span style=\"color: #006080\">\"hello-jni\"<\/span>);<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum20\">  20:<\/span>     }<\/pre>\n<p><!--CRLF--><\/p>\n<pre style=\"border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px\"><span style=\"color: #606060\" id=\"lnum21\">  21:<\/span> }<\/pre>\n<p><!--CRLF--><\/div>\n<\/div>\n<p>\u3000\u3000\u8fd0\u884c\u540e\uff0clogcat\u8bb0\u5f55\u4ee5\u4e0b\u9519\u8bef\uff1a<\/p>\n<blockquote>\n<p>No implementation found for native Lcom\/my\/SoTest\/SoTestActivity;.stringFromJNI ()Ljava\/lang\/String;<br \/>&#8230;<br \/>java.lang.UnsatisfiedLinkError: stringFromJNI<\/p>\n<\/blockquote>\n<p>\u3000\u3000\u5728hello-jni\u7684\u4ee3\u7801\u6ce8\u91ca\u91cc\u660e\u786e\u8bf4\u660e\uff0cUnsatisfiedLinkError\u9519\u8bef\u662f\u7531\u4e8enative\u4ee3\u7801\u4e2d\u6ca1\u6709\u8be5\u65b9\u6cd5\u7684\u5b9e\u73b0\u800c\u5f15\u8d77\u7684\uff0c\u4f46stringFromJNI\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u5728c\u4ee3\u7801\u4e2d\u662f\u6709\u7684\uff1b\u524d\u4e00\u4e2a\u9519\u8bef\u5c31\u6bd4\u8f83\u660e\u786e\u4e86\uff0c\u662f\u5728Lcom\/my\/SoTest\/SoTestActivity\u4e2d\u53bb\u627e\u8fd9\u4e2a\u65b9\u6cd5\u5b9e\u73b0\u7684\uff0c\u6253\u5f00hello-jni.c\u6587\u4ef6\u770b\u770b\u8be5\u51fd\u6570\u5934\uff0c\u5176\u4e2d\u6709\u8fd9\u6837\u7684\u5b57\u6837\uff1aJava_com_example_hellojni_HelloJni_stringFromJNI\uff0c\u800ccom.example.hellojni\u6070\u597d\u662f\u4f8b\u5b50\u5de5\u7a0b\u7684package name\uff0cHelloJni\u5219\u662fclass\u7684\u540d\u79f0\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u6211\u4eec.so\u4e2d\u51fd\u6570\u58f0\u660e\u6d89\u53ca\u5230\u7684package name\u548cclass name\u4e0e\u8c03\u7528\u5b83\u7684package name\u548cclass name\u4e0d\u7b26\u3002google\u4e00\u4e0b\u5370\u8bc1\u4e86\u8fd9\u4e2a\u731c\u6d4b\uff0c\u4f46\u63d0\u4f9b\u73b0\u6210\u89e3\u51b3\u529e\u6cd5\u7684\u4e0d\u591a\uff0c\u603b\u4e0d\u80fd\u81ea\u5df1\u5de5\u7a0b\u7684package name\u5fc5\u987b\u548c.so\u91cc\u7684\u4e00\u6837\u5427\u3002<br \/>\u3000\u3000\u641c\u7d22\u770b\u5230\u4e86\u4e00\u7bc7NDK\u7684\u6559\u7a0b\uff0c<a href=\"http:\/\/marakana.com\/forums\/android\/examples\/49.html\">Using NDK to Call C code from Android Apps<\/a>\uff08\u9700\u7ffb\u5899\uff09\uff0c\u91cc\u9762\u5199\u660e\u4e86\u5728\u4e00\u4e2a\u666e\u901aAndroid\u5de5\u7a0b\u4e2d\uff0c\u5982\u4f55\u4ece\u96f6\u5f00\u59cb\u7ec4\u88c5\u81ea\u5df1\u7684native\u4ee3\u7801\u3002\u5927\u81f4\u7684\u6b65\u9aa4\u662f\uff0c\u9996\u5148\u5199\u4e00\u4e2ajava\u7c7b\uff0c\u91cc\u9762\u58f0\u660e\u4e00\u4e9b\u9700\u8981\u5b9e\u73b0native\u65b9\u6cd5\uff08\u51fd\u6570\u7b7e\u540d\u5373\u53ef\uff09\uff0c\u7136\u540e\u7528javah\u547d\u4ee4\u6765\u751f\u6210\u5bf9\u5e94\u7684header\u6587\u4ef6\uff0c\u91cc\u9762\u7684\u5185\u5bb9\u662f\u81ea\u52a8\u751f\u6210\u7684native\u51fd\u6570\u58f0\u660e\uff0c\u7136\u540e\u7167\u7740\u8fd9\u4e2a\u58f0\u660e\u5b9e\u73b0\u5404\u4e2a\u51fd\u6570\uff0c\u6700\u540e\u7f16\u8bd1\uff0c\u7528\u6700\u521d\u7684java\u7c7b\u8c03\u7528\u3002<br \/>\u3000\u3000\u53d7\u6b64\u542f\u53d1\uff0c\u6211\u4eec\u5728\u62ff\u5230\u522b\u4eba\u5df2\u7ecf\u7f16\u8bd1\u597d\u7684.so\u6587\u4ef6\u540e\uff0c\u53ef\u9996\u5148\u65b0\u5efa\u4e00\u4e2ajava\u7c7b\uff0c\u6240\u5728package\u7684\u540d\u79f0\u548cclass\u540d\u79f0\u90fd\u4e0e.so\u6587\u4ef6\u4e2d\u51fd\u6570\u7b7e\u540d\u63d0\u793a\u7684\u4e00\u81f4\uff0c\u5728\u8fd9\u4e2a\u7c7b\u4e2d\u52a0\u5165native\u65b9\u6cd5\u7684\u58f0\u660e\u3002\u8fd9\u6837\u5728\u522b\u5904\u5c31\u53ef\u4ee5\u7528\u8fd9\u4e2awrapper\u8c03\u7528so\u5e93\u4e2d\u7684\u51fd\u6570\u4e86\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3000\u3000\u4f9d\u65e7\u662fAndroid\uff0cNDK\uff0cJNI\u76f8\u5173\u7684\u95ee\u9898\u3002\u3000\u3000\u7167\u7740ndk\u5e2e\u52a9\u7684\u8bf4\u660e\uff0c\u8fd0\u884c&lt;ndk&gt;\/samples\u76ee\u5f55\u4e0b\u7684hello-jni\u5de5\u7a0b\u540e\uff0c\u4f60\u4e00\u5b9a\u60f3\u77e5\u9053\u5982\u4f55\u5728\u81ea\u5df1\u7684\u9879\u76ee\u91cc\u8c03\u7528\u522b\u4eba\u5df2\u7ecf\u7f16\u8bd1\u597d\u7684.so\u5e93\u6587\u4ef6\u3002\u4e8e\u662f\u65b0\u5efa\u4e00\u4e2aAndroid\u5de5\u7a0b\uff0c\u5c06hello-jni\u4f8b\u5b50\u4e2dndk-build\u540e\u7684\u7ed3\u679c\uff1alibs\u6587\u4ef6\u5939\uff08\u5305\u62ec\u5176\u4e0b\u6240\u6709\u5185\u5bb9\uff09\u62f7\u8d1d\u5230\u65b0\u5efa\u5de5\u7a0b\u7684\u6839\u76ee\u5f55\u4e0b\uff0c\u4eff\u7167hello-jni\u7684\u4ee3\u7801\uff0c\u8c03\u7528native\u65b9\u6cd5\uff1a 1: package com.my.SoTest; 2:&nbsp; 3: import android.app.Activity; 4: import android.os.Bundle; 5: import android.widget.TextView; 6:&nbsp; 7: public class SoTestActivity extends Activity { 8: \/** Called when the activity is first created. *\/ 9: @Override 10: public void onCreate(Bundle savedInstanceState) { 11: super.onCreate(savedInstanceState); 12: 13: TextView tv=new TextView(this); 14: tv.setText(stringFromJNI()); 15: setContentView(tv); 16: } 17: public native String stringFromJNI(); 18: static { 19: System.loadLibrary(&#8220;hello-jni&#8221;); 20: } &hellip; <a href=\"https:\/\/blog.newnaw.com\/?p=1013\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">\u5728\u65b0\u7684Android\u5de5\u7a0b\u4e2d\u8c03\u7528\u5df2\u7ecf\u7f16\u8bd1\u597d\u7684so\u5e93\u6587\u4ef6\u4ee3\u7801<\/span> <span class=\"meta-nav\">&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[17,18],"_links":{"self":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts\/1013"}],"collection":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1013"}],"version-history":[{"count":0,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=\/wp\/v2\/posts\/1013\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.newnaw.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}