Android NDK开发实战:从零构建高效AI原生环境(Gemini与so库集成)

Ai模块so动态加载 Ai模块so动态加载 dlopen dlsym 阅读详情

1. Android NDK开发环境搭建

作为一位有10年移动开发经验的工程师,我深知搭建一个稳定的NDK开发环境有多么重要。很多新手在刚开始接触NDK时,往往会被各种配置问题搞得头大,其实只要掌握正确的方法,整个过程可以很顺畅。

首先需要安装Android Studio的最新版本,我强烈推荐使用2024.2或更高版本,因为这个版本不仅内置了AI辅助编程功能,还对NDK开发做了很多优化。安装完成后,打开SDK Manager,在"SDK Tools"选项卡中勾选CMake、LLDB和NDK这三个必选项。CMake是现在官方推荐的构建工具,LLDB是调试原生代码的利器,而NDK则是核心开发工具包。

这里有个小技巧:建议同时安装多个NDK版本,因为不同项目可能需要不同的NDK版本。你可以在Android Studio的Project Structure中为每个项目指定特定的NDK版本,这样可以避免版本冲突问题。我通常会在本地保留NDK 21、23和25这三个版本,覆盖大多数项目的需求。

安装完成后,验证环境是否配置成功很简单。打开终端,输入ndk-build --version,如果能看到版本信息就说明NDK已经正确安装。同样地,输入cmake --version也应该能看到CMake的版本信息。

2. 理解CPU架构与SO库适配

在实际项目中,SO库的架构适配是个绕不开的话题。我记得第一次打包APK时,发现生成的安装包居然有100多MB,仔细一查才发现是因为包含了所有架构的SO库。经过这些年的实践,我总结出了一套高效的适配策略。

目前主流的Android设备主要使用ARM架构,包括armeabi-v7a和arm64-v8a。x86架构主要用在模拟器和少数Intel处理器的平板设备上,而mips架构现在已经很少见了。根据我的实测数据,现在新出的Android设备超过95%都是arm64-v8a架构,但仍有少量老旧设备使用armeabi-v7a。

关于适配策略,我有几个实用建议。如果你追求极致的性能,可以只适配arm64-v8a,这样能保证最好的性能表现,但会损失部分老旧设备的用户。如果想要更好的兼容性,可以同时支持armeabi-v7a和arm64-v8a,但这样会增加APK体积。我最推荐的方式是使用ABI分包,为不同的架构生成不同的APK,这样既能保证性能又能控制体积。

在build.gradle中配置ABI过滤很简单:

android {
    defaultConfig {
        ndk {
            abiFilters 'arm64-v8a', 'armeabi-v7a'
        }
    }
}

如果你想要做ABI分包,可以这样配置:

android {
    splits {
        abi {
            enable true
            reset()
            include 'arm64-v8a', 'armeabi-v7a'
            universalApk false
        }
    }
}

3. CMake与ndk-build工具链选择

在NDK开发中,构建工具的选择很重要。CMake和ndk-build是两种主流的方案,各有优缺点。根据我的经验,新项目建议使用CMake,因为它更现代、功能更强大,而且Android Studio对它的支持更好。

CMake的配置文件是CMakeLists.txt,它的语法更加灵活和强大。比如要创建一个简单的动态库,CMake的配置是这样的:

cmake_minimum_required(VERSION 3.4.1)

add_library(native-lib SHARED native-lib.cpp)

find_library(log-lib log)

target_link_libraries(native-lib ${log-lib})

而ndk-build使用的是Android.mk文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := native-lib
LOCAL_SRC_FILES := native-lib.cpp

include $(BUILD_SHARED_LIBRARY)

对于复杂的项目,CMake的优势更加明显。它支持模块化的配置,可以方便地管理多个子项目。而且CMake有更好的跨平台支持,如果你需要同时在Android和其他平台上开发,CMake会是更好的选择。

我在实际项目中发现,CMake对现代C++特性的支持更好,特别是C++11/14/17的特性都能很好地支持。而且CMake有更丰富的第三方库支持,很多开源库都提供了CMake的构建脚本。

4. Gemini AI模型集成实战

集成AI模型到Android应用中是现在的热门需求,Gemini作为Google的最新AI模型,确实能给应用带来强大的AI能力。但在集成过程中,有几个关键点需要特别注意。

首先是要准备好模型文件。通常我们会使用TensorFlow Lite格式的模型,后缀是.tflite。这个模型文件需要放在assets目录下,然后在应用运行时加载到设备中。为了减少APK体积,建议对模型文件进行压缩,或者在首次运行时从服务器下载。

模型推理的核心代码通常是这样写的:

#include <tensorflow/lite/interpreter.h>
#include <tensorflow/lite/model.h>

class GeminiInference {
public:
    GeminiInference(AAssetManager* assetManager, const char* modelPath) {
        // 加载模型
        AAsset* asset = AAssetManager_open(assetManager, modelPath, AASSET_MODE_BUFFER);
        size_t modelSize = AAsset_getLength(asset);
        modelBuffer = std::make_unique<char[]>(modelSize);
        AAsset_read(asset, modelBuffer.get(), modelSize);
        AAsset_close(asset);
        
        // 创建模型和解释器
        model = tflite::FlatBufferModel::BuildFromBuffer(modelBuffer.get(), modelSize);
        tflite::ops::builtin::BuiltinOpResolver resolver;
        tflite::InterpreterBuilder(*model, resolver)(&interpreter);
        interpreter->AllocateTensors();
    }
    
    float* runInference(float* inputData) {
        float* input = interpreter->typed_input_tensor<float>(0);
        memcpy(input, inputData, inputSize * sizeof(float));
        interpreter->Invoke();
        return interpreter->typed_output_tensor<float>(0);
    }

private:
    std::unique_ptr<char[]> modelBuffer;
    std::unique_ptr<tflite::FlatBufferModel> model;
    std::unique_ptr<tflite::Interpreter> interpreter;
};

在实际使用中,要注意内存管理的问题。AI模型通常需要较大的内存,建议在Native层管理内存,避免频繁的JNI调用。同时要注意线程安全,最好在单独的线程中进行模型推理。

5. 多架构SO库的编译与打包

编译多架构的SO库是个技术活,需要仔细配置编译选项。我建议为每个架构单独编译,然后通过Gradle进行打包。这样可以确保每个SO库都是为特定架构优化的,性能最好。

在CMake中配置多架构编译很简单,只需要在build.gradle中指定:

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_ARM_NEON=TRUE",
                          "-DANDROID_TOOLCHAIN=clang"
                cppFlags "-std=c++17 -frtti -fexceptions"
            }
        }
    }
    
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.22.1"
        }
    }
}

对于性能关键的代码,可以使用架构特定的优化。比如为ARMv8架构启用NEON指令集:

#if defined(__aarch64__)
#include <arm_neon.h>

void optimized_function(float* input, float* output, int size) {
    for (int i = 0; i < size; i += 4) {
        float32x4_t data = vld1q_f32(input + i);
        // 使用NEON指令进行处理
        vst1q_f32(output + i, data);
    }
}
#endif

打包时要注意SO库的加载顺序。Android系统会优先加载与设备架构匹配的SO库,如果找不到才会尝试加载兼容的架构。因此建议为每个架构都提供优化的SO库,而不是依赖系统兼容。

6. 调试与性能优化技巧

NDK开发的调试比纯Java开发要复杂一些,但掌握正确的方法后也很高效。我习惯使用LLDB进行原生代码调试,它比GDB更加友好,而且与Android Studio集成得很好。

在调试时,首先要在build.gradle中启用调试符号:

android {
    buildTypes {
        debug {
            debuggable true
            jniDebuggable true
            packagingOptions {
                doNotStrip '**/*.so'
            }
        }
    }
}

这样编译出的SO库会包含调试信息,可以在崩溃时看到完整的调用栈。对于Release版本,记得要strip调试信息以减少体积。

性能优化方面,我推荐使用Google的perfetto工具。它可以详细记录应用的性能数据,包括CPU使用率、内存分配、线程活动等。通过分析这些数据,可以找到性能瓶颈所在。

另一个实用的技巧是使用Android Studio的Profiler来监控Native内存使用。它可以显示每个SO库的内存分配情况,帮助发现内存泄漏问题。

对于计算密集型的代码,建议使用多线程并行计算。C++11之后的线程库很好用:

#include <thread>
#include <vector>

void parallel_process(float* data, int size) {
    int thread_count = std::thread::hardware_concurrency();
    std::vector<std::thread> threads;
    
    int chunk_size = size / thread_count;
    for (int i = 0; i < thread_count; ++i) {
        int start = i * chunk_size;
        int end = (i == thread_count - 1) ? size : start + chunk_size;
        threads.emplace_back([=] {
            process_chunk(data + start, end - start);
        });
    }
    
    for (auto& thread : threads) {
        thread.join();
    }
}

7. 常见问题与解决方案

在NDK开发过程中,总会遇到各种奇怪的问题。我整理了一些常见的问题和解决方法,希望能帮你少走弯路。

最常见的问题是SO库加载失败。这通常是因为架构不匹配或者SO库缺失。建议在Application的onCreate中检查SO库是否加载成功:

public class MyApp extends Application {
    static {
        try {
            System.loadLibrary("my_native_lib");
        } catch (UnsatisfiedLinkError e) {
            Log.e("MyApp", "Failed to load native library", e);
        }
    }
}

另一个常见问题是JNI引用管理不当导致的内存泄漏。切记要及时释放Local引用,或者使用Global引用长期持有:

jstring javaString = env->NewStringUTF("Hello");
// 使用完后要及时释放
env->DeleteLocalRef(javaString);

对于复杂的项目,编译时间可能很长。我建议使用ccache来加速编译,它能够缓存编译结果,减少重复编译的时间。在CMake中启用ccache很简单:

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_CCACHE=ccache"
            }
        }
    }
}

还有一个经常遇到的问题是在模拟器上运行Native代码性能很差。这是因为x86架构需要经过二进制转换才能运行ARM代码。如果要做性能测试,建议使用真机,特别是ARM架构的设备。

最后提醒一点,发布前一定要在所有支持的架构上进行测试。有些Native代码在特定架构上可能会有不同的行为,及早发现这些问题可以避免很多麻烦。

国产安卓手机免GMS运行Gemini的工程化方案 Gemini作为谷歌深度集成的AI助手,其本质是一套依赖身份认证、模型推理与上下文同步的云服务架构。在缺乏谷歌移动服务(GMS)的国产安卓设备上,原生APK无法启动并非技术缺陷,而是服务链路断裂所致。真正可行的路径是解耦前端容器与后端能力——以WebView复用Chrome登录态,通过本地代理网关中继OAuth2.0令牌、净化响应头、模拟TLS指纹,并采用ONNX Runtime Mobile适配骁龙、麒麟、天玑等国产芯片的硬件加速单元。该方案兼顾合规性与生产可用性,使文本理解、多轮对话、代码生成等核心能力 阅读详情

相关推荐

Gemma 3 270M移动端部署实战:轻量大模型原生推理方案

大语言模型(LLM)在边缘端的落地,正从‘能否运行’迈向‘稳定可用’的新阶段。轻量级大模型作为连接云端智能与终端能力的关键桥梁,其核心价值在于平衡参数规模、推理延迟、内存占用与隐私安全四大维度。Gemma 3 270M凭借MoE稀疏激活架构与深度优化的4-bit GGUF量化格式,在Android中高端设备上实现首token延迟<200ms、离线运行、TEE可信执行等工程硬指标,成为替代传统TinyML和云端API的务实选择。本文聚焦移动端原生部署路径,涵盖llama.cpp定制、NNAPI/NPU硬件加速

weixin_34161064的博客 433

Android NDK开发实战之环境搭建篇(so库,Gemini ai)

音视频安卓开发首先涉及到ffmpeg编译打包,先了解动态库之间的cpu架构差异性。然后再搭建可运行的Android 环境。

weixin_50873490的博客 1533

Gemini Ultra/Pro/Nano核心区别:硬件约束与场景适配深度解析

大语言模型的版本差异本质是面向不同计算基础设施与业务需求的系统性工程取舍。从基础概念看,推理时延、显存占用、上下文窗口和量化精度共同构成模型部署的四大物理约束;其技术原理源于架构设计(如MoE动态路由、SSM替代Transformer)、压缩策略(INT4非对称量化、KV缓存FP8化)与内存管理机制的协同优化;这种差异化带来显著技术价值——在成本、延迟、离线能力间实现精准平衡;典型应用场景覆盖云端科研推理(Ultra)、企业级API服务(Pro)及手机端实时语音交互(Nano)。本文聚焦Gemini三版本在

HJ921004的博客 448

Gemini 3.5 Flash与Android智能体中枢技术解析

大语言模型(LLM)在端侧的高效部署,依赖于模型压缩、动态计算图优化与设备端缓存管理等核心技术;其原理在于通过权重精度动态降级、运行时计算图剪枝和KV缓存分片,在保障语义完整性前提下显著降低算力与内存开销;该技术路径不仅提升推理速度与能效比,更推动操作系统从通用平台向AI能力调度中枢演进;典型应用场景包括系统级智能助手、跨App意图路由、结构化Agent服务调用等;本文聚焦Gemini 3.5 Flash模型压缩机制与Android 15智能体中枢架构的深度协同,解析其在Android Studio开发链路

weixin_33768481的博客 532

LiteRT-LM在Android端部署Gemma 4的全栈实践

大语言模型(LLM)边缘化是AI落地的关键趋势,其核心在于轻量化推理框架与移动硬件深度协同。LiteRT-LM作为专为ARM架构优化的LLM运行时编排层,通过重构内存管理、GPU Shader调度和JNI桥接机制,显著降低端侧延迟并保障数据本地化。它不仅支持Gemma系列等主流开源模型的4-bit量化部署,更突破传统Android NDK ABI兼容瓶颈,实现高通、联发科等多平台GPU加速。在金融分析、代码生成、文档摘要等离线场景中,LiteRT-LM+Gemma 4组合已达成接近桌面级GPU的端到端响应效

weixin_33739523的博客 783

本地化轻量AI模型部署实战:打造离线情绪倾听工具

本地大模型(Local LLM)是指在终端设备上直接运行、无需联网调用云端服务的生成式AI系统,其核心原理在于模型量化、推理引擎优化与无状态架构设计。相比依赖API的云端方案,本地模型以极低延迟、零数据上传和强隐私保障,支撑起数字心理健康、边缘智能交互等对实时性与信任感要求严苛的应用场景。本文聚焦Qwen2-0.5B-Instruct的4-bit GGUF量化部署与LoRA微调实践,详解llama.cpp在Android端的JNI深度定制、KV Cache动态裁剪及温度自适应生成机制,为开发者提供一条可复现

weixin_34185512的博客 375

Android Studio Iguana + Gemini Pro 2.5整合全攻略(官方未公开的NDK-AI桥接方案)

解决Android开发者AI集成难题,本指南提供Gemini与Android生态深度整合攻略。基于Android Studio Iguana与Gemini Pro 2.5,首创NDK-AI桥接方案,支持离线推理、低延迟调用及原生性能优化,适用于智能相机、实时翻译等场景。官方未公开技术细节全解析,值得收藏。

FuncIsle的博客 375

Gemma 4端侧AI内核:离线多模态Agent与动态加载架构解析

端侧AI正从云端调用范式转向设备原生智能,其核心在于如何在有限内存与算力下实现低延迟、高精度、多模态的本地推理。Gemma 4通过Per-Layer Embeddings(PLE)实现参数按需加载,结合交替式滑动窗口注意力与共享KV缓存,突破长上下文的内存瓶颈;更关键的是,它将视觉、音频、文本编码器联合优化,构建统一隐空间与模态感知前馈网络,使2B级模型真正具备OCR、语音转写、图表理解等离线多模态能力。这种‘模型即系统组件’的设计,让Agent不再依赖网络回调,而是直接驱动本地工具链完成报销、会议纪要、合

weixin_30797199的博客 420

手机端部署Gemma-2B-Q4:llama.cpp+GGUF+ARM NEON实战指南

大语言模型轻量化部署是边缘AI的核心命题,其本质是模型压缩、推理引擎适配与硬件指令集协同的系统工程。Gemma-2B作为经指令微调的20亿参数模型,在4-bit量化(Q4_K_M)后体积压至1.2GB,成为手机端本地化部署的理想候选;而llama.cpp凭借纯C++实现、GGUF格式支持及ARM NEON深度优化,提供了跨平台、低内存、高可控性的推理底座。该技术路径不依赖Python或云端服务,可满足教育类App集成、隐私敏感场景交互、离线知识问答等真实需求,尤其适合6GB RAM以上安卓设备。本文聚焦从模

weixin_30879169的博客 356

Gemma 3n端侧多模态实战:Android VLM应用从架构到落地

视觉语言模型(VLM)是实现图像理解与自然语言生成协同的关键技术,其核心原理在于图像编码器与语言模型通过交叉注意力机制对齐多模态表征。在端侧部署时,需突破内存受限、算力薄弱、功耗敏感等硬约束,技术价值体现在离线可用、隐私保护与实时响应三大维度。典型应用场景包括老年健康助手、IoT设备交互、医疗辅具识别等对数据不出设备有强需求的嵌入式AI产品。本文聚焦轻量化VLM——Gemma 3n在Android平台的工程化落地,系统阐述其模型压缩、三级流水线架构、ZSTD内存映射加载、MobileViTv2特征蒸馏及本地

weixin_34115824的博客 487

手机跑Gemma 2B:零代码零成本端侧大模型实战指南

轻量级大语言模型正从云端走向终端,端侧推理成为AI普惠的关键路径。其核心原理在于模型量化(如4-bit GGUF)、推理引擎优化(llama.cpp/MLC-LLM)与硬件加速(Neon/Vulkan)的协同突破,显著降低算力与内存门槛。技术价值体现在离线可用、隐私可控、响应实时,支撑教育辅助、移动办公、边缘智能等场景。当前以Gemma 2B为代表的2B级模型,在中文理解、体积(1.2GB)、速度(1.6s首token)三者间达成最佳平衡,配合预封装App实现真正开箱即用——无需Python、不碰命令行、不

weixin_30565327的博客 506

如何向Big Bear CasaOS应用商店提交你的第一个应用:命名规范、图标要求与PR流程完整教程

Big Bear CasaOS 应用商店(big-bear-casaos)是 CasaOS 与 ZimaOS 用户最常用的第三方应用商店之一,目前收录了 **200+ 精选自托管应用**。本教程面向新手,手把手带你在该应用商店提交第一个应用:从目录命名规范、`config.json` 与 `docker-compose.yml` 图标要求,到 PR 提交与 CI 自动化检查,全流程一次讲清 ✅

gitblog_00493的博客 1080

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。

【独家首发】Gemini for Android SDK v2.3.1未公开API逆向实录:实现离线多模态推理的4步密钥

破解Gemini for Android SDK v2.3.1未公开API,实现Gemini Android深度整合下的离线多模态推理。通过4步密钥适配本地模型、优化内存调度、绕过云端依赖、启用硬件加速,在无网环境下完成图像+文本联合推理。低延迟、高隐私、全端侧运行,值得收藏。

CompiShoal的博客 354

双向全桥CLLC谐振变换器仿真模型(Simulink仿真实现)

内容概要:本文系统介绍了双向全桥CLLC谐振变换器的Simulink仿真模型,重点阐述了变频控制、闭环仿真及其与多种电力电子拓扑(如维也纳整流器、DAB变换器、图腾柱PFC等)的联合仿真设计。资源包涵盖2.5kW双向全桥LLC、V2G电动汽车充放电系统、三相PFC、多相交错LLC等多种变换器的仿真案例,并深入展示了三电平VIENNA整流器在双闭环PI控制与SVPWM调制策略下,结合上下电容电压差值补偿实现中点电位平衡的先进控制方法。通过仿真验证,该策略不仅有效维持了800V直流母线电压的稳定,还在动态工况下显著提升了电容电压的均衡度,同时保持了较低的输入电流THD,充分体现了SVPWM与中点平衡控制协同优化的技术优势。; 适合人群:具备电力电子与自动控制理论基础,从事新能源发电、电动汽车、工业电源、微电网等领域的研究生、工程师及科研人员。; 使用场景及目标:① 学习并构建高频谐振变换器(如LLC、CLLC)的Simulink仿真模型,掌握其变频与混合控制策略;② 深入理解并应用中点电位平衡、双闭环PI控制、SVPWM调制等核心技术于VIENNA等三电平变换器中;③ 复现高水平期刊论文中的控制算法,服务于科研项目申报、学术论文撰写或工程产品开发。; 阅读建议:该资源为综合性仿真资料库,建议使用者结合自身研究方向(如电动汽车充电、新能源并网)选择对应案例进行精学,重点关注控制策略的设计逻辑、仿真参数的整定方法以及SVPWM与中点平衡的协同机制,并充分利用附带的计算书和参考文献深化理解,以实现从仿真模型到实际工程应用的顺利转化。

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

国行苹果AI来了,你的设备够格跑端侧大模型吗?一场关于内存与算力的极客盘点

国行苹果AI落地,你的iPhone够格吗?🚀 本文从工程视角拆解端侧大模型部署的硬核门槛——内存与算力。盘点MLX、llama.cpp、AICore三大主流方案,对比优劣并给出选型建议。无论你是做毕设还是上架App,都能找到最适合自己的技术路径,避开闪退坑,让AI真正跑在你的设备上!

2601_94912102的博客 289

Windows 10/11 注册表 ProfileImagePath 误改修复:3步恢复用户登录与数据安全

本文详细介绍了Windows 10/11系统中因误改注册表ProfileImagePath键值导致用户无法登录的修复方法。通过3个关键步骤,包括定位SID、安全修复注册表项及验证处理,帮助用户恢复登录并保障数据安全。特别强调了操作顺序的重要性以避免数据丢失,适用于各类Windows用户账户登录错误的紧急处理。

chuoshao2508的博客 404

Gemma 4端云协同架构:从语义DAG到二进制信令的工程实践

大模型端云协同不是简单切分推理任务,而是重构AI服务生命周期——其核心在于将用户意图转化为可执行、可验证、低延迟的结构化语义表示。Gemma 4通过端侧轻量理解器(Gemma-Edge)生成带置信度与层级关系的DAG(有向无环图),再由云端生成器(Gemma-Cloud)基于该DAG融合私有上下文完成自然语言合成,实现‘端做理解、云做生成’的分工范式。该设计显著降低端侧算力压力与隐私风险,提升响应确定性,并支撑IoT、移动端等资源受限场景的高留存AI功能落地。关键技术包括MoE动态专家激活、协同一致性损失(

cuhongjiao7003的博客 326

台达B3伺服电机485通讯的调试过程

最近上了一项目,没办法直接把B3伺服接到PLC上去,怎么办?偶说试下直接电脑通过100多米的485线控制好了,定型前的测试就这样展开了。 1、焊CN1口 如果不安装CN1,是开不了机的,要报很多错误,比如SERV EMG ALERT, 上限报警,下限报警什么的,怎么办?直接焊好CN1头子吧,烦了点,但是必要的。 主要接的是11,9,10,32,31,30几个脚,按照图上连接好就是了。 2、 接线路 按照上面的图,接上伺服电机线,编码器线,电源线,包括限位常闭开关、485连线等,就完..

shidong01的博客 1万+

【人工智能】 WebDev Arena:实时AI Web开发竞赛的技术探索与价值

《AI编程竞赛推动Web开发技术创新》摘要:WebDev Arena作为聚焦Web开发领域的实时AI编程竞赛,通过标准化竞技环境检验AI模型在代码生成、问题解决等方面的能力。竞赛覆盖前端、后端等全流程开发环节,采用实时评分机制,推动AI对复杂Web需求的理解和多元技术栈适配。该赛事不仅促进AI编程技术创新,更为Web开发行业与AI技术融合搭建桥梁,有望提升开发效率、降低技术门槛。未来将拓展Web3.0等前沿技术主题,持续推动行业智能化发展。(150字)

奶爸的编程之路,也就一周冷个三天 261
上一篇: EFR32BG22 I2C与BLE数据透传实战笔记
下一篇: 51单片机定时器与中断系统:从零到精通的实战指南
linux6sysadmin
博客等级 码龄4年 59粉丝 1615原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值