{"id":10928,"date":"2021-09-25T22:40:18","date_gmt":"2021-09-25T14:40:18","guid":{"rendered":"https:\/\/www.bookcard.net\/wordpress\/?p=10928"},"modified":"2022-02-17T20:45:26","modified_gmt":"2022-02-17T12:45:26","slug":"android_studio_ndk_assets","status":"publish","type":"post","link":"https:\/\/www.bookcard.net\/wordpress\/android_studio_ndk_assets\/","title":{"rendered":"Android Studio NDK- assets\u8a2a\u554f\u8b80"},"content":{"rendered":"<p><a href=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/09\/Android_Studio_NDK_assets.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10929\" src=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/09\/Android_Studio_NDK_assets.jpg\" alt=\"Android Studio NDK- assets\u8b80\" width=\"1280\" height=\"800\" srcset=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/09\/Android_Studio_NDK_assets.jpg 1280w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/09\/Android_Studio_NDK_assets-300x188.jpg 300w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2021\/09\/Android_Studio_NDK_assets-768x480.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/a>\u4fc2Android\u6e38\u6232\u5514\u5c07\u6e38\u6232\u8cc7\u6e90\u64fa\u4fc2\u300eres\u300f\u800c\u4fc2\u300eassets\u300f, \u4e8b\u56e0\u300eres\u300f\u9650\u5236\u5c64\u6b21\u7d50\u69cb, \u800c\u300eassets\u300f\u5141\u8a31\u4efb\u610f\u6a94\u6848\u8cc7\u6599\u593e\u5c64\u6b21\u7d50\u69cb.\u4f4d\u65bc\u300eassets\u300f\u6a94\u6848\u53ea\u8b80\u5514\u5beb. NDK\u9700android 9\u7248\u5148\u652f\u6301.<\/p>\n<p>\u4fc2\u300eCMakeLists.txt\u300f\u6dfb\u52a0\u300elibandroid.so\u300f\u5eab<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">CMakeLists.txt<\/td>\n<\/tr>\n<tr>\n<td width=\"575\">find_library( Android-lib libandroid.so )<\/td>\n<\/tr>\n<tr>\n<td width=\"575\">target_link_libraries( geomanticcompass<\/p>\n<p>${OpenGL-lib}<\/p>\n<p>${OpenEGL-lib}<\/p>\n<p>${Android-lib}<\/p>\n<p>${log-lib})<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4fc2c\u6a94\u6848\u52a0\u5165\u982d\u6a94<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">#include &lt;android\/asset_manager.h&gt;<\/td>\n<\/tr>\n<tr>\n<td width=\"575\">#include &lt;android\/asset_manager_jni.h&gt;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u300eassets\u300f\u6a94\u901a\u904e\u300eAssetManager\u300f\u8a2a\u554f<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">AssetManager assetManager = this.getAssets();<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4fc2\u300eNDK\u300f\u300eassets\u300f\u6a94\u901a\u904e\u300eAAssetManager\u300f\u8a2a\u554f, \u300eAAssetManager\u300f\u63a5\u53e3<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5c07\u300eAssetManager\u300f\u50b3\u904e\u53bb\u7372\u5f97\u300eAAssetManager\u300f<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">extern &#8220;C&#8221;<\/p>\n<p>JNIEXPORT void JNICALL Java_net_bookcard_geomanticcompass_MainActivity_init(JNIEnv *env, jobject thiz, jobject egl_config, jobject asset_manager) {<\/p>\n<p>AAssetManager *assetManager= AAssetManager_fromJava(env, asset_manager);<\/p>\n<p>}<\/td>\n<\/tr>\n<tr>\n<td width=\"575\">public native void init(AssetManager asset_manager);<\/td>\n<\/tr>\n<tr>\n<td width=\"575\">init (getAssets());<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>\u958b\u555f\u300eassets\u300f\u6a94, \u5187\u9700\u7540\u7d55\u5c0d\u8def\u5f91, \u800c\u4fc2\u7540\u300eassets\u300f\u76f8\u5c0d\u8def\u4fd3<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">AAsset *asset = AAssetManager_open(nativeasset, &#8220;name.bmp&#8221;, AASSET_MODE_BUFFER);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6a94\u957f\u5ea6<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">int size = AAsset_getLength(asset)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5206\u914d\u8a18\u61b6\u9ad4<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">PBYTE data = (PBYTE)malloc(size);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u8b80\u300eassets\u300f\u6a94<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">AAsset_read(asset, data, size);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u8f09\u5165\u5206\u6790<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">Load(data, size);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u91ca\u653e\u8bb0\u5fc6\u4f53<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">free(data);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u9582\u300eassets\u300f\u6a94<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"575\">AAsset_close(asset);<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>\u5c07\u6e38\u6232\u8cc7\u6e90\u64fa\u4fc2\u300eassets\u300f\u4e0b,\u300eassets\u300f\u300eres\u300f\u540c\u4f4d\u65bc\u300eapp\\src\\main\u300f\u4e4b\u4e0b.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"113\">\u6a94\u6848\u8cc7\u6599\u593e<\/td>\n<td width=\"462\">\u4f4d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td width=\"113\">assets<\/td>\n<td width=\"462\">D:\\Android\\game\\app\\src\\main\\assets<\/td>\n<\/tr>\n<tr>\n<td width=\"113\">cpp<\/td>\n<td width=\"462\">D:\\Android\\game\\app\\src\\main\\cpp<\/td>\n<\/tr>\n<tr>\n<td width=\"113\">java<\/td>\n<td width=\"462\">D:\\Android\\game\\app\\src\\main\\java<\/td>\n<\/tr>\n<tr>\n<td width=\"113\">res<\/td>\n<td width=\"462\">D:\\Android\\game\\app\\src\\main\\res<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4fc2Android\u6e38\u6232\u5514\u5c07\u6e38\u6232\u8cc7\u6e90\u64fa\u4fc2\u300eres\u300f\u800c\u4fc2\u300eassets\u300f, \u4e8b\u56e0\u300eres\u300f\u9650\u5236\u5c64\u6b21\u7d50\u69cb, \u800c\u300eass &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/android_studio_ndk_assets\/\" class=\"more-link\">\u7e7c\u7e8c\u95b1\u8b80 <span class=\"screen-reader-text\">Android Studio NDK- assets\u8a2a\u554f\u8b80<\/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,62],"tags":[2,50],"class_list":["post-10928","post","type-post","status-publish","format-standard","hentry","category-android","category-opengl","tag-android","tag-opengl","entry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/10928","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=10928"}],"version-history":[{"count":3,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/10928\/revisions"}],"predecessor-version":[{"id":11197,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/10928\/revisions\/11197"}],"wp:attachment":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/media?parent=10928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/categories?post=10928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/tags?post=10928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}