Elasticsearch文件存储

news2024/11/17 5:54:14

分析Elasticsearch Index文件是如何存储的?
主要是想看一下FST文件是以什么粒度创建的?

首先通过kibana找一个索引的shard,此处咱们就以logstash-2023.05.30索引为例

查看下shard分布情况

GET /_cat/shards/logstash-2023.05.30?v


index               shard prirep state      docs   store ip             node
logstash-2023.05.30 3     p      STARTED 1520736 408.1mb 10.138.40.73  10.138.40.73-node1
logstash-2023.05.30 5     p      STARTED 1520888 409.9mb 10.138.40.74  10.138.40.74-node1
logstash-2023.05.30 6     p      STARTED 1518331 408.2mb 10.138.40.221 10.138.40.221-node1
logstash-2023.05.30 4     p      STARTED 1518186 409.3mb 10.138.204.194 10.138.204.194-node1
logstash-2023.05.30 1     p      STARTED 1519231 408.8mb 10.138.40.220 10.138.40.220-node1
logstash-2023.05.30 2     p      STARTED 1519970 409.9mb 10.138.204.195 10.138.204.195-node1
logstash-2023.05.30 0     p      STARTED 1520024 410.6mb 10.138.204.193 10.138.204.193-node1

这里以位于10.138.204.193上的shard 0为例分析。

要找到存储目录先要找到index的id

GET /logstash-2023.05.30/_settings

{
  "logstash-2023.05.30" : {
    "settings" : {
      "index" : {
        "codec" : "best_compression",
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "refresh_interval" : "60s",
        "number_of_shards" : "7",
        "provided_name" : "logstash-2023.05.30",
        "creation_date" : "1685376005206",
        "number_of_replicas" : "0",
        "uuid" : "FYWtFGTIS2CLB8yJhFXG9g",//这里就是索引的id
        "version" : {
          "created" : "7130499"
        }
      }
    }
  }
}

登录机器,找到存储索引文件的对应目录

/data3/10.138.204.193-node1/nodes/0/indices/FYWtFGTIS2CLB8yJhFXG9g

展开一下该目录下的文件

root@prd-paas-es-01:/data3/10.138.204.193-node1/nodes/0/indices/FYWtFGTIS2CLB8yJhFXG9g# tree -C -s
.
├── [       4096]  0
│   ├── [      20480]  index
│   │   ├── [        158]  _17f.fdm
│   │   ├── [   25578562]  _17f.fdt
│   │   ├── [       1939]  _17f.fdx
│   │   ├── [       4636]  _17f.fnm
│   │   ├── [    7981735]  _17f.kdd
│   │   ├── [      20898]  _17f.kdi
│   │   ├── [        716]  _17f.kdm
│   │   ├── [    7945983]  _17f_Lucene80_0.dvd
│   │   ├── [       3916]  _17f_Lucene80_0.dvm
│   │   ├── [    6230127]  _17f_Lucene84_0.doc
│   │   ├── [    3875001]  _17f_Lucene84_0.pos
│   │   ├── [    7448815]  _17f_Lucene84_0.tim
│   │   ├── [     108786]  _17f_Lucene84_0.tip
│   │   ├── [       1637]  _17f_Lucene84_0.tmd
│   │   ├── [        593]  _17f.si
│   │   ├── [        158]  _3uv.fdm
│   │   ├── [   33652243]  _3uv.fdt
│   │   ├── [       2555]  _3uv.fdx
│   │   ├── [       4636]  _3uv.fnm
│   │   ├── [   10520395]  _3uv.kdd
│   │   ├── [      27689]  _3uv.kdi
│   │   ├── [        716]  _3uv.kdm
│   │   ├── [   10573208]  _3uv_Lucene80_0.dvd
│   │   ├── [       3916]  _3uv_Lucene80_0.dvm
│   │   ├── [    8298061]  _3uv_Lucene84_0.doc
│   │   ├── [    5154427]  _3uv_Lucene84_0.pos
│   │   ├── [    9716222]  _3uv_Lucene84_0.tim
│   │   ├── [     142063]  _3uv_Lucene84_0.tip
│   │   ├── [       1620]  _3uv_Lucene84_0.tmd
│   │   ├── [        593]  _3uv.si
│   │   ├── [        158]  _5bg.fdm
│   │   ├── [   16433011]  _5bg.fdt
│   │   ├── [       1259]  _5bg.fdx
│   │   ├── [       4636]  _5bg.fnm
│   │   ├── [    5158094]  _5bg.kdd
│   │   ├── [      13396]  _5bg.kdi
│   │   ├── [        716]  _5bg.kdm
│   │   ├── [    5140762]  _5bg_Lucene80_0.dvd
│   │   ├── [       3916]  _5bg_Lucene80_0.dvm
│   │   ├── [    4005897]  _5bg_Lucene84_0.doc
│   │   ├── [    2583880]  _5bg_Lucene84_0.pos
│   │   ├── [    4873082]  _5bg_Lucene84_0.tim
│   │   ├── [      70979]  _5bg_Lucene84_0.tip
│   │   ├── [       1593]  _5bg_Lucene84_0.tmd
│   │   ├── [        593]  _5bg.si
│   │   ├── [        158]  _60h.fdm
│   │   ├── [   24664753]  _60h.fdt
│   │   ├── [       1886]  _60h.fdx
│   │   ├── [       4636]  _60h.fnm
│   │   ├── [    7640438]  _60h.kdd
│   │   ├── [      19996]  _60h.kdi
│   │   ├── [        716]  _60h.kdm
│   │   ├── [    7754954]  _60h_Lucene80_0.dvd
│   │   ├── [       3916]  _60h_Lucene80_0.dvm
│   │   ├── [    6147241]  _60h_Lucene84_0.doc
│   │   ├── [    3998559]  _60h_Lucene84_0.pos
│   │   ├── [    7254035]  _60h_Lucene84_0.tim
│   │   ├── [     105673]  _60h_Lucene84_0.tip
│   │   ├── [       1719]  _60h_Lucene84_0.tmd
│   │   ├── [        593]  _60h.si
│   │   ├── [        200]  _7jq.fdm
│   │   ├── [   63208093]  _7jq.fdt
│   │   ├── [       4692]  _7jq.fdx
│   │   ├── [       4636]  _7jq.fnm
│   │   ├── [   19306117]  _7jq.kdd
│   │   ├── [      51562]  _7jq.kdi
│   │   ├── [        716]  _7jq.kdm
│   │   ├── [   20228561]  _7jq_Lucene80_0.dvd
│   │   ├── [       3916]  _7jq_Lucene80_0.dvm
│   │   ├── [   15606568]  _7jq_Lucene84_0.doc
│   │   ├── [    9581341]  _7jq_Lucene84_0.pos
│   │   ├── [   17383473]  _7jq_Lucene84_0.tim
│   │   ├── [     272615]  _7jq_Lucene84_0.tip
│   │   ├── [       1592]  _7jq_Lucene84_0.tmd
│   │   ├── [        593]  _7jq.si
│   │   ├── [        437]  _82w.cfe
│   │   ├── [    4489379]  _82w.cfs
│   │   ├── [        408]  _82w.si
│   │   ├── [        437]  _87w.cfe
│   │   ├── [    4932636]  _87w.cfs
│   │   ├── [        408]  _87w.si
│   │   ├── [        437]  _8ao.cfe
│   │   ├── [   13905317]  _8ao.cfs
│   │   ├── [        408]  _8ao.si
│   │   ├── [        437]  _8ls.cfe
│   │   ├── [   20181047]  _8ls.cfs
│   │   ├── [        408]  _8ls.si
│   │   ├── [        437]  _8nq.cfe
│   │   ├── [    1234712]  _8nq.cfs
│   │   ├── [        408]  _8nq.si
│   │   ├── [        437]  _8oa.cfe
│   │   ├── [     872798]  _8oa.cfs
│   │   ├── [        408]  _8oa.si
│   │   ├── [        437]  _8pp.cfe
│   │   ├── [    1593677]  _8pp.cfs
│   │   ├── [        408]  _8pp.si
│   │   ├── [        437]  _8r5.cfe
│   │   ├── [     914008]  _8r5.cfs
│   │   ├── [        408]  _8r5.si
│   │   ├── [        437]  _8rf.cfe
│   │   ├── [     940473]  _8rf.cfs
│   │   ├── [        408]  _8rf.si
│   │   ├── [        437]  _8rz.cfe
│   │   ├── [    1315312]  _8rz.cfs
│   │   ├── [        408]  _8rz.si
│   │   ├── [        437]  _8s9.cfe
│   │   ├── [    1121692]  _8s9.cfs
│   │   ├── [        408]  _8s9.si
│   │   ├── [        437]  _8sk.cfe
│   │   ├── [     243476]  _8sk.cfs
│   │   ├── [        408]  _8sk.si
│   │   ├── [       1678]  segments_6
│   │   └── [          0]  write.lock
│   ├── [       4096]  _state
│   │   ├── [        186]  retention-leases-2865.st
│   │   └── [        125]  state-0.st
│   └── [       4096]  translog
│       ├── [         55]  translog-29.tlog
│       └── [         88]  translog.ckp
└── [       4096]  _state
    └── [       1230]  state-2.st

5 directories, 118 files

有了文件信息,我们再来看下,segment信息

GET /logstash-2023.05.30/_segments

// 这里为了直观 只展示shard 0对应的segment
{
	"_shards": {
		"total": 7,
		"successful": 7,
		"failed": 0
	},
	"indices": {
		"logstash-2023.05.30": {
			"shards": {
				"0": [
					{
						"routing": {
							"state": "STARTED",
							"primary": true,
							"node": "4hEWcF8hRFWTEkQxlKQmqg"
						},
						"num_committed_segments": 17,
						"num_search_segments": 17,
						"segments": {
							"_17f": {
								"generation": 1563,
								"num_docs": 210331,
								"deleted_docs": 0,
								"size_in_bytes": 59203502,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": false,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_3uv": {
								"generation": 4999,
								"num_docs": 278411,
								"deleted_docs": 0,
								"size_in_bytes": 78098502,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": false,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_5bg": {
								"generation": 6892,
								"num_docs": 132645,
								"deleted_docs": 0,
								"size_in_bytes": 38291972,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": false,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_60h": {
								"generation": 7793,
								"num_docs": 199809,
								"deleted_docs": 0,
								"size_in_bytes": 57599273,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": false,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_7jq": {
								"generation": 9782,
								"num_docs": 520420,
								"deleted_docs": 0,
								"size_in_bytes": 145654675,
								"memory_in_bytes": 5204,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": false,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_82w": {
								"generation": 10472,
								"num_docs": 15416,
								"deleted_docs": 0,
								"size_in_bytes": 4490224,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_87w": {
								"generation": 10652,
								"num_docs": 16837,
								"deleted_docs": 0,
								"size_in_bytes": 4933481,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8ao": {
								"generation": 10752,
								"num_docs": 48855,
								"deleted_docs": 0,
								"size_in_bytes": 13906162,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8ls": {
								"generation": 11152,
								"num_docs": 70903,
								"deleted_docs": 0,
								"size_in_bytes": 20181892,
								"memory_in_bytes": 5140,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8nq": {
								"generation": 11222,
								"num_docs": 3954,
								"deleted_docs": 0,
								"size_in_bytes": 1235557,
								"memory_in_bytes": 6924,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8oa": {
								"generation": 11242,
								"num_docs": 2785,
								"deleted_docs": 0,
								"size_in_bytes": 873643,
								"memory_in_bytes": 6820,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8pp": {
								"generation": 11293,
								"num_docs": 5194,
								"deleted_docs": 0,
								"size_in_bytes": 1594522,
								"memory_in_bytes": 7060,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8r5": {
								"generation": 11345,
								"num_docs": 2936,
								"deleted_docs": 0,
								"size_in_bytes": 914853,
								"memory_in_bytes": 6748,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8rf": {
								"generation": 11355,
								"num_docs": 2920,
								"deleted_docs": 0,
								"size_in_bytes": 941318,
								"memory_in_bytes": 6836,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8rz": {
								"generation": 11375,
								"num_docs": 4304,
								"deleted_docs": 0,
								"size_in_bytes": 1316157,
								"memory_in_bytes": 6820,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8s9": {
								"generation": 11385,
								"num_docs": 3647,
								"deleted_docs": 0,
								"size_in_bytes": 1122537,
								"memory_in_bytes": 6892,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							},
							"_8sk": {
								"generation": 11396,
								"num_docs": 657,
								"deleted_docs": 0,
								"size_in_bytes": 244321,
								"memory_in_bytes": 7620,
								"committed": true,
								"search": true,
								"version": "8.8.2",
								"compound": true,
								"attributes": {
									"Lucene87StoredFieldsFormat.mode": "BEST_COMPRESSION"
								}
							}
						}
					}
				]
			}
		}
	}
}

对比segment与shard目录中文件可以看出,两者是一一对应的。

看下es及对应lucene的版本

GET /

{
  "name" : "10.138.204.193-node1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "XWDyVuo6TgK4yUp2XWD3lw",
  "version" : {
    "number" : "7.13.4",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "c5f60e894ca0c61cdbae4f5a686d9f08bcefc942",
    "build_date" : "2021-07-14T18:33:36.673943207Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

那么shard目录中各种后缀的文件具体是什么含义呢?下面来看下

在这里插入图片描述

截图出处:
https://lucene.apache.org/core/8_8_2/core/org/apache/lucene/codecs/lucene87/package-summary.html#package.description

从表格中可以看出与FST相关的文件后缀有:tip、tim,从这里就可以看出FST文件是以segment维度来创建的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 303——A-E题讲解

蒟蒻来讲题,还望大家喜。若哪有问题,大家尽可提! Hello, 大家好哇!本初中生蒟蒻讲解一下AtCoder Beginner Contest 303这场比赛的A-E题! A - Similar String 原题 Problem Statement Two characters x x x and y…

Python IDLE介绍

目录 IDE(集成开发环境)是什么 Python IDLE使用方法详解 Python IDLE常用快捷键 IDE(集成开发环境)是什么 IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员…

一、Fuzzing速成之AFL实战

文章目录 一、Fuzzing基本知识1、什么是Fuzzing?2、Fuzzing运行流程 二、Fuzzing实战1、下载AFL压缩包2、安装AFL3、Fuzzing 一、Fuzzing基本知识 1、什么是Fuzzing? 维基百科将模糊测试定义为:     模糊测试 (fuzz testing, fuzzing)…

【Python 文本挖掘】零基础也能轻松掌握的学习路线与参考资料

Python文本挖掘是利用Python语言和相关文本挖掘工具对大量文本数据进行分析和挖掘的过程。Python在文本挖掘方面广泛应用于自然语言处理、情感分析、主题建模、关键词提取等领域。 学习Python文本挖掘需要掌握Python编程基础、数据分析和可视化、自然语言处理、机器学习等知识…

Flutter:功能型组件(3)- 拖拽组件、缩放平移组件

拖拽组件 拖拽组件包含 Draggable、LongPressDraggable 和 DragTarget。 Draggable、LongPressDraggable 为可拖拽的组件,LongPressDraggable 继承自Draggable,因此用法和 Draggable 完全一样,唯一的区别就是 LongPressDraggable 触发拖动的…

nginx添加nginx-sticky-module模块步骤

nginx-sticky-module模块是nginx实现负载均衡的一种方案,和ip_hash负载均衡算法会有区别的 ip_hash 根据客户端ip将请求分配到不同的服务器上.sticky 根据服务器个客户端的cookie,客户端再次请求是会带上此cookie,nginx会把有次cookie的请求转发到颁发cookie的服务器上. 安装…

AI工具合集!一共600+覆盖全行业,除了ChatGPT,那你也会喜欢这些其他的AI工具

如果你喜欢ChatGPT,那你也会喜欢这些其他的AI工具。 AI正在改变我们的工作方式,我不想错过充分利用它的机会,所以我尝试了一系列AI工具来节省时间,提高我的工作效率。 这里有个集合了600ai工具的合集包。 序号AI工具名称AI分类A…

I.MX RT1170加密启动详解(4):OTFAD XIP加密运行代码

本节将介绍基于AES加密的OTFAD引擎,它可以在不影响AES-128-CTR性能的情况下实时解密数据。OTFAD包括对AES密钥展开机制的完整硬件支持,它可以解密最多4个唯一的AES上下文。每个上下文都有一个用户定义的128位的Image Encryption Key(IEK)、一个64位的计数…

uniapp的movable-view、movable-area

uniapp的movable-view、movable-area movable-view: 可以在页面中拖拽滑动必须在movable-area组件中,并且必须是直接子节点必须设置width和height属性,不设置默认为10px提供特殊事件:htouchmove和vtouchmove movable-area&#xf…

用于ECharts的全国省市区县乡镇街道级的行政区划边界数据(GeoJSON格式)

https://map.vanbyte.com 提供了免费的省市县3级行政边界数据(GeoJSON格式)、省市县乡4级联动数据。 至于行政区划边界数据的来源,网络上有各种教程。授人以鱼不如授人以渔,下面记录一下各类方法的具体步骤。 来源1:阿里云的数据可视化平台…

听劝 不要盲目的学网络安全。

听劝 不要盲目的学网络安全。 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可…

webpack-dev-server 不是内部或外部命令,也不是可运行的程序 或批处理文件

一、问题描述 webpack-dev-server 不是内部或外部命令,也不是可运行的程序 或批处理文件 出现上述问题 一般是node.js的版本不一致造成。 二、解决方法:换成低版本的node.js node.js换成12或11版本即可 2.1.先卸载高版本node.js 在控制面板中卸载node.js,并删除安…

【算法】常见的加密算法及实现

文章目录 前言1. 数字签名2. 加密和解密2.1. 加密2.2. 解密 3. 对称加密和非对称加密3.1. 对称加密3.2. 非对称加密 4. 常见的签名加密算法4.1. MD5算法4.2. SHA1算法4.3. HMAC算法4.4. AES/DES/3DES算法4.4.1. DES算法4.4.2. 3DES算法4.4.3. AES算法 4.5. RSA算法4.6. ECC算法…

hbase简介与安装

Hbase简介 HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Had…

安装Linux-SUSE操作系统

文章目录 一、安装Linux-SUSE系统1、环境准备2、SUSE 镜像的下载2.1、下载企业服务器2.2、ARM和桌面的ISO 3、安装SUSE4、配置本地 yum 源5、SUSE常用安装命令6、在 SUSE系统上安装mysql数据库步骤:7、破解SUSE系统root密码 一、安装Linux-SUSE系统 1、环境准备 操…

7月蓄势待发,2023上海内部物流展,预登记全面启动!

观众预登记通道现已全面开放 展会时间 2023年7月5日 9:00-17:00 2023年7月6日 9:00-17:00 2023年7月7日 9:00-15:00 展会地点 上海新国际博览中心(浦东新区龙阳路2345号) 同期展会 2023上海国际AGV机器人产业展 2023上海国际电商物流包装产业展 2…

外包干了4年,今天分手了...

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

gcc-g++使用编译链接理解

在讲gcc/g使用之前我们先讲一下背景,编译链接 编译链接我们之前讲过一次,但是这里在深入理解一下编译链接,以及我们看一下现象 编译链接 首先,编译链接可以分为四步: 1.预处理 2.编译 3.汇编 4.链接 预处理 我…

java Stream流

体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合 public class MyS…

NDK环境变量配置及Jni生成so文件

1、通过AndroidStudio下载NDK和Cmake之后,需要在系统环境变量中进行NDK的配置,如下 (1)、NDK_HOME : D:\SDK\Sdk\ndk\22.1.7171670 (2)、将%NDK_HOME%同时添加到Path中 2、在AndroidStudio的File->Project Structure->SDK Location中选择ndk&…