Lazy loaded image
🔎Linux下的Android嵌入式开发环境搭建以及交叉调试
字数 472阅读时长 2 分钟
2025-11-22
2025-11-29
password
comment
type
status
date
slug
summary
tags
category
icon
AI custom autofill

MacOS连接开发板

开发板连接:USB+网线

进入开发板开发环境

可以看出这是32位的开发板

共享网络

检查Mac中的网线网口在哪里:
插拔网线,两次使用该命令,找出wifi与网卡的网口具体位置,然后手动设置为指定的静态ip,方便与开发板连接。
然后设置开发板的静态ip,先进入adb shell。然后
创建MacOS的/etc/exports

安装编译程序

具体操作忘记了,应该是安装一个兼容M4芯片,并且自带相关依赖库的gcc。在安装时,还需注意环境变量中路径的设置,不一定会安装在默认的路径下
但是Mac并没有能支持32位开发板的编译环境,也就是说编译出的可执行文件仅能在64位系统中使用,因此放弃该操作。

Docker

创建了一个lab5_20251122镜像,ubuntu22.04

第4步 — 创建 Android 项目(命令行版,完整文件与目录)

在容器里执行(逐步说明):
下面我们建立一个非常小的 NDK 示例工程结构:

1) hello-jni.c(JNI C 实现)

jni/hello-jni.c 写入:
说明:
  • JNI 的函数签名 Java_com_example_helloworld_MainActivity_stringFromJNI 必须与 Java 中 com.example.helloworld.MainActivity 的包名与方法名对应(下划线替代点号)。
  • 返回 jstring 给 Java 层。

2) jni/Android.mkjni/Application.mk

jni/Android.mk
jni/Application.mk(控制 ABI 和 platform):
说明:
  • APP_ABI 决定生成的 so 在 libs/<ABI>/libhelloworld.so 中。例如 arm64-v8a 对应 64-bit ARM。若目标设备是 32-bit,改成 armeabi-v7a
  • APP_PLATFORM 决定编译时 linking 的 Android API level(NDK 支持的最低平台)。

3) Java 源:src/com/example/helloworld/MainActivity.java

说明:
  • System.loadLibrary("helloworld") 会加载 libhelloworld.so(去掉 lib 前缀和 .so 后缀)。
  • 包名 com.example.helloworld 与 JNI 名称前缀要一致。

4) AndroidManifest.xml(最小化)

说明:
  • uses-sdk 里的 minSdkVersion 应与 NDK 的 APP_PLATFORM 相匹配(上例二者为 21)。
  • package 决定 APK 的包名(安装后 adb shell pm list packages 可看到)。

5) 资源目录(res/

即便没有任何资源,也最好创建一个空文件夹:
上一篇
Ⅱ-ES
下一篇
海口吃吃吃

评论
Loading...