19

我们有一个相当大的 C++ 项目,我们为 Android 和 iOS 构建跨平台。Xcode 在编译时使用所有内核并且速度更快(4-5 倍,具体取决于机器)。有什么办法可以改善 NDK 的糟糕性能?任何多 CPU 选项?我们已经预编译了头文件,但在我看来,这是错误的资源使用。

因此,任何加快 android ndk 项目构建时间的提示或技巧将不胜感激!

4

3 回答 3

20

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

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

于 2012-09-28T12:57:56.533 回答
3

以下 bulid.gradle 片段显示了-jNabifilters的示例:(请参阅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
    }
}.....
于 2017-11-29T15:40:44.403 回答
3

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

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

之间有区别

android.externalNativeBuild (这里)

android.defaultConfig.externalNativeBuild (这里)

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

于 2019-09-21T12:59:14.887 回答