【ARM汇编】0x00_基于AndroidStudio构建ARM32-v7a以及ARM64-v8a环境

环境准备

安装SDK工具

  • 安装Android Studio
  • SDK Manager中选择NDKAndroid EmulatorAndroid SDK Platform-Tools等进行安装
    ![[Pasted image 20230808011554.png]]
  • SDK文件目录结构
PS C:\Apps\Android\sdk> dir


    目录: C:\Apps\Android\sdk


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2023/8/8      0:46                .downloadIntermediates
d-----          2023/8/8      0:50                .temp
d-----          2023/8/8      0:50                build-tools
d-----          2023/8/8      0:50                cmake
d-----          2023/8/8      0:50                emulator # 模拟器
d-----          2021/9/3     23:37                extras
d-----          2021/9/4      1:11                fonts
d-----          2021/9/4      0:37                licenses
d-----          2023/8/8      1:28                ndk  # 交叉编译工具链
d-----          2021/9/3     23:36                patcher
d-----          2023/8/8      0:50                platform-tools # adb等
d-----         2023/1/19     20:01                platforms
d-----          2023/8/8      1:43                skins
d-----          2021/9/4      1:09                sources
d-----        2022/12/30     20:32                system-images
d-----          2021/9/3     23:37                tools
-a----          2023/8/8      1:41             16 .knownPackages

配置系统环境变量

配置

ANDROID_USER_HOME控制 .android目录所在位置
默认情况下,模拟器会将配置文件存储在 $HOME/.android/ 下,将 AVD 数据存储在 $HOME/.android/avd/ 下。您可以通过设置以下环境变量来替换默认设置。
emulator -avd <avd_name> 命令会依次按照 $ANDROID_AVD_HOME$ANDROID_USER_HOME/avd/$HOME/.android/avd/ 中的值来搜索 avd 目录。

下表介绍了 Android SDK 工具的常用环境变量。

Android SDK 环境变量
ANDROID_HOME 设置 SDK 安装目录的路径。设置后,该值通常不会更改,并且可以由同一台计算机上的多个用户共享。ANDROID_SDK_ROOT 也指向 SDK 安装目录,但已废弃。如果您继续使用它,Android Studio 和 Android Gradle 插件将检查旧变量和新变量是否一致。
ANDROID_USER_HOME 为 Android SDK 中包含的工具设置用户偏好设置目录的路径。 默认为 $HOME/.android/

某些较旧的工具(例如 Android Studio 4.3 及更低版本)不会读取 ANDROID_USER_HOME。如需替换这些旧工具的用户偏好设置位置,请将 ANDROID_SDK_HOME 设置为要在其下创建 .android 目录的父目录。
  • ANDROID_HOME环境变量
ANDROID_HOME
C:\Apps\Android\sdk

在这里插入图片描述

  • Path环境变量
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\emulator
%ANDROID_HOME%\ndk\25.2.9519653  # 这里根据自己的ndk版本自行调整

在这里插入图片描述

测试

  • adb命令
PS C:\Users\xxx> adb
Android Debug Bridge version 1.0.41
Version 34.0.4-10411341
Installed as C:\Apps\Android\sdk\platform-tools\adb.exe
Running on Windows 10.0.22621

global options:
 -a                       listen on all network interfaces, not just localhost
 -d                       use USB device (error if multiple devices connected)
 -e                       use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL                use device with given serial 
### OmegaConf 配置管理简介 OmegaConf 是一个强大的 Python 库,用于处理复杂的配置文件。它支持多种数据结构(如字典、列表)以及 YAML 文件的解析和操作。以下是有关如何使用 OmegaConf 的详细介绍。 #### 创建配置对象 可以通过 `OmegaConf.create` 方法创建一个新的配置对象。该方法可以接受字典、YAML 字符串或其他兼容的数据结构作为输入[^1]。 ```python import omegaconf from omegaconf import OmegaConf config_dict = {"database": {"host": "localhost", "port": 6379}} config = OmegaConf.create(config_dict) print(OmegaConf.to_yaml(config)) # 将配置转换为 YAML 格式的字符串 ``` #### 加载外部 YAML 文件 如果需要加载外部 YAML 文件,可使用 `OmegaConf.load` 方法。这使得程序能够轻松读取并应用存储在磁盘上的配置文件。 ```python yaml_file_path = "./example_config.yaml" file_conf = OmegaConf.load(yaml_file_path) # 打印加载后的配置内容 print(file_conf.database.host) # 输出 'localhost' ``` #### 合并多个配置源 当存在多个配置来源时(例如默认设置与命令行参数),可以使用 `OmegaConf.merge` 来无缝合并它们。此功能允许开发者优先级较高的配置覆盖较低级别的配置项。 ```python default_configs = OmegaConf.create({"model": {"type": "resnet50"}}) cli_args = OmegaConf.from_dotlist(["model.type=vgg16"]) merged_config = OmegaConf.merge(default_configs, cli_args) assert merged_config.model.type == "vgg16" # 命令行参数成功覆盖默认值 ``` #### 动态更新配置 除了静态定义外,还可以通过访问器动态修改现有配置中的字段。这种灵活性非常适合运行时调整某些超参数或环境变量。 ```python dynamic_update = file_conf.copy() dynamic_update.database.port = 8080 print(dynamic_update.database.port) # 输出新的端口号 8080 ``` #### 错误处理机制 为了防止非法赋值破坏整个系统的稳定性,OmegaConf 提供了严格的模式控制选项。启用严格模式后,任何未声明过的键都将引发异常提示用户修正错误。 ```python strict_mode_enabled = file_conf.copy() strict_mode_enabled.set_struct(True) # 开启只读保护状态 try: strict_mode_enabled.new_field = True # 此处会抛出 AttributeError 异常 except AttributeError as e: print(f"Catch expected error: {e}") ``` --- ### 总结 以上展示了 OmegaConf 在不同场景下的典型用法,包括但不限于初始化配置实例、加载外部资源、融合多层设定逻辑以及实施安全防护措施等方面的功能特性。希望这些例子能帮助快速掌握其核心概念和技术要点!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值