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

如何仅针对Debug构建类型避免剥离AAR中打包的原生库?

嘿,这事儿我熟!在Android Studio外部打包AAR其实没那么复杂,按下面的步骤来就行:

第一步:确认你的目录结构

先确保你的文件摆放完全符合Android Library的标准结构,应该是这样的:

app/
├── src/
│   └── main/
│       ├── jniLibs/
│       │   └── arm64-v8a/
│       │       └── libyour-custom-lib.so  # 你的C++库文件
│       ├── java/
│       │   └── com/
│       │       └── yourcompany/
│       │           └── YourJavaClass.java  # 你的Java类(按包名层级放)
│       └── AndroidManifest.xml  # Library的清单文件
└── build.gradle  # Gradle配置文件
第二步:调整build.gradle为Library类型

因为AAR是Android Library的归档包,所以你的build.gradle必须使用com.android.library插件,而不是应用插件。给你个参考配置,按需修改:

plugins {
    id 'com.android.library'
}

android {
    namespace "com.yourcompany.yourlibrary"  # 替换成你的实际包名
    compileSdk 34  # 根据你的项目需求调整SDK版本

    defaultConfig {
        minSdk 21  # 你的最低支持Android版本
        targetSdk 34

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"  # 如果需要给依赖你的应用提供混淆规则的话
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            
            # 重点:默认release构建会剥离.so文件的调试符号(也就是你说的“剥离版本”)
            # 如果需要保留调试符号用于后续调试,解开下面的注释:
            # ndk {
            #     debugSymbolLevel 'FULL'
            # }
        }
        debug {
            # Debug构建默认保留完整调试符号,无需额外配置
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    # 这里添加你的项目依赖,比如AndroidX库等
    implementation 'androidx.core:core-ktx:1.12.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

另外,你的AndroidManifest.xml要符合Library的要求,不要包含应用级的配置(比如application标签里的android:name),示例如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yourcompany.yourlibrary">

    <!-- 这里添加你的Library需要的权限、组件声明等 -->
    <uses-permission android:name="android.permission.INTERNET" />

    <application>
        <!-- 如果有自定义Service、ContentProvider等,在这里声明即可 -->
    </application>
</manifest>
第三步:执行Gradle打包命令

因为是在Android Studio外部操作,推荐用项目自带的gradlew(Gradle Wrapper)来避免环境版本不一致的问题:

  • Windows系统:打开命令提示符,进入app目录,执行:
    gradlew assembleRelease
    
    或者要打Debug包的话:
    gradlew assembleDebug
    
  • Linux/macOS系统:打开终端,进入app目录,执行:
    ./gradlew assembleRelease
    
    或者Debug包:
    ./gradlew assembleDebug
    

执行完成后,生成的AAR文件会放在app/build/outputs/aar/目录下,比如app-release.aar或app-debug.aar。

关于“剥离版本”的补充说明

你提到默认AAR包含剥离版本的库,这里再明确下:

  • 默认的Release构建会自动剥离.so文件的调试符号,这样能大幅减小AAR的体积,适合正式发布。
  • 如果需要保留调试符号(比如后续要排查Native层问题),就在build.gradle的release构建类型里添加ndk { debugSymbolLevel 'FULL' }配置,这样打包出来的AAR里的.so就会保留完整调试信息。
验证打包结果

你可以把生成的AAR文件重命名为.zip,解压后检查内容:

  • jni/arm64-v8a/下应该有你的C++库文件
  • classes.jar里包含你的Java类
  • 根目录下有AndroidManifest.xml和其他必要文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:44:22