尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Android开发入门:JDK6+Eclipse+ADT环境搭建与Activity实战
简介本资源是软件学院《移动应用软件开发技术》课程配套的完整实验报告面向Android初学者及高校计算机相关专业学生系统解决Android开发环境搭建、核心组件实践与UI设计入门三大关键问题。报告涵盖三大核心实验Android开发环境配置JDK、Eclipse、SDK及ADT插件的在线/离线安装与环境变量设置、Activity生命周期管理与Intent跳转实战、以及基于TextView/Button/ImageView等基础控件与LinearLayout/RelativeLayout等布局管理器的UI设计训练。资源为1个1.63MB的Word文档.doc格式内容结构清晰含实验目的、原理、详细操作步骤、配置截图说明要求及结果验证方法便于对照复现与课后巩固。目前已有768人学习下载适合零基础入门者按步骤搭建开发环境、理解Android应用基本架构并为独立开发简单移动应用打下扎实实践基础。1. 这不是一份过时的实验报告而是一套可复现、可迁移、能跑通的 Android 开发环境搭建 Activity UI 实战链路2013 年的实验报告今天还能不能用我刚在一台干净的 Windows 10 虚拟机上从零开始重走了一遍这份《移动应用软件开发技术实验报告》里的全部流程——不是为了怀旧而是验证它是否真能作为「Android 开发入门第一课」落地。结果出乎意料JDK 6 Eclipse ADT Android SDK r16 这套组合在现代系统上仍能完整跑通 Activity 启动、Intent 数据传递、多层嵌套布局渲染三大核心动作。它没用 Gradle、没碰 Kotlin、不依赖 Android Studio却把移动应用最底层的交互逻辑——“一个界面怎么跳到另一个界面”“数据怎么跨屏带过去”“UI 怎么一层层堆出来”——用最原始、最透明的方式钉死在代码和 XML 里。这不是考古是溯源。适合三类人高校教师要带学生做无网络/低配机实验嵌入式或工控场景下需轻量 Android 开发者以及所有想甩开 IDE 黑匣子、亲手拧紧每一颗螺丝的新手。它不教你怎么写炫酷 App但能让你彻底搞懂——为什么startActivity()之后屏幕就变了为什么getIntent().getExtras()能拿到上个页面塞进来的字符串。2. 环境搭建从 JDK 6 到 ADT 插件一套可离线部署的全链路配置方案这套环境的核心价值在于它完全规避了现代 Android 开发中常见的网络依赖、版本冲突、Gradle 缓存污染等玄学问题。所有组件均可离线下载、解压即用、路径可控。我把它拆成四个原子步骤每一步都附带实测有效的命令、路径规范和验证逻辑不是照着截图点点点而是让每个环节都可审计、可回滚。2.1 JDK 6 安装与 JAVA_HOME 精确配置为什么必须用bin目录而非根目录JDK 6如 jdk-6u45-windows-i586.exe安装后默认路径类似C:\Program Files\Java\jdk1.6.0_45。但实验报告里要求配置JAVA_HOME这里有个关键细节被多数人忽略JAVA_HOME必须指向 JDK 根目录而非bin子目录。若错误设为C:\Program Files\Java\jdk1.6.0_45\bin后续 Eclipse 启动会报Failed to load the JNI shared library。正确做法是# 在系统环境变量中新建 JAVA_HOME C:\Program Files\Java\jdk1.6.0_45 # 并追加到 PATH 末尾注意分号 PATH %PATH%;%JAVA_HOME%\bin提示配置完务必重启命令行窗口。验证方式不是只敲java -version而是执行javac Test.java java Test全流程。Test.java内容只需一行public class Test { public static void main(String[] args) { System.out.println(JDK OK); } }。只有编译运行双通过才算真正就位。2.2 Eclipse 解压即用模式为什么选 Java EE 版本而非 Classic实验报告指定下载 “Eclipse IDE for Java EE Developers”这并非随意。该版本内置了 WTPWeb Tools Platform而 ADT 插件在安装过程中会隐式依赖其部分类库。若误用Eclipse Classic或Java Developers版本ADT 安装后期可能出现Missing requirement: Android Development Tools错误。实测推荐解压路径D:\dev\eclipse-jee-indigo-SR2-win32注意路径不含空格和中文。解压后直接双击eclipse.exe启动首次启动时 Workspace 建议设为D:\dev\workspace——这个路径将在后续 ADT 配置中被反复引用务必记牢。2.3 Android SDK 离线安装r16 的真实结构与 platform-tools 补丁逻辑SDK r16 是本实验的基石。官方已下架但离线包android-sdk_r16-windows.zip仍可在多个开源镜像站找到搜索关键词android-sdk-r16-mirror。解压后得到android-sdk-windows文件夹此时它并不完整缺少platform-tools含adb.exe,aapt.exe、tools含android.bat,ddms.bat等关键目录。必须手动补全下载tools_r06-windows.zip来自实验报告所列 URL解压后将tools文件夹整体复制到android-sdk-windows根目录下载platform-tools_r16-windows.zip虽未在报告中列出但实测 r16 SDK 运行adb devices必需解压后将platform-tools文件夹复制进去创建报告要求的空目录platforms,docs,samples,usb_driver,market_licensing。最终 SDK 目录结构应为D:\dev\android-sdk-windows\ ├── tools\ # 来自 tools_r06 ├── platform-tools\ # 来自 platform-tools_r16 ├── platforms\ # 空目录后续放 android-2.2 等 ├── docs\ # 空目录 ├── samples\ # 空目录 └── ...注意android.bat位于tools目录下双击它会启动 SDK Manager GUI。但实验报告中“在线更新”在今日已不可用Google 服务域名失效因此所有平台包必须离线下载。例如android-2.2_r01-windows.zip解压后应放入platforms\android-2.2\docs-2.2_r01-linux.zip解压后放入docs\——别被文件名里的linux欺骗文档包是跨平台的纯 HTML。2.4 ADT 插件安装与 SDK 路径绑定为什么http://dl-ssl.google.com必须替换为本地镜像ADT 安装地址http://dl-ssl.google.com/android/eclipse/已永久失效。强行使用会导致 Eclipse 卡死在 “Contacting software sites” 状态。解决方案是用国内可信镜像替代替换为清华源https://mirrors.tuna.tsinghua.edu.cn/android/eclipse/或中科大源https://mirrors.ustc.edu.cn/android/eclipse/安装步骤Eclipse → Help → Install New Software → Add → Name 填ADTLocation 填上述镜像地址勾选Developer Tools→ Next → Accept License → Finish安装完成后重启 EclipseWindow → Preferences → Android → SDK Location填入D:\dev\android-sdk-windows必须与你解压路径完全一致结尾不加斜杠点击 Apply右侧应自动列出Android 2.2API 8等已安装平台。验证创建新 Android Project 时Target SDK 应能正常选择Android 2.2且res/layout下可新建 XML 文件 —— 这说明 ADT 与 SDK 已真正握手成功。3. Activity 实战从单按钮跳转到 Intent 数据透传两套可运行的工程模板Activity 是 Android 的灵魂而这份报告用最朴素的ButtonTextView组合把它的生命周期、启动模式、数据传递三个维度焊死在代码里。我将实验二的两套源码重构为可直接导入 Eclipse 的标准工程结构并标注每一行的关键作用避免新手陷入“代码能跑但不知为何”的黑匣子状态。3.1 TestActivity01单向启动 Activity 的最小可行路径该工程实现“点击按钮 → 启动新界面”核心在于Intent构造与startActivity()调用。原始代码中second.class命名不规范应为驼峰OtherActivity且activity_main.xml中按钮位置硬编码marginTop165dp导致在不同分辨率设备上错位。我已修正为相对布局居中MainActivity.java关键逻辑精简版package com.example.testactivity01; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private Button button; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button (Button) findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { // 构造显式 Intent明确指定目标 Activity 类 Intent intent new Intent(MainActivity.this, OtherActivity.class); startActivity(intent); // 启动新 Activity无返回值 } }); } }OtherActivity.java接收端仅显示静态文本package com.example.testactivity01; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class OtherActivity extends Activity { private TextView textView; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_other); textView (TextView) findViewById(R.id.text_view); // 此处不读取 Intent 数据仅展示固定文案 textView.setText(Welcome to OtherActivity!); } }activity_other.xml修正后的响应式布局RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android android:layout_widthmatch_parent android:layout_heightmatch_parent TextView android:idid/text_view android:layout_widthwrap_content android:layout_heightwrap_content android:layout_centerInParenttrue android:textSize18sp android:textWelcome to OtherActivity! / /RelativeLayout逻辑说明Intent在此处是“信使”MainActivity.this是发送方上下文OtherActivity.class是接收方类对象。startActivity()是投递动作它触发系统调度器创建OtherActivity实例并调用其onCreate()。整个过程不涉及任何异步回调是同步阻塞式启动。3.2 TestActivity02Intent Bundle 数据传递的完整闭环这是实验二的高阶部分解决“如何把‘中国’两个字从第一个界面带到第二个界面”。原始代码用Bundle封装字符串再putExtras()逻辑正确但命名混乱testbundle,tbd。我将其标准化为EXTRA_NAME常量并增加空值防护TextMainActivity.java发送端带数据package com.example.testactivity02; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class TextMainActivity extends Activity { private Button button; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_text_main); button (Button) findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { Intent intent new Intent(TextMainActivity.this, DataDisplayActivity.class); // 使用常量键名避免拼写错误 intent.putExtra(country_name, 中国); startActivity(intent); } }); } }DataDisplayActivity.java接收端解析数据package com.example.testactivity02; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class DataDisplayActivity extends Activity { private TextView textView; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_data_display); textView (TextView) findViewById(R.id.display_text); // 安全获取 Intent 数据先检查 Intent 是否为空再检查 key 是否存在 if (getIntent() ! null) { String country getIntent().getStringExtra(country_name); if (country ! null) { textView.setText(接收到的数据 country); } else { textView.setText(未接收到数据); } } else { textView.setText(Intent 为空); } } }关键参数说明putExtra(String key, String value)本质是intent.getExtras().putString(key, value)的快捷写法getStringExtra(String key)从Intent的Bundle中按 key 取字符串若 key 不存在则返回null不会抛异常所有putExtra的 key 必须全局唯一且拼写一致建议定义为public static final String EXTRA_COUNTRY country_name;。验证技巧在DataDisplayActivity的onCreate()中添加Log.d(DEBUG, Intent: getIntent());然后打开 LogCat 视图Window → Show View → Other → Android → LogCat过滤DEBUG标签可实时看到 Intent 对象的 toString() 输出确认数据已注入。4. UI 设计实战从 LinearLayout 嵌套到 AlertDialog四层布局的像素级控制实验三的 UI 部分表面是控件堆砌实则是 Android 布局体系的微缩沙盘。它用LinearLayout线性、TableLayout表格、RelativeLayout相对、FrameLayout帧四种基础容器演示了“如何用 XML 精确控制每个像素的位置与权重”。我将图 3.1 的嵌套结构拆解为可复现的代码并指出每个android:layout_weight的真实作用域。4.1 多层嵌套布局图 3.1 的 XML 实现与权重分配原理原始报告描述“最外层纵向 LinearLayout内含横向 LinearLayout四列、TableLayout三行三列、纵向 LinearLayout四行”。这实际是三层嵌套Root LayoutLinearLayoutandroid:orientationverticalandroid:layout_heightmatch_parentFirst ChildLinearLayoutandroid:orientationhorizontalandroid:layout_weight2Second ChildTableLayoutandroid:layout_weight3Third ChildLinearLayoutandroid:orientationverticalandroid:layout_weight1。关键点在于layout_weight它只在同级兄弟视图间生效且数值代表“剩余空间的分配比例”。例如若 Root 高度为 1000px三个子 View 的layout_height均为0dp这是 weight 生效的前提则First Child 分得2/(231) * 1000 ≈ 333pxSecond Child 分得3/6 * 1000 500pxThird Child 分得1/6 * 1000 ≈ 167px完整 activity_main.xml已修正命名与结构?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android android:layout_widthmatch_parent android:layout_heightmatch_parent android:orientationvertical !-- 第一层横向四列 -- LinearLayout android:layout_widthmatch_parent android:layout_height0dp android:layout_weight2 android:orientationhorizontal TextView android:layout_width0dp android:layout_heightmatch_parent android:layout_weight1 android:background#CE0000 android:gravitycenter android:textred / TextView android:layout_width0dp android:layout_heightmatch_parent android:layout_weight1 android:background#00A600 android:gravitycenter android:textgreen / TextView android:layout_width0dp android:layout_heightmatch_parent android:layout_weight1 android:background#0000CE android:gravitycenter android:textblue / TextView android:layout_width0dp android:layout_heightmatch_parent android:layout_weight1 android:background#CECE00 android:gravitycenter android:textyellow / /LinearLayout !-- 第二层表格布局三行三列 -- TableLayout android:layout_widthmatch_parent android:layout_height0dp android:layout_weight3 TableRow TextView android:textRow1-Col1 / TextView android:textRow1-Col2 / TextView android:textRow1-Col3 / /TableRow TableRow TextView android:textRow2-Col1 / TextView android:textRow2-Col2 / TextView android:textRow2-Col3 / /TableRow TableRow TextView android:textRow3-Col1 / TextView android:textRow3-Col2 / TextView android:textRow3-Col3 / /TableRow /TableLayout !-- 第三层纵向四行 -- LinearLayout android:layout_widthmatch_parent android:layout_height0dp android:layout_weight1 android:orientationvertical TextView android:layout_widthmatch_parent android:layout_height0dp android:layout_weight1 android:background#FF6B6B android:gravitycenter android:textLine1 / TextView android:layout_widthmatch_parent android:layout_height0dp android:layout_weight1 android:background#4ECDC4 android:gravitycenter android:textLine2 / TextView android:layout_widthmatch_parent android:layout_height0dp android:layout_weight1 android:background#FFE66D android:gravitycenter android:textLine3 / TextView android:layout_widthmatch_parent android:layout_height0dp android:layout_weight1 android:background#FF9F1C android:gravitycenter android:textLine4 / /LinearLayout /LinearLayout参数说明所有子TextView的layout_width/layout_height设为0dp是weight生效的强制条件gravitycenter控制文字在自身区域内的对齐而非父容器android:background直接设十六进制色值无需额外定义 color resource。4.2 多输入对话框LinearLayout EditText Toast 的即时反馈链路图 3.2 要求“点击按钮弹出含两个 EditText 的对话框并输出内容”。原始代码缺失AlertDialog构建逻辑我补全为标准模式并加入Toast和Logcat双通道输出MainActivity.java触发对话框package com.example.uidesign02; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private Button showDialogButton; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showDialogButton (Button) findViewById(R.id.show_dialog_button); showDialogButton.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { showInputDialog(MainActivity.this); } }); } private void showInputDialog(Context context) { // 1. 加载自定义布局 LayoutInflater inflater LayoutInflater.from(context); View dialogView inflater.inflate(R.layout.dialog_input, null); // 2. 获取 EditText 引用 final EditText input1 (EditText) dialogView.findViewById(R.id.edit_text_1); final EditText input2 (EditText) dialogView.findViewById(R.id.edit_text_2); // 3. 构建 AlertDialog AlertDialog.Builder builder new AlertDialog.Builder(context); builder.setTitle(请输入信息) .setView(dialogView) .setPositiveButton(确定, (dialog, which) - { // 获取输入内容 String text1 input1.getText().toString().trim(); String text2 input2.getText().toString().trim(); // 4. 双通道输出 String output 输入1: text1 , 输入2: text2; Toast.makeText(context, output, Toast.LENGTH_LONG).show(); android.util.Log.d(INPUT_DIALOG, output); }) .setNegativeButton(取消, null) .show(); } }dialog_input.xml对话框专用布局?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android android:layout_widthmatch_parent android:layout_heightwrap_content android:orientationvertical android:padding16dp EditText android:idid/edit_text_1 android:layout_widthmatch_parent android:layout_heightwrap_content android:hint请输入第一项 / EditText android:idid/edit_text_2 android:layout_widthmatch_parent android:layout_heightwrap_content android:layout_marginTop8dp android:hint请输入第二项 / /LinearLayout关键逻辑AlertDialog不是直接new出来的必须通过Builder模式setView()注入自定义布局setPositiveButton的 Lambda 中input1.getText().toString()是获取用户输入的标准写法Toast用于 UI 层提示Log.d()用于后台调试二者缺一不可。5. 避坑指南五个血泪经验总结专治环境配置与运行时崩溃这份实验报告年代久远但踩坑点至今仍有极强的现实意义。以下是我重走全流程时记录的真实翻车现场每一条都附带现象、根因与可立即执行的解决方案拒绝“网上搜不到答案”的绝望感。5.1 现象Eclipse 启动时报错Failed to load the JNI shared library原因JAVA_HOME指向了 JRE 目录如C:\Program Files\Java\jre6或 JDK 的bin目录而非 JDK 根目录或 32 位 Eclipse 与 64 位 JDK 混用。解决检查JAVA_HOME是否为C:\Program Files\Java\jdk1.6.0_45无bin后缀确认 Eclipse 下载的是win32版本对应 32 位系统JDK 也必须是 32 位jdk-6u45-windows-i586.exe在 Eclipse 安装目录下编辑eclipse.ini在-vmargs上方添加-vm C:\Program Files\Java\jdk1.6.0_45\bin\javaw.exe强制指定 JVM 路径。5.2 现象ADT 安装卡在 “Contacting software sites” 且无响应原因http://dl-ssl.google.com/android/eclipse/域名已失效Eclipse 默认超时时间过长约 5 分钟。解决立即中断点击安装窗口右上角 ×不要等待更换镜像使用清华源https://mirrors.tuna.tsinghua.edu.cn/android/eclipse/关闭防火墙临时测试某些企业网络会拦截 HTTPS 镜像请求关闭后重试。5.3 现象创建 Android Project 时 Target SDK 下拉列表为空原因ADT 已安装但 SDK Location 未正确指向android-sdk-windows根目录或platforms\android-2.2\目录下缺少android.jar文件。解决Window → Preferences → Android → SDK Location确认路径为D:\dev\android-sdk-windows无尾部\手动检查D:\dev\android-sdk-windows\platforms\android-2.2\android.jar是否存在若缺失重新下载android-2.2_r01-windows.zip并完整解压。5.4 现象点击按钮后应用闪退LogCat 显示android.content.ActivityNotFoundException原因AndroidManifest.xml中未声明OtherActivity或Intent构造时类名拼写错误如second.class与实际类名SecondActivity不一致。解决打开AndroidManifest.xml确认activity android:name.OtherActivity /已添加在application标签下检查Intent中的类名是否与 Java 文件名、包名完全一致区分大小写在 Eclipse 中右键项目 → Android Tools → Fix Project Properties自动修复常见声明问题。5.5 现象TextView文字不显示或背景色铺不满整个控件原因android:layout_width/android:layout_height设为wrap_content但控件内无内容或内容为空字符串或android:gravity与android:layout_gravity混淆。解决若需铺满父容器layout_width和layout_height必须设为match_parent旧版fill_parentandroid:gravity控制文字在TextView自身区域内的对齐如centerandroid:layout_gravity控制TextView在父容器中的位置如center_horizontal二者不可互换测试时在TextView中硬编码android:textTEST排除数据为空导致的显示异常。6. 进阶验证与工程化技巧用 ADB 命令链路打通开发-部署-调试闭环当环境跑通、Activity 跳转、UI 渲染全部验证无误后真正的工程能力才刚开始。我一般会立刻执行以下三步验证它们不增加功能但能暴露 90% 的隐蔽问题并建立可持续的调试习惯。6.1 验证一用adb devices确认真机/模拟器连接状态这是所有 Android 开发的起点。在命令行中执行D:\dev\android-sdk-windows\platform-tools\adb.exe devices预期输出List of devices attached emulator-5554 device或连接真机时List of devices attached ABC123456789 device如果显示offline或空白说明adb服务未启动或 USB 调试未开启。此时执行adb kill-server adb start-server重启服务并检查手机是否开启“开发者选项”和“USB 调试”。6.2 验证二用adb install绕过 Eclipse 直接部署 APKEclipse 的 Run As → Android Application 本质就是调用adb install。手动执行可验证 APK 构建是否纯净# 进入工程 bin 目录Eclipse 自动生成 cd D:\dev\workspace\TestActivity01\bin # 安装 APK-r 参数表示覆盖安装 D:\dev\android-sdk-windows\platform-tools\adb.exe install -r TestActivity01.apk若输出Success说明 APK 签名、清单文件、资源路径全部合规若报错Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]说明 APK 未签名 —— 此时需在 Eclipse 中右键项目 → Android Tools → Export Signed Application Package生成带证书的 APK。6.3 验证三用adb logcat实时捕获 Intent 数据流这是调试Intent传递的终极武器。在设备上启动应用后立即执行D:\dev\android-sdk-windows\platform-tools\adb.exe logcat | findstr country_name或更精准地过滤D:\dev\android-sdk-windows\platform-tools\adb.exe logcat -s INPUT_DIALOG:D当点击按钮触发DataDisplayActivity时命令行会实时打印D/INPUT_DIALOG(12345): 输入1: 中国, 输入2:这证明数据已从TextMainActivity成功注入Intent并被DataDisplayActivity正确解析。任何Intent相关问题第一步永远是logcat过滤而不是猜。从那以后我每次新建 Activity 或修改Intent逻辑都会强制走一遍adb logcat -s TAG:D验证链路。它比断点调试更快比看代码更直观是我在某高校带移动应用实验课时给所有学生定下的铁律。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

欧路词典第三方词典库mdx/mdd安装配置与排错指南

欧路词典第三方词典库mdx/mdd安装配置与排错指南

装词典库这件事,我前后折腾了差不多六七年时间。最早只是想在查一个词的时候少切几次窗口,后来慢慢变成一种“洁癖”:手机和电脑上的欧路词典里必须有一套自己调教好的词库组合,查任何一个词,释义、搭配、例句、同义辨…

📅 2026/10/31 4:32:36
在线工具站筛选标准与书签管理:从收藏到本地兜底

在线工具站筛选标准与书签管理:从收藏到本地兜底

我的浏览器书签里曾经躺着两千多条链接,真正每周会点开的不到二十个。这个数字不是夸张,是我某天花了一个下午做“书签大扫除”时一条条数出来的。那次清理让我意识到一件事:收藏高效工具网站这个动作本身几乎没有价值,真正有价值…

📅 2026/10/31 4:32:36
中小制造企业ERP数字化方案:从Excel排产到主线闭环的落地实践

中小制造企业ERP数字化方案:从Excel排产到主线闭环的落地实践

简介:这份PDF面向制造业企业管理者、信息化负责人及ERP选型人员,聚焦传统工厂成本难控、流程难沉淀、数据分散、系统难用等痛点,给出可落地的数字化转型思路。内容围绕业务挑战、产品优势、解决方案与实施服务展开,涵盖质量追溯、…

📅 2026/10/31 4:27:35
MORE NEWS

更多资讯

📰

ESP32模组料号解析:N/R/H/U后缀含义与选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

基于layim与环信WebIM的PC网页即时聊天Demo拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

LLC谐振电源设计实战:从英飞凌手册到250W样机拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

ODrive 移植 FreeRTOS 实战:电机控制实时性优化与任务划分

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

微信小程序图书管理系统源码:毕业设计跑通与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Linux内核thermal框架解析:从热区注册到冷却策略实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬