2017-06-20 110 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