You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯C++开发Android应用:ndk-build仅生成.so未生成APK怎么办?

问题原因与解决步骤

核心问题

ndk-build 本身仅负责编译原生C++代码生成 .so 库,它不会自动生成APK。官方指南里提到的“自动打包进APK”,是指当你具备完整的Android项目结构(包含Manifest配置、资源文件等),并配合Gradle这类Android构建工具时,ndk-build产出的.so会被构建工具自动打包进最终APK——而非ndk-build单独完成APK生成。

你的情况是只有jni/目录下的原生代码和构建脚本,缺少Android应用必需的基础结构,所以只能得到.so文件。

具体解决步骤

1. 修正构建脚本配置位置

你把APP_PLATFORM写在了Android.mk里,这个配置属于全局项目级参数,应该放在jni/Application.mk文件中(没有就新建):

# jni/Application.mk
APP_PLATFORM := android-30
APP_MODULES := Test  # 指定要编译的模块名,对应Android.mk里的LOCAL_MODULE

原Android.mk中删除APP_PLATFORM := android-30,保持如下即可:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := Test
LOCAL_SRC_FILES := main.cpp

include $(BUILD_SHARED_LIBRARY)

2. 补全Android项目基础结构

在项目根目录下创建以下必备文件和目录:

  • AndroidManifest.xml:应用的核心配置文件,若做纯Native应用(无需Java代码),可使用NativeActivity,示例如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yourcompany.test">  <!-- 替换成你的自定义包名 -->

    <application
        android:label="TestApp"
        android:icon="@mipmap/ic_launcher">  <!-- 可自行添加图标资源,或暂时留空 -->
        <activity android:name="android.app.NativeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <!-- 指定要加载的.so库名,对应LOCAL_MODULE的Test -->
            <meta-data
                android:name="android.app.lib_name"
                android:value="Test" />
        </activity>
    </application>

    <uses-sdk android:minSdkVersion="30" android:targetSdkVersion="30" />
</manifest>
  • res/目录:至少创建空的res/mipmap/和res/values/目录,避免构建时因缺少资源目录报错。

3. 生成APK

新手最推荐用Android Studio导入项目完成打包:

  1. 打开Android Studio,选择“Import Project”,选中你的项目根目录
  2. Studio会自动生成Gradle构建配置,识别jni/目录的原生代码
  3. 点击工具栏的「Build」→「Build Bundle(s)/APK(s)」→「Build APK(s)」,最终APK会生成在app/build/outputs/apk/目录下

如果想用命令行打包,需要使用aapt、d8、apksigner等Android构建工具链,步骤繁琐,不推荐新手尝试。

内容的提问来源于stack exchange,提问作者user21907176

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:35:26