Android NDK: 使用Python生成下载地址

news2024/11/25 6:56:00

文章目录

    • 1. 目的
    • 2. NDK下载链接
    • 3. 生成链接的 Python 脚本
    • 4. Bonus: 生成表格的 Python 脚本

在这里插入图片描述

1. 目的

Android NDK 的 github wiki 中给出了部分历史版本 NDK 的下载地址,有些版本的下载地址并没有在网页中给出。实际上这些下载地址很有规律。本文给出具体的链接,以及生成这些链接的 Python 脚本。

2. NDK下载链接

ndk versionlinuxwindowsdarwin
r17https://dl.google.com/android/repository/android-ndk-r17-linux.ziphttps://dl.google.com/android/repository/android-ndk-r17-windows.ziphttps://dl.google.com/android/repository/android-ndk-r17-darwin.zip
r18https://dl.google.com/android/repository/android-ndk-r18-linux.ziphttps://dl.google.com/android/repository/android-ndk-r18-windows.ziphttps://dl.google.com/android/repository/android-ndk-r18-darwin.zip
r19https://dl.google.com/android/repository/android-ndk-r19-linux.ziphttps://dl.google.com/android/repository/android-ndk-r19-windows.ziphttps://dl.google.com/android/repository/android-ndk-r19-darwin.zip
r20https://dl.google.com/android/repository/android-ndk-r20-linux.ziphttps://dl.google.com/android/repository/android-ndk-r20-windows.ziphttps://dl.google.com/android/repository/android-ndk-r20-darwin.zip
r21https://dl.google.com/android/repository/android-ndk-r21-linux.ziphttps://dl.google.com/android/repository/android-ndk-r21-windows.ziphttps://dl.google.com/android/repository/android-ndk-r21-darwin.zip
r22https://dl.google.com/android/repository/android-ndk-r22-linux.ziphttps://dl.google.com/android/repository/android-ndk-r22-windows.ziphttps://dl.google.com/android/repository/android-ndk-r22-darwin.zip
r23https://dl.google.com/android/repository/android-ndk-r23-linux.ziphttps://dl.google.com/android/repository/android-ndk-r23-windows.ziphttps://dl.google.com/android/repository/android-ndk-r23-darwin.zip
r24https://dl.google.com/android/repository/android-ndk-r24-linux.ziphttps://dl.google.com/android/repository/android-ndk-r24-windows.ziphttps://dl.google.com/android/repository/android-ndk-r24-darwin.zip
r25https://dl.google.com/android/repository/android-ndk-r25-linux.ziphttps://dl.google.com/android/repository/android-ndk-r25-windows.ziphttps://dl.google.com/android/repository/android-ndk-r25-darwin.zip

3. 生成链接的 Python 脚本

#!/usr/bin/env python
#coding: utf-8

"""
Purpose:
    Android official website and github wiki page no longer gives ndk-r23 but only gives ndk-r23c.
    This script provide standalone download links for android ndk zip files.
    Those links can be verified with Android Studio's SDK manager.

https://github.com/android/ndk/wiki
"""

def get_ndk_url(os_name, ndk_version):
    valid_os_names = ['linux', 'windows', 'darwin']
    if os_name not in valid_os_names:
        raise AssertionError("os_name invalid! Should be one of: ", valid_os_names)

    if (ndk_version[0] != 'r'):
        raise AssertionError("ndk_version should starts with 'r'")

    # url = 'https://dl.google.com/android/repository/android-ndk-r23-linux.zip'
    url = 'https://dl.google.com/android/repository/android-ndk-{}-{}.zip'.format(ndk_version, os_name)
    return url

4. Bonus: 生成表格的 Python 脚本


class CodeWriter(object):
    def __init__(self, indent_len):
        self.lines = []
        self.indent_num = 0
        self.indent_len = indent_len

    def write(self, content):
        padding = (self.indent_len * self.indent_num) * ' '
        line = padding + content
        self.lines.append(line)

    def save(self, filename):
        with open(filename, "w") as fout:
            for line in self.lines:
                fout.write(line + "\n")

    def dump(self):
        for line in self.lines:
            print(line)

    def tab(self):
        self.indent_num += 1

    def backspace(self):
        if (self.indent_num > 0):
            self.indent_num -= 1



if __name__ == '__main__':
    #url = get_ndk_url('linux', 'r23')
    os_names = ['linux', 'windows', 'darwin']
    w = CodeWriter(4)
    head = '| ndk version |'
    sepline = '| ------ |'
    for os_name in os_names:
        head += ' {:s} |'.format(os_name)
        sepline += ' ---------- |'
    w.write(head)
    w.write(sepline)
    for ndk_version in ['r17', 'r18', 'r19', 'r20', 'r21', 'r22', 'r23', 'r24', 'r25']:
        line = "| " + ndk_version + " |"
        for os_name in os_names:
            url = get_ndk_url(os_name, ndk_version)
            line += ' <' + str(url) + '> |'
        w.write(line)
    w.dump()

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

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

相关文章

无人水面艇声呐装备现状与发展趋势(水声功率放大器)

无人水面艇声呐装备是目前海洋探测和水下情报收集的重要工具&#xff0c;其发展趋势受到了国防、军事、海洋资源勘探等领域的广泛关注。本文将介绍当前无人水面艇声呐装备的现状以及未来的发展趋势。 一、现状 无人水面艇声呐装备主要应用于水下物体的探测和测量&#xff0c;其…

NDK OpenGL仿抖音极快极慢录制特效视频

NDK​系列之OpenGL仿抖音极快极慢录制特效视频&#xff0c;本节主要是在上一节OpenGL代码架构上增加极快极慢等特效的视频录制功能。 实现效果&#xff1a; 实现逻辑&#xff1a; 在上一节的特效效果的基础上&#xff0c;使用MediaCodec和自定义EGL&#xff0c;将效果视频录制…

CountDownLatch与Binder连接池

CountDownLatch与Binder连接池 CountDownLatch 如果现在有一个题,有5个数,这时候我想让这5个数同时都乘2,然后算出结果后再算它们的平均数 这时候就可以用CountDownLatch import java.util.concurrent.CountDownLatch; public class Example {public static void main(Stri…

总结853

学习目标&#xff1a; 月目标&#xff1a;5月&#xff08;张宇强化前10讲&#xff0c;背诵15篇短文&#xff0c;熟词僻义300词基础词&#xff09; 周目标&#xff1a;张宇强化前3讲并完成相应的习题并记录&#xff0c;英语背3篇文章并回诵 每日必复习&#xff08;5分钟&#…

leetcode(力扣)刷题笔记(c++)【下】

文章预览&#xff1a; 单调栈739. 每日温度496.下一个更大元素 I503. 下一个更大元素 II42. 接雨水84.柱状图中最大的矩形 额外题目1365.有多少小于当前数字的数字941. 有效的山脉数组1207. 独一无二的出现次数189. 轮转数组724. 寻找数组的中心下标922. 按奇偶排序数组 II 后续…

软考高级架构师笔记-3数据库

目录 1. 前言 & 更新2. 数据库基本概念3. E-R图与二维表4. 约束、范式5. 数据库新技术1. 前言 & 更新 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔记-2计算机软件(操作系统)本章考情: 数据库章节都会考3-5分左右,第二版教材上对应2.3.3和6,主要考…

软考A计划-真题-分类精讲汇总-第十四章(数据流图)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

Python每日一练(20230517) 最大连续1的个数 I\II\III

目录 1. 最大连续1的个数 I Max Consecutive Ones &#x1f31f; 2. 最大连续1的个数 II Max Consecutive Ones &#x1f31f;&#x1f31f; 3. 最大连续1的个数 III Max Consecutive Ones &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; G…

RabbitMQ养成记 (5. MQ的topics模式)

主题模式 Topic类型的Exchange与Direct相比&#xff0c;都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符&#xff01; Routingkey 一般都是有一个或多个单词组成&#xff0c;多个单词之间以”.”分割&a…

【夜莺(Flashcat)V6监控】2.夜莺告警相关: 多服务器多业务配置

介绍 本章侧重点是应用&#xff0c;根据大家不同业务、服务器部署众多等等&#xff1b;根据不同团队&#xff0c;不同业务进行划分&#xff1b;方便不同的团队负责自己职责内的工作&#xff1b; 比如我们场景如下&#xff1a; 三块业务&#xff1a;人工智能、医药、团购&…

分层强化学习 学习笔记

分层强化学习代码汇总 0.综述 《The Promise of Hierarchical Reinforcement Learning》分层强化学习的前景 强化学习 强化学习问题的设置&#xff1a; 有两个主角&#xff1a;一个代理和一个环境。环境是代理所生活和交互的地方。在每一次交互中&#xff0c;代理都能看到世…

深度解析:5G与未来天线技术 5G通信到底需要什么样的天线?

过去二十年&#xff0c;我们见证了移动通信从1G到4G LTE的转变。在这期间&#xff0c;通信的关键技术在发生变化&#xff0c;处理的信息量成倍增长。而天线&#xff0c;是实现这一跨越式提升不可或缺的组件。 按照业界的定义&#xff0c;天线是一种变换器&#xff0c;它把传输…

一图看懂 et_xmlfile 模块:一个用于创建大型XML文件的低内存库,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 et_xmlfile 模块&#xff1a;一个用于创建大型XML文件的低内存库&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9ca;解释&#x1f9ca…

网络进阶学习:子网掩码及VLAN划分

网络进阶学习&#xff1a;子网掩码及VLAN划分 什么是子网&#xff1f;什么是子网掩码&#xff1f;什么是VLAN子网掩码和VLAN的关系小结 什么是子网&#xff1f; ⭐子网是将一个大的IP地址段划分成若干个小的IP地址段的网络。子网可以帮助网络管理员更好地管理网络&#xff0c;…

reids学习--redis常用命令

字符串string操作命令 Redis中字符串类型常用命令&#xff1a; 操作描述set key value设置指定key的值get key获取指定key的值setex key seconds value设置指定key的值&#xff0c;并将key的过期时间设为seconds秒(可用于验证码登录)setnx key value只有在key不存在时设置key…

玩转SAM语义分割之(2)显示特定的图片

文章目录 1. 使用matplotlib显示出完整彩色的掩码&#xff0c;并将其保存下来 2. 使用matplotlib显示出单张掩码&#xff0c;只保存面积大于一个阈值的掩码图片3. 对一整个文件夹中的图片进行处理&#xff0c;只保存面积大于一定阈值的掩码图片4. 查看特定坐标点处是否有mask掩…

Go语言的并发:goroutine和channel

目录 【Go 的并发方案&#xff1a;goroutine】 goroutine 的基本用法 【通道channel】 创建channel&#xff1a; 发送与接收变量&#xff1a; 关闭channel&#xff1a; 【channel的类型】 无缓冲channel和带缓冲channel 无缓冲channel 带缓冲channel nil channel 单…

随便聊聊 顺便晒一下我的听歌设备

平时最大的爱好就是听歌了&#xff0c;我平时的听歌类型挺多元化的&#xff0c;硬要说的话更偏向 Jpop、ACG、女声、轻音乐、大编制、交响乐&#xff0c;当然好听的都听不局限于类型。 又是30天一天不落O(∩_∩)O&#x1f604; 作为一个音乐爱好者&#xff0c;在听歌设备上面花…

Liunx压缩命令 - zip

zip命令 – 压缩文件 zip命令的功能是用于压缩文件&#xff0c;解压命令为unzip。通过zip命令可以将文件打包成.zip格式的压缩包&#xff0c;里面会包含文件的名称、路径、创建时间、上次修改时间等等信息&#xff0c;与tar命令相似。 语法格式&#xff1a;zip 参数 目标文件…

MySQL高级_第04章_逻辑架构

MySQL高级_第04章_逻辑架构 1. 逻辑架构剖析 1.1 服务器处理客户端请求 那服务器进程对客户端进程发送的请求做了什么处理&#xff0c;才能产生最后的处理结果呢&#xff1f;这里以查询请求为例展示&#xff1a; 下面具体展开看一下&#xff1a; 1.2 Connectors 1.3 第1…