{"id":4801,"date":"2018-06-18T22:05:42","date_gmt":"2018-06-18T14:05:42","guid":{"rendered":"https:\/\/www.icocean.com\/blog\/?p=4801"},"modified":"2018-06-18T22:06:50","modified_gmt":"2018-06-18T14:06:50","slug":"4801","status":"publish","type":"post","link":"https:\/\/www.icocean.com\/blog\/?p=4801","title":{"rendered":""},"content":{"rendered":"<p><strong>NDK \u662f\u5e72\u5565\u7684\uff1f<\/strong><br \/>\n\u5168\u79f0 Native Development Kit, \u5141\u8bb8\u4f60\u5728 Android \u5e94\u7528\u4e2d\u4f7f\u7528 C \u6216 C++ \u4ee3\u7801<\/p>\n<p><strong>NDK \u7684\u597d\u5904<\/strong><br \/>\nNDK \u53ef\u4ee5\u751f\u6210 .so \u6587\u4ef6, \u65b9\u4fbf\u4ee3\u7801\u5171\u4eab<br \/>\n\u589e\u52a0\u53cd\u7f16\u8bd1\u7684\u96be\u5ea6<br \/>\n\u63d0\u9ad8\u6027\u80fd<!--more--><\/p>\n<p><strong>\u51c6\u5907\u5de5\u4f5c<\/strong><br \/>\n\u5728 Android Studio \u91cc\u4e0b\u8f7d\u597d NDK<br \/>\n<img decoding=\"async\" src=\"https:\/\/jk2k.com\/2016\/09\/how-to-use-ndk-and-generate-so-file-in-android-studio\/ndk-installation-figure.png\" alt=\"\" \/><\/p>\n<p>Android Studio 2.2 \u7a33\u5b9a\u7248\u5df2\u53d1\u5e03\uff0c\u8fd9\u4e2a\u7248\u672c\u589e\u5f3a\u4e86 C++ \u7684\u5f00\u53d1\u80fd\u529b\uff0c\u80fd\u591f\u4f7f\u7528 ndk-build \u6216 CMake \u53bb\u7f16\u8bd1\u548c\u8c03\u8bd5\u9879\u76ee\u91cc\u7684 C++ \u4ee3\u7801<\/p>\n<p>ndk-build \u6216 CMake \u6bd4\u7528 Gradle \u53bb\u7f16\u8bd1 C++ \u66f4\u597d<\/p>\n<p>\u56e0\u4e3a NDK \u5957\u4ef6\u91cc\u81ea\u5e26 ndk-build, \u4e0d\u9700\u8981\u518d\u989d\u5916\u5b89\u88c5 CMake, \u4e3a\u4e86\u7b80\u5355\u8d77\u89c1\u4ee5\u4e0b\u793a\u4f8b\u90fd\u7528 ndk-build \u53bb\u7f16\u8bd1 C++<\/p>\n<p>\u6ce8\u610f<br \/>\n\u4e3a\u4e86\u80fd\u591f\u5728 Android Studio \u91cc\u4f7f\u7528 CMake \u6216 ndk-build\uff0c\u4f60\u5fc5\u987b\u4f7f\u7528 Android Studio 2.2 \u6216\u66f4\u9ad8\u7248\u672c \u548c Android Plugin for Gradle version 2.2.0 \u6216\u66f4\u9ad8\u7248\u672c<br \/>\n\u7531\u4e8e Android Studio \u7f16\u8bd1 C \u548c C++ \u4ee3\u7801\u9ed8\u8ba4\u4f7f\u7528 CMake, \u56e0\u6b64\u6211\u5efa\u8bae\u4f7f\u7528 Experimental Android Plugin for Gradle \u7684\u7528\u6237\u4e5f\u5207\u6362\u5230 Android Plugin for Gradle version 2.2.0 \u6216\u66f4\u9ad8\u7248\u672c\uff0c\u8fd9\u6837\u65e2\u53ef\u4ee5\u4f7f\u7528 Android Plugin for Gradle \u7684\u7a33\u5b9a\u7248\u672c\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528 CMake \u6216 ndk-build \u6765\u63d0\u9ad8\u7f16\u8bd1\u901f\u5ea6<br \/>\nAndroid.mk \u548c Application.mk<\/p>\n<p>\u7b80\u5355\u6765\u8bf4<br \/>\nAndroid.mk \u7528\u6765\u63cf\u8ff0\u9700\u8981\u751f\u6210\u54ea\u4e9b\u6a21\u5757\u7684 .so \u6587\u4ef6<br \/>\nApplication.mk \u7528\u6765\u63cf\u8ff0\u5982\u4f55\u751f\u6210 .so \u6587\u4ef6\uff0c\u751f\u6210\u9759\u6001\u5e93\u8fd8\u662f\u52a8\u6001\u5e93<\/p>\n<p>\u66f4\u591a\u53c2\u8003 https:\/\/developer.android.com\/ndk\/guides\/concepts?hl=zh-cn<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NDK \u662f\u5e72\u5565\u7684\uff1f \u5168\u79f0 Native Development Kit, \u5141\u8bb8\u4f60\u5728 Android \u5e94\u7528\u4e2d\u4f7f\u7528 <a href='https:\/\/www.icocean.com\/blog\/?p=4801' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[4186],"class_list":["post-4801","post","type-post","status-publish","format-standard","hentry","category---android","tag-ndk","category-29-id","post-seq-1","post-parity-odd","no-title","meta-position-corners","fix"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4801"}],"version-history":[{"count":2,"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4801\/revisions"}],"predecessor-version":[{"id":4803,"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4801\/revisions\/4803"}],"wp:attachment":[{"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.icocean.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}