如何加速android ndk构建

时间:2012-09-28 12:50:44

标签: android c++ performance build android-ndk

我们有一个非常大的C ++项目,我们为Android和iOS构建了跨平台。 Xcode在编译时使用所有内核,速度更快(4-5倍,具体取决于机器)。有没有办法改善NDK的表现?任何多CPU选项?我们有预编译的头文件,但在我看来,它是使用有问题的资源。

因此,非常感谢任何加快android ndk项目构建时间的提示或技巧!

3 个答案:

答案 0 :(得分:19)

您不需要使用Android的构建系统进行编译;这些工具都可以在Makefile中使用(尽管您需要注意设置包含路径,库路径和编译器选项)。

由于您可以创建自己的Makefile而不是使用默认构建脚本,因此可以使用-jN选项指定要执行的同时操作的数量。

答案 1 :(得分:2)

以下bulid.gradle片段显示了 -jN abifilters 的示例:(请参阅http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ExternalNativeNdkBuildOptions.htmlhttps://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.NdkOptions.html

android {
compileSdkVersion 21
buildToolsVersion '25.0.3'

defaultConfig {
    applicationId "test"
    minSdkVersion 21
    targetSdkVersion 21

    ndk {
        moduleName "native_lib"
        abiFilters 'armeabi-v7a', 'arm64-v8a'
    }
    externalNativeBuild {
        ndkBuild {
            arguments '-j4'
        }
    }
    jackOptions {
        enabled true
    }
}.....

答案 2 :(得分:0)

对于每个收到以下错误的人

  

在com.android.build.gradle.internal.dsl.NdkBuildOptions类型的对象上找不到参数[-jx]的方法arguments()。

之间有区别

android.externalNativeBuild (here)

android.defaultConfig.externalNativeBuild (here)

android.defaultConfig.externalNativeBuild接受arguments,可用于设置-j选项。