很多时候,studio的IDE并不能满足需求,在以下场景下,我们需要手动修改build.gradle文件来改变配置
为工程添加libs目录下所有JAR依赖
在module settings中为module增加dependence时,有如下选项:
第一项可以添加网络依赖的support jar包,第二项可以增加单个jar的依赖,第三个可以增加module依赖。
libs目录下有成吨的jar,每次添加都要修改配置,万一忘记就不好了。
可以在dependencies节点添加如下内容:
compile fileTree(dir: 'src/main/libs', include: ['*.jar'])
用IDE添加单个JAR依赖后,build.gradle文件增加的对应的内容是“compile file”
增加网络JAR依赖
support-v4等包比较神烦,为了统一管理,可以直接引用。
不过好像直接用IDE也能修改,在dependencies节点下面增加:
compile 'com.android.support:support-v4:19.1.0'
这段也是在depenencies下面,可以和上一段进行合并。。
修改了libs目录
修改了libs目录,也要修改配置,在android节点下增加如下内容:
sourceSets.main {
jniLibs.srcDirs 'src/main/libs'
}
在NDK中引用了一些库
我的工程中使用了android的log以及C++的STL库。
之前是eclipse的工程,在C++代码中包含了:
#include <android/log.h>
而在jni的Application.mk文件中添加了STL库支持:
APP_STL := stlport_static
直接在命令行中NDK-BUILD没有错误,导出到studio之后编译找不到log以及STL。
现在在build.gradle文件的android.defaultConfig节点下加入如下内容:
ndk {
moduleName "aa"
stl "stlport_static"
ldLibs "log"
}
其中aa是我的so库的名字。
最后,我的配置文件粘贴如下供参考:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.sample"
minSdkVersion 14
targetSdkVersion 19
ndk {
moduleName "aa"
stl "stlport_static"
ldLibs "log"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets.main {
jniLibs.srcDirs 'src/main/libs'
}
}
dependencies {
compile 'com.android.support:support-v4:19.1.0'
compile fileTree(dir: 'src/main/libs', include: ['*.jar'])
}
在android stduio编译时不重新编译native代码
这点很关键。每次编译的时候都编译一遍native层的代码,你是不是已经够了,这也是很多人说studio慢的另一个原因(第一个原因参考Gradle Build速度加快终极方法)。
编译时禁用native编译,在sourceSets.main下面加入:
jni.srcDirs = [] //disable automatic ndk-build call