android NDK 学习笔记(二)- Android.mk

本文详细介绍了Android.mk文件的配置过程及关键变量的作用。包括LOCAL_PATH的定义、CLEAR_VARS的使用、构建共享库的具体步骤等。此外还介绍了如何指定目标CPU与ABI组合、设置API级别与ABI连接等内容。
Android.mk 文件必须首先定义 LOCAL_PATH 变量:
1.LOCAL_PATH := $(call my-dir)
此变量用于指定当前文件的路径。必须在 Android.mk 文件的开头定义它


2.include $(CLEAR_VARS)
CLEAR_VARS  指向的脚本不会清除此变量。因此,即使您的 Android.mk 文件描述了多个模块,您也只需


定义它一次。


3.LOCAL_MODULE := 库名称


4.LOCAL_SRC_FILES  变量必须包含要构建到模块中的 C 和/或 C++ 源文件列表


5.include $(BUILD_SHARED_LIBRARY)




6.BUILD_SHARED_LIBRARY 变量指向 GNU Makefile 脚本,用于收集您自最近 include 后在 LOCAL_XXX 变


量中定义的所有信息。 此脚本确定要构建的内容及其操作方法。




7.TARGET_ARCH_ABI  生成指定目标cpu与ABI的组合




8.TARGET_ABI 指定Android Api级别与ABI的连接。




9.LOCAL_C_INCLUDES  可以使用此可选变量指定相对于 NDK root 目录的路径列表,以便在编译所有源文


件(C、C++ 和 Assembly)时添加到 include 搜索路径。 例如:LOCAL_C_INCLUDES := 


$(LOCAL_PATH)/foo
<think> 首先,用户的问题是关于解决在解压Android NDK r26d Linux zip文件时出现的“End-of-central-directory signature not found”错误。错误信息表明解压工具无法找到zip文件的中央目录签名,这通常意味着文件损坏或不完整。 参考提供的引用: - 引用[1]:描述了安装和使用android-ndk-r26b-linux.zip的基本步骤,包括下载、解压、设置环境变量等。 - 引用[2]:提到了在Ubuntu 10.10下解压android-ndk-r8-linux-x86.tar.bz2时出错的问题,错误与无法创建符号链接相关。 - 引用[3]:是关于Android Studio的错误,提示缺少特定ABI的工具链。 用户的问题与引用[2]类似,但错误信息不同:“End-of-central-directory signature not found”。用户指定了android-ndk-r26d-linux.zip,版本是r26d,而不是r26b。 系统级指令要求: - 所有行内数学表达式使用$...$格式(但这个问题可能不涉及数学)。 - 独立公式使用$$...$$并单独成段(同样,可能不适用)。 - LaTeX语法正确(但在回答中,可能主要在代码块或命令中使用)。 - 使用中文回答。 - 生成相关问题。 - 在引用的段落末尾添加引用标识(如[^1])。引用来自用户提供的引用,所以我需要自然地引用它们。 回答结构需要清晰,帮助用户逐步解决问题。确保回答真实可靠。 关键问题:解决“End-of-central-directory signature not found”错误。这个错误通常由于: 1. 下载的文件不完整或损坏。 2. Zip文件格式问题。 3. 解压工具本身的问题。 解决方案步骤: 1. **验证文件完整性**:检查下载的文件是否完整。建议用户使用校验和(如SHA-256)验证下载的文件。官方Android NDK页面可能提供校验和信息。 2. **重新下载文件**:如果文件损坏,重新下载。 3. **使用不同的解压工具**:有些解压工具可能处理zip文件更好。尝试使用`unzip`命令的不同选项或工具如`7z`。 4. **检查磁盘空间**:确保系统有足够的空间解压文件。 5. **尝试在其他目录或系统解压**:有时权限问题可能导致错误,尝试在其他位置解压。 用户上一次问题:用户提到“参考站内引用”,并提供了三个引用,但用户的问题是基于这些引用解决具体错误。 我的回答应该: - 以中文回复。 - 分步骤解释如何解决错误。 - 引用相关引用部分(如引用[1]中提到下载和解压步骤)。 - 生成相关问题。 生成相关问题:基于主题,可能有: 1. 如何验证Android NDK下载文件的完整性? 2. 如何设置Android NDK的环境变量? 3. 常见Android NDK安装错误的解决方法? 完整回答结构: 1. **引言**:简述问题原因。 2. **解决方案步骤**:一步步指导用户。 - 步骤1: 检查文件完整性(使用SHA-256校验)。 - 步骤2: 重新下载文件。 - 步骤3: 使用其他解压方法。 - 步骤4: 确保权限和空间。 3. **引用相关部分**:自然地融入引用,例如引用[1]提到下载和解压步骤。 4. **结尾**:确认如果问题解决。 5. **相关问题**:列出3-4个相关问题。 确保回答真实可靠:基于常见错误解决方法。 最终回答: - 使用中文。 - 生成相关问题部分用“§§相关问题§§”标记。 </think> 根据您的查询,您在使用 Android NDK r26d Linux zip 文件 (`android-ndk-r26d-linux.zip`) 解压时遇到了“End-of-central-directory signature not found”错误。这个错误通常表示 ZIP 文件损坏或不完整,可能是由于下载中断、文件传输错误或存储设备问题导致的。参考您提供的引用(如引用[1]中提到的下载和解压步骤[^1]),我将一步步指导您解决此问题。以下解决方案基于常见故障排除方法,确保操作安全可靠。 ### 解决“End-of-central-directory signature not found”错误的步骤 请按顺序执行以下操作,每一步都可能解决或定位问题。操作前确保您有管理员权限(在 Linux 终端使用 `sudo` 命令)。 1. **验证文件完整性(优先步骤)** 错误通常由下载文件损坏引起。Android NDK 官方文件通常提供 SHA-256 校验和。请按以下操作验证: - **下载官方校验和**:从 [Android NDK 官方页面](https://developer.android.com/ndk/downloads) 查找 `android-ndk-r26d-linux.zip` 的校验和(通常为 SHA-256)。示例命令(替换为实际校验和): ```bash echo "expected_sha256_sum *android-ndk-r26d-linux.zip" | sha256sum --check ``` 如果输出 “android-ndk-r26d-linux.zip: OK”,说明文件完整;否则,文件已损坏。 - **为什么重要**:引用[1]中提到从可靠来源(如 Android 开发者网站)下载文件[^1],但下载过程中网络不稳定可能导致问题。如果校验失败,文件需重新下载。 2. **重新下载 ZIP 文件** 如果验证失败或不确定,重新下载是最直接的修复方法: - 删除旧文件:在终端运行 `rm android-ndk-r26d-linux.zip`。 - 从官方来源重新下载: - 推荐 Android 开发者网站:https://developer.android.com/ndk/downloads - 或可信镜像站点(避免非官方渠道,减少损坏风险)。 - **提示**:下载时使用稳定网络,确保文件大小匹配官方文档(r26d 版本约 1GB 左右)。 3. **使用替代解压工具或命令** 有时 `unzip` 工具本身有问题(如版本不兼容)。尝试其他解压方法: - **使用 `7z` 工具(更鲁棒)**: 1. 安装 7-Zip:`sudo apt-get install p7zip-full`(适用于 Ubuntu/Debian)。 2. 解压文件:`7z x android-ndk-r26d-linux.zip`。 - 如果成功,文件会解压到当前目录。 - **使用 `unzip` 的不同选项**: 运行 `unzip -FF android-ndk-r26d-linux.zip`(`-FF` 选项尝试修复损坏的 ZIP 文件)。 - **参考引用[2]**:该引用提到解压错误可能与系统环境相关[^2]。如果解压失败,检查您的系统是否支持大文件解压(运行 `unzip -v` 查看版本)。 4. **检查系统环境** 排除磁盘空间、权限或文件系统问题: - **磁盘空间**:运行 `df -h` 确保所在分区有足够空间(解压 NDK 需至少 2GB)。 - **权限问题**:将 ZIP 文件移动到用户主目录再解压(例如 `mv android-ndk-r26d-linux.zip ~/`),然后运行 `unzip ~/android-ndk-r26d-linux.zip`。 - **文件系统限制**:引用[2]中提到符号链接错误[^2],如果使用共享文件夹(如 VMware/VirtualBox),请将文件复制到 Ubuntu 本地目录再解压。 5. **尝试在其他系统解压(最后手段)** 如果以上步骤无效,可能文件本身或您的系统存在兼容问题: - 在另一台 Linux 机器上重复下载和解压。 - 或使用 Windows/macOS 工具(如 WinRAR 或 The Unarchiver)解压后传输文件。 ### 验证解决方案 完成上述步骤后,验证 NDK 是否安装成功: 1. 解压后移动到合适目录(如引用[1]建议的 `/usr/local`[^1]): ```bash sudo mv android-ndk-r26d /usr/local/ ``` 2. 设置环境变量(编辑 `~/.bashrc`): ```bash export NDKROOT=/usr/local/android-ndk-r26d export PATH=$NDKROOT:$PATH ``` 运行 `source ~/.bashrc`。 3. 检查安装:运行 `ndk-build --version`,应输出类似引用[1]中的版本信息[^1]。 如果问题仍然存在,请提供更多上下文(如操作系统版本和解压命令输出),我会进一步协助。引用[3]提到的工具链问题[^3]通常发生在安装后步骤,解压错误优先执行以上方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值