{"id":980,"date":"2023-03-12T00:14:21","date_gmt":"2023-03-11T16:14:21","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=980"},"modified":"2023-04-29T13:24:57","modified_gmt":"2023-04-29T05:24:57","slug":"android-ndk-development-loads-local-library-local-ldlibs","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/03\/12\/android-ndk-development-loads-local-library-local-ldlibs\/","title":{"rendered":"Android NDK \u5f00\u53d1\u52a0\u8f7d\u672c\u5730\u5e93 LOCAL_LDLIBS"},"content":{"rendered":"<p>\u793a\u4f8b\uff1a<\/p>\n<pre><code>LOCAL_LDLIBS := -llog -lz<\/code><\/pre>\n<p><!-- more --><\/p>\n<h2>android-3<\/h2>\n<h3>C\u5e93<\/h3>\n<p>C\u5e93\u5305\u542b\u591a\u7ebf\u7a0b\u652f\u6301\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u6307\u5b9a -lpthread\uff0c\u4e5f\u4e0d\u9700\u8981\u6307\u5b9a -lrt<\/p>\n<blockquote>\n<p>\u6ce8\u610f\uff1a\u5185\u6838\u5934\u6587\u4ef6\u8fd8\u6ca1\u6709\u7a33\u5b9a\u4e0b\u6765\uff08\u4eca\u540e\u53ef\u80fd\u53d8\u52a8\uff09\uff0c\u8fd9\u4e9b\u5934\u6587\u4ef6\u662f <code>&lt;linux\/*.h&gt;<\/code>  \u548c <code>&lt;asm\/*.h&gt;<\/code><\/p>\n<\/blockquote>\n<h3>\u6570\u5b66\u5e93<\/h3>\n<pre><code>LOCAL_LDLIBS += -lm<\/code><\/pre>\n<h3>C++\u5e93<\/h3>\n<p>\u4e0d\u9700\u8981\u6307\u5b9a -lstdc++\uff0c\u662f\u81ea\u52a8\u94fe\u63a5\u7684<\/p>\n<h3>Android log<\/h3>\n<p>Android\u7cfb\u7edf\u7684log\u529f\u80fd<\/p>\n<pre><code>LOCAL_LDLIBS += -llog<\/code><\/pre>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;android\/log.h&gt;<\/code><\/p>\n<h3>zlib\u5e93<\/h3>\n<pre><code>LOCAL_LDLIBS += -lz<\/code><\/pre>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;zlib.h&gt;<\/code> \u548c <code>&lt;zconf.h&gt;<\/code><br \/>\n\u5e93\u8def\u5f84\uff1a\/system\/lib\/libz.so\uff0c\u8be6\u89c1\uff1a<a target=\"_blank\" rel=\"noopener\" href=\"http:\/\/www.zlib.net\/manual.html\">http:\/\/www.zlib.net\/manual.html<\/a><\/p>\n<h3>\u52a8\u6001\u8fde\u63a5\u5668\u5e93<\/h3>\n<pre><code>LOCAL_LDLIBS += -ldl<\/code><\/pre>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;dlfcn.h&gt;<\/code><br \/>\n\u5e93\u8def\u5f84\uff1a\/system\/lib\/libdl.so\uff0c\u8be5\u5e93\u63d0\u4f9b\u7684\u51fd\u6570\u4f8b\u5982\uff1adlopen()\/dlsym()\/dlclose() <\/p>\n<h2>android-4<\/h2>\n<h3>OpenGL ES 1.x<\/h3>\n<pre><code>LOCAL_LDLIBS += -lGLESv1_CM.so<\/code><\/pre>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;GLES\/gl.h&gt;<\/code> \u548c <code>&lt;GLES\/glext.h&gt;<\/code><br \/>\n\u5e93\u8def\u5f84\uff1a\/system\/lib\/libGLESv1_CM.so<\/p>\n<h2>android-5<\/h2>\n<h3>OpenGL ES 2.0<\/h3>\n<pre><code>LOCAL_LDLIBS += -lGLESv2.so<\/code><\/pre>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;GLES2\/gl2.h&gt;<\/code> \u548c <code>&lt;GLES2\/gl2ext.h&gt;<\/code><br \/>\n\u5e93\u8def\u5f84\uff1a\/system\/lib\/libGLESv2.so<\/p>\n<blockquote>\n<p>\u6ce8\u610f\uff1a\u76ee\u524d\u6a21\u62df\u5668\u8fd8\u4e0d\u652f\u6301\u8fd9\u4e2a\u5e93<\/p>\n<\/blockquote>\n<h2>android-8<\/h2>\n<h3>jnigraphics \u5e93<\/h3>\n<p>\u4e00\u4e2a\u5c0f\u578b\u7684C\u8bed\u8a00\u5e93\uff0c\u63d0\u4f9b\u5bf9Java\u4e2d\u7684 bitmap \u5bf9\u8c61\u7684\u64cd\u4f5c\u3002<\/p>\n<pre><code>LOCAL_LDLIBS += -ljnigraphics<\/code><\/pre>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;android\/bitmap.h&gt;<\/code><\/p>\n<p>\u5178\u578b\u7528\u6cd5\uff1a<\/p>\n<ul>\n<li>a) \u7528 AndroidBitmap_getInfo() \u51fd\u6570\u4ece\u4f4d\u56fe\u53e5\u67c4\uff08\u4eceJNI\u5f97\u5230\uff09\u83b7\u5f97\u4fe1\u606f\uff08\u5bbd\u5ea6\u3001\u9ad8\u5ea6\u3001\u50cf\u7d20\u683c\u5f0f\uff09<\/li>\n<li>b) \u7528 AndroidBitmap_lockPixels() \u5bf9\u50cf\u7d20\u7f13\u5b58\u4e0a\u9501\uff0c\u5373\u83b7\u5f97\u8be5\u7f13\u5b58\u7684\u6307\u9488\u3002<\/li>\n<li>c) \u7528C\/C++ \u5bf9\u8fd9\u4e2a\u7f13\u51b2\u533a\u8fdb\u884c\u8bfb\u5199<\/li>\n<li>d) \u7528 AndroidBitmap_unlockPixels() \u89e3\u9501<\/li>\n<\/ul>\n<h2>android-9<\/h2>\n<h3>OpenSL ES \u672c\u5730\u97f3\u9891\u5e93<\/h3>\n<pre><code>LOCAL_LDLIBS += -lOpenSLES<\/code><\/pre>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;SLES\/OpenSLES.h&gt;<\/code> \u548c <code>&lt;SLES\/OpenSLES_Platform.h&gt;<\/code><\/p>\n<h2>Android\u5171\u4eab\u5e93<\/h2>\n<pre><code>LOCAL_LDLIBS += -landroid -lz -lm<\/code><\/pre>\n<p>\u4eceandroid-9 \u5f00\u59cb\uff0c\u5c31\u53ef\u4ee5\u5b8c\u5168\u4f7f\u7528C\/C++\u6765\u7f16\u5199Android\u7a0b\u5e8f\u4e86\uff08\u5b8c\u5168\u8131\u79bbJava\uff09\u3002\u4f46\u662f\uff0c\u4ecd\u7136\u6ca1\u6709\u8131\u79bbjava\u865a\u62df\u673a\uff0c\u8bb8\u591a\u4e1c\u897f\u8fd8\u662f\u9700\u8981\u901a\u8fc7jni\u6765\u8bbf\u95ee\u3002<\/p>\n<p>1\u3001\u6d3b\u52a8\uff08Activity\uff09\u751f\u547d\u671f\u7684\u7ba1\u7406<\/p>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;android\/native_activity.h&gt;<\/code><\/p>\n<p>2\u3001\u76d1\u542c\u4e8b\u4ef6\u548c\u4f20\u611f\u5668<\/p>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;android\/looper.h&gt;<\/code> <code>&lt;android\/input.h&gt;<\/code> <code>&lt;android\/keycodes.h&gt;<\/code> <code>&lt;android\/sensor.h&gt;<\/code><\/p>\n<p>3\u3001\u7a97\u53e3\u7ba1\u7406\uff08\u5305\u62ec\u5bf9\u50cf\u7d20\u7f13\u5b58\u52a0\u9501\u3001\u89e3\u9501\uff09<\/p>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;android\/rect.h&gt;<\/code> <code>&lt;android\/window.h&gt;<\/code> <code>&lt;android\/native_window.h&gt;<\/code>  <code>&lt;android\/native_window_jni.h&gt;<\/code><\/p>\n<p>4\u3001\u8d44\u6e90\u7ba1\u7406<\/p>\n<p>\u5934\u6587\u4ef6\uff1a<code>&lt;android\/configuration.h&gt;<\/code> <code>&lt;android\/asset_manager.h&gt;<\/code> <code>&lt;android\/storage_manager.h&gt;<\/code> <code>&lt;android\/obb.h&gt;<\/code><\/p>\n<blockquote>\n<p>\u6ce8\uff1a<code>&lt;android\/obb.h&gt;<\/code>\u5bf9\u5d4c\u5165 apk\u4e2d\u7684\u8d44\u6e90\uff08\u6216OBB\u6587\u4ef6\uff09\u8fdb\u884c\u53ea\u8bfb\u7684\u3001\u76f4\u63a5\u8bbf\u95ee\u3002OBB\uff08Opaque Binary Blob\uff09\u6587\u4ef6\uff0c\u65b0\u7279\u6027\uff0c\u5141\u8bb8\u628a\u8f83\u5927\u7684\u6570\u636e\u653e\u5728apk\u4e4b\u5916\uff08\u5bf9\u4e8e\u6e38\u620f\u7a0b\u5e8f\u6709\u7528\uff09<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u793a\u4f8b\uff1a LOCAL_LDLIBS := -llog -lz android-3 C\u5e93 C\u5e93\u5305\u542b\u591a\u7ebf\u7a0b\u652f\u6301\uff0c\u6240\u4ee5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[269],"class_list":["post-980","post","type-post","status-publish","format-standard","hentry","category-android-ndk","tag-ndk"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=980"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/980\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}