【问题标题】:Building stand-alone static library for Android using Gradle/Android Studio使用 Gradle/Android Studio 为 Android 构建独立的静态库
【发布时间】:2017-11-23 07:35:49
【问题描述】:

我已将基于 NDK 的应用从命令行 ant 构建转换为 Android Studio。

Android Studio 位于 Gradle 之上。 Gradle 调用 CMake 来构建 C++ 代码。

我正在寻找一种为 Android 目标 armv7、arm64、x86 等构建一组静态 .a 文件的方法。

Android Studio 项目面向完整的应用程序。

有没有办法让 Gradle(或 AStudio)只构建静态库 (.a),而不构建应用程序或共享库?

我在 linux 下使用所有最新的 Android 东西: Android Studio 3.0 canary4. NDK 15.0.4075724

【问题讨论】:

  • 如果您使用带 Ant 的 make 文件,您仍然可以通过调整 gradle.NDK 属性以使用“旧版”来在 AS 上移动和使用相同的 make 文件。 ph0b.com/new-android-studio-ndk-support "使用 android.mk" ....

标签: android android-studio gradle android-ndk


【解决方案1】:

您可以通过以下两种方式在 Android Studio 和 Gradle 中构建静态库:

  • 使用 ndk-build 或 gradle-experimental 插件添加模块的 Android.mk include $(BUILD_STATIC_LIBRARY)
  • 在您的 CMakeLists.txt 中添加

    add_library(mylib STATIC
        source_file1.cpp
        source_file2.
        ... )
    

    使用 Android Studio 2.3+ 并添加模块的 build.gradle

    android{
        defaultConfig{
            externalNativeBuild{
                cmake{
                    \\ add cmake parameters here if you have some
                }
            }
        }
    }
    

    然后按同步 Gradle 文件。 但请始终记住,您将无法在 app.apk 中打包(添加)已构建的静态库,因此您将无法从 java 代码中加载 cpp 代码。您只能在您的 Android 应用中加载共享库。

【讨论】:

  • 我知道如何为我的应用程序的共享库构建静态库。我有那个工作。我无法管理的是创建一个静态库而不也构建一个 Android 应用程序。
  • 您也可以在 gradle 视图中执行 ProjectName:NativeModuleName/Tasks/other/externalNativeBuildDebug 或 externalNativeBuildRelease 并仅构建您的静态库
猜你喜欢
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2018-05-30
相关资源
最近更新 更多