7

我最近从Eclipse + ADT切换到Android Studio。我的应用程序是完整的原生C++应用程序。我使用Android Studio 2.0 Beta 5和Gradle实验0.6.0-beta4。Android Studio本机代码编译速度慢

对于本机代码,Android Studio的构建过程非常缓慢。我阅读了Stackoverflow和Internet上的所有问题。我应用了所有建议的方法(--offline,--daemon,--parallel,-XmxSize等)。他们主要致力于加快Java代码的构建。本地C++文件(ndk-build)的编译过程仍然非常缓慢。即使我编写一行C++代码,每次单击“运行”按钮时,我都会等待5-7分钟,其中Eclipse的编译时间对于同一作业而言大约为15-20秒。

您有什么建议可以加快Android Studio上本机代码(C/C++)的编译过程吗?

+0

尝试分离ndkBuild步骤,如http://ph0b.com/android-studio-gradle-and-ndk-integration/ –

+0

@AlexCohn中所述,将作业从Android Studio中移出。对于不处理本机文件但使用某些本机库的Java应用程序来说,它可能是一个选项。我的应用程序是纯粹的本机应用程序我正在寻找gradle-experimental构建系统内的解决方案。 – Rancs

+1

一个技巧可能是限制Android Studio构建的ABI –

回答

1

如果你正在构建在Linux上我有一劈为你加快NDK编译:

cd <ndk-bundle-path> 
mv ndk-build ndk-build2 

现在创建一个名为shell脚本“NDK建造”包含以下内容:

#!/bin/sh 
$(dirname $0)/ndk-build2 -j 8 [email protected] 

现在设置了新的脚本执行权限:

chmod 775 ndk-build 

现在,谁推出NDK建造(以包括gradle/android studio)将会强制同时在8个核心上轰出目标文件。 8核心只是一个例子。您必须将其设置为您可用的核心数量。如果将其设置得太高而不是可用内核的数量,则通常会失去性能。如果CPU具有超线程,则可以使核心数量加倍。

我相信有一个等效的方式,使用批处理脚本或类似的东西,但我没有Windows机器可用atm。

+0

为什么** 8 **核心?这是一个不变的? –

+0

这只是因为我有4个超线程核心。你应该把它设置为你所拥有的。如果将其设置为高于物理内核的数量(如果超线程为双倍),则通常会失去性能。 – bofjas