安卓模拟器安装和第一个C++安卓程序编译运行
序号:6 | Mac Intel芯片 | Android Studio Panda 2 | Pixel 9模拟器
🎯 目标
创建一个简单的Android应用,在屏幕上显示 "Hello from C++"
csharp
┌──────────────────────────────────────┐
│ TestLog │
│ │
│ Hello from C++ │
│ │
│ │
│ │
└──────────────────────────────────────┘
📋 准备工作
1. 确认Android Studio已安装
打开Android Studio,确保版本是 Panda 2 | 2025.3.2
2. 安装NDK和CMake
打开Android Studio → Settings → Appearance & Behavior → System Settings → Android SDK
csharp
SDK Tools 标签页:
☑ NDK (Side by side) # 选择最新版本
☑ CMake # 选择最新版本
☑ Android Emulator # 确保已安装
点击"Apply"安装这些工具。
3. 创建模拟器
打开 Device Manager(右下角小手机图标):
arduino
1. 点击 "Create device"
2. 选择 "Pixel 9"(推荐选择API 34或35)
3. 点击 "Next"
4. 选择系统镜像(推荐 "Tiramisu" 或 "UpsideDownCake")
5. 点击 "Next"
6. 点击 "Finish"
🚀 第一步:创建新项目
1. 新建Native C++项目
sql
File → New → New Project...
│
├── 选择 "Native C++"(在Phone & Tablet分类里)
│ └── 点击 "Next"
│
├── 填写项目信息:
│ ├── Name: TestLog(或你喜欢的名字)
│ ├── Package name: com.example.testlog
│ ├── Save location: 选择一个目录
│ └── Language: Java(也可以选Kotlin)
│ └── Minimum SDK: API 24(推荐)
│ └── 点击 "Next"
│
├── C++ Standard: 选择 "C++17"
│ └── 点击 "Finish"
2. 等待项目加载
Android Studio会自动下载必要的依赖,耐心等待。
📝 第二步:修改代码
1. 修改C++代码
打开 app/src/main/cpp/native-lib.cpp
cpp
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_testlog_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
这段代码的意思:
extern "C"告诉编译器用C语言方式导出函数Java_com_example_testlog_MainActivity_stringFromJNI是JNI函数名- 返回字符串 "Hello from C++"
2. 修改布局文件
打开 app/src/main/res/layout/activity_main.xml
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/sample_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp" />
</LinearLayout>
3. 修改MainActivity
打开 app/src/main/java/com/example/testlog/MainActivity.java
java
package com.example.testlog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// 加载C++库
static {
System.loadLibrary("testlog");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取TextView并设置文本
TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
// 声明JNI方法
public native String stringFromJNI();
}
🔧 第三步:配置构建文件
1. 检查build.gradle
打开 app/build.gradle(Module级别)
gradle
android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
cppFlags "-std=c++17"
}
}
}
...
externalNativeBuild {
cmake {
path file("src/main/cpp/CMakeLists.txt")
version "3.22.1" // 使用你安装的CMake版本
}
}
}
2. 检查CMakeLists.txt
打开 app/src/main/cpp/CMakeLists.txt
cmake
cmake_minimum_required(VERSION 3.22.1)
project("testlog")
add_library(
testlog
SHARED
native-lib.cpp)
find_library(
log-lib
log)
target_link_libraries(
testlog
${log-lib})
🚀 第四步:编译运行
1. 选择设备
在Android Studio顶部工具栏:
- 点击设备选择下拉框
- 选择你创建的 Pixel 9 模拟器
2. 点击运行按钮
arduino
点击绿色的 "Run" 按钮 ▶️
3. 等待编译和安装
markdown
Android Studio会:
1. 编译C++代码(ndk-build)
2. 打包APK
3. 启动模拟器
4. 安装并运行APP
✅ 成功!
你应该会看到:
csharp
┌──────────────────────────────────────┐
│ TestLog │
│ │
│ Hello from C++ │
│ │
│ │
│ │
└──────────────────────────────────────┘
📂 项目结构
bash
TestLog/
├── app/
│ ├── src/
│ │ └── main/
│ │ ├── cpp/ # C++代码
│ │ │ ├── CMakeLists.txt
│ │ │ └── native-lib.cpp
│ │ ├── java/ # Java代码
│ │ │ └── com/example/testlog/
│ │ │ └── MainActivity.java
│ │ └── res/ # 资源文件
│ │ └── layout/
│ │ └── activity_main.xml
│ └── build.gradle # 构建配置
└── gradle.properties
💡 常见问题
Q1:编译失败,找不到NDK?
arduino
解决方法:
1. 打开 File → Project Structure
2. 选择 "SDK Location"
3. 确认 "Android NDK location" 已设置
4. 如果为空,点击 "Download NDK"
Q2:模拟器启动慢?
markdown
加速技巧:
1. 确保启用了Intel VT-x(在BIOS中开启)
2. 打开模拟器设置 → Performance
3. 选择 "Hardware - GLES 2.0"
4. 增加模拟器内存(推荐至少2GB)
Q3:应用崩溃,找不到库?
markdown
检查:
1. CMakeLists.txt中的库名是否正确
2. System.loadLibrary("testlog") 中的名字是否匹配
3. 确认NDK已正确安装
🎯 总结
步骤回顾
| 步骤 | 操作 |
|---|---|
| 1 | 创建Native C++项目 |
| 2 | 修改native-lib.cpp |
| 3 | 修改布局文件 |
| 4 | 修改MainActivity |
| 5 | 选择Pixel 9模拟器 |
| 6 | 点击运行 |
关键概念
scss
Java层 ↔ JNI层 ↔ C++层
│ │ │
│ 调用 │ 调用 │
│ │ │
↓ ↓ ↓
stringFromJNI() → JNI桥接 → 返回字符串
本文档整理于 2026-06-14
安卓模拟器安装和第一个C++安卓程序编译运行
序号:6 | Mac Intel芯片 | Android Studio Panda 2 | Pixel 9模拟器
🎯 目标
创建一个简单的Android应用,在屏幕上显示 "Hello from C++"
csharp
┌──────────────────────────────────────┐
│ TestLog │
│ │
│ Hello from C++ │
│ │
│ │
│ │
└──────────────────────────────────────┘
📋 准备工作
1. 确认Android Studio已安装
打开Android Studio,确保版本是 Panda 2 | 2025.3.2
2. 安装NDK和CMake
打开Android Studio → Settings → Appearance & Behavior → System Settings → Android SDK
csharp
SDK Tools 标签页:
☑ NDK (Side by side) # 选择最新版本
☑ CMake # 选择最新版本
☑ Android Emulator # 确保已安装
点击"Apply"安装这些工具。
3. 创建模拟器
打开 Device Manager(右下角小手机图标):
arduino
1. 点击 "Create device"
2. 选择 "Pixel 9"(推荐选择API 34或35)
3. 点击 "Next"
4. 选择系统镜像(推荐 "Tiramisu" 或 "UpsideDownCake")
5. 点击 "Next"
6. 点击 "Finish"
🚀 第一步:创建新项目
1. 新建Native C++项目
sql
File → New → New Project...
│
├── 选择 "Native C++"(在Phone & Tablet分类里)
│ └── 点击 "Next"
│
├── 填写项目信息:
│ ├── Name: TestLog(或你喜欢的名字)
│ ├── Package name: com.example.testlog
│ ├── Save location: 选择一个目录
│ └── Language: Java(也可以选Kotlin)
│ └── Minimum SDK: API 24(推荐)
│ └── 点击 "Next"
│
├── C++ Standard: 选择 "C++17"
│ └── 点击 "Finish"
2. 等待项目加载
Android Studio会自动下载必要的依赖,耐心等待。
📝 第二步:修改代码
1. 修改C++代码(包含日志输出)
打开 app/src/main/cpp/native-lib.cpp
cpp
#include <jni.h>
#include <string>
#include <android/log.h>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_testlog_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
// 输出日志到Android Logcat
__android_log_write(ANDROID_LOG_FATAL, "testlog", "test log for android");
__android_log_print(ANDROID_LOG_FATAL, "testlog", "test log for android");
return env->NewStringUTF(hello.c_str());
}
这段代码的意思:
#include <android/log.h>- 引入Android日志库__android_log_write()- 写入日志到Logcat__android_log_print()- 格式化输出日志ANDROID_LOG_FATAL- 日志级别(FATAL级别会显示红色)"testlog"- 日志标签(方便筛选)
2. 修改布局文件
打开 app/src/main/res/layout/activity_main.xml
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/sample_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp" />
</LinearLayout>
3. 修改MainActivity
打开 app/src/main/java/com/example/testlog/MainActivity.java
java
package com.example.testlog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// 加载C++库
static {
System.loadLibrary("testlog");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取TextView并设置文本
TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
// 声明JNI方法
public native String stringFromJNI();
}
🔧 第三步:配置构建文件
1. 检查build.gradle
打开 app/build.gradle(Module级别)
gradle
android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
cppFlags "-std=c++17"
}
}
}
...
externalNativeBuild {
cmake {
path file("src/main/cpp/CMakeLists.txt")
version "3.22.1" // 使用你安装的CMake版本
}
}
}
2. 检查CMakeLists.txt
打开 app/src/main/cpp/CMakeLists.txt
cmake
cmake_minimum_required(VERSION 3.22.1)
project("testlog")
add_library(
testlog
SHARED
native-lib.cpp)
find_library(
log-lib
log)
target_link_libraries(
testlog
${log-lib})
🚀 第四步:编译运行
1. 选择设备
在Android Studio顶部工具栏:
- 点击设备选择下拉框
- 选择你创建的 Pixel 9 模拟器
2. 点击运行按钮
arduino
点击绿色的 "Run" 按钮 ▶️
3. 等待编译和安装
markdown
Android Studio会:
1. 编译C++代码(ndk-build)
2. 打包APK
3. 启动模拟器
4. 安装并运行APP
✅ 成功!
1. 屏幕显示效果
csharp
┌──────────────────────────────────────┐
│ TestLog │
│ │
│ Hello from C++ │
│ │
│ │
│ │
└──────────────────────────────────────┘
2. Logcat日志输出
打开 Logcat(Android Studio底部面板):
bash
搜索框输入:testlog
你会看到日志:
FATAL testlog: test log for android
FATAL testlog: test log for android
3. 日志级别说明
| 级别 | 宏定义 | 颜色 | 用途 |
|---|---|---|---|
| VERBOSE | ANDROID_LOG_VERBOSE | 黑色 | 详细信息 |
| DEBUG | ANDROID_LOG_DEBUG | 蓝色 | 调试信息 |
| INFO | ANDROID_LOG_INFO | 绿色 | 一般信息 |
| WARN | ANDROID_LOG_WARN | 黄色 | 警告信息 |
| ERROR | ANDROID_LOG_ERROR | 红色 | 错误信息 |
| FATAL | ANDROID_LOG_FATAL | 红色 | 致命错误 |
📂 项目结构
bash
TestLog/
├── app/
│ ├── src/
│ │ └── main/
│ │ ├── cpp/ # C++代码
│ │ │ ├── CMakeLists.txt
│ │ │ └── native-lib.cpp
│ │ ├── java/ # Java代码
│ │ │ └── com/example/testlog/
│ │ │ └── MainActivity.java
│ │ └── res/ # 资源文件
│ │ └── layout/
│ │ └── activity_main.xml
│ └── build.gradle # 构建配置
└── gradle.properties
💡 常见问题
Q1:编译失败,找不到NDK?
arduino
解决方法:
1. 打开 File → Project Structure
2. 选择 "SDK Location"
3. 确认 "Android NDK location" 已设置
4. 如果为空,点击 "Download NDK"
Q2:模拟器启动慢?
markdown
加速技巧:
1. 确保启用了Intel VT-x(在BIOS中开启)
2. 打开模拟器设置 → Performance
3. 选择 "Hardware - GLES 2.0"
4. 增加模拟器内存(推荐至少2GB)
Q3:应用崩溃,找不到库?
markdown
检查:
1. CMakeLists.txt中的库名是否正确
2. System.loadLibrary("testlog") 中的名字是否匹配
3. 确认NDK已正确安装
🎯 总结
步骤回顾
| 步骤 | 操作 |
|---|---|
| 1 | 创建Native C++项目 |
| 2 | 修改native-lib.cpp |
| 3 | 修改布局文件 |
| 4 | 修改MainActivity |
| 5 | 选择Pixel 9模拟器 |
| 6 | 点击运行 |
关键概念
scss
Java层 ↔ JNI层 ↔ C++层
│ │ │
│ 调用 │ 调用 │
│ │ │
↓ ↓ ↓
stringFromJNI() → JNI桥接 → 返回字符串
本文档整理于 2026-06-14