2017-06-20 78 views
3

我已将基于NDK的应用程序从命令行ant构建过渡到Android Studio。使用Gradle/Android Studio为Android构建独立静态库

Android Studio被放置在Gradle之上。 Gradle调用CMake来构建C++代码。

我所寻求的是建立只是一组静态.a文件为Android的ARMv7目标,arm64,X86的方式等

的Android Studio项目正朝着完整的应用程序为目标。

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

我在Linux下使用所有最新的Android工具: Android Studio 3.0 canary4。 NDK 15.0.4075724

+0

如果您使用的是带有Ant的make文件,您仍然可以移动并使用相同的make文件,方法是调用gradle.NDK属性以使用“legacy”。 https://ph0b.com/new-android-studio-ndk-support/“使用android.mk”.... –

回答

0

您可以在此建2种方式的Android Studio和摇篮静态库:

  • 添加在你的模块的Android.mk include $(BUILD_STATIC_LIBRARY),即使用NDK建造或gradle这个实验性的插件。
  • 添加在使用Android 2.3以上版本的工作室在你的模块的build.gradle

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

    添加,然后按同步摇篮文件你的CMakeLists.txt

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

    。 但是一定要记住,你将无法在你的app.apk中打包(添加)已建立的静态库,因此你将无法从java代码中加载cpp代码。您只能在Android应用程序中加载共享库。

+1

我知道如何为我的应用程序的共享库构建一个静态库。我有这个工作。我无法管理的是创建一个静态库*,而不用创建一个Android应用程序。 – Bram

+0

您也可以在Gradle视图中执行ProjectName:NativeModuleName/Tasks/other/externalNativeBuildDebug或externalNativeBuildRelease,并仅构建您的静态库 – Titan