android项目两种构建方式的整合(Eclipse/idea和Android Studio)
来源:互联网 发布:阅读题软件 编辑:程序博客网 时间:2024/05/01 01:48
android的两种构建方式
目前android主要有两种构建方式,一种基于ant(传统的),另一种是13年Google/IO上新推出基于Gralde的构建(Android Studio)。从sdk的samples的例程也可以看到api18后的例程的项目目录结构也变了。
简单的看一下两种构建方式的目录结构,我们以当前最新sdk19为例
传统的ant构建(Eclipse和Idea默认的Android结构)
$ANDROID_HOME/samples/android-19/legacy/ActionBarCompat
res/src/AndroidManifest.xml
这是最简单的结构,可能还会有assets,libs等目录,也就是我们在ide新建一个android项目的骨架结构啦Orz
基于Gradle的Android Studio构建目录
$ANDROID_HOME/samples/android-19/ui/DoneBar
DoneBarSample/ src/ main/ java/ res/ AndroidManifest.xml tests/ src/ AndroidManifest.xml build.gradle # DoneBarSample子项目的gradle构建脚本gradle/ # gradle临时文件夹,不用管build.gradle # 根项目(DoneBar)的gradle构建脚本gradlew # gradle-wrapper在windows平台运行脚本(有了这个在本地可以无需安装Gralde)gradlew.bat # gradle-wrapper在linux,mac平台下的运行脚本(效果同上)settings.gradle # gradle多项目的项目申明文件README.txt
看起来,Gradle好像更搞得更复杂了,但是,gradle的优势在于多项目的构建。实际上,1方案只是一个我们项目核心的源代码而已,没有任何的依赖。通常情况下,当我们写android应用时,会依赖第三方库,如果是个jar还好办,但是不少情况下同时需要引入第三方的资源文件(比如说actionbar-compat,actionbar-sherlock等),这样就相当于把第三方库作为一个项目给引入到我们这个独立的项目中来了(并且这里面的项目之间的依赖还得自己去调控,比如说咱们的项目依赖于support-v4, 那好,我们把v4引入然后在项目中申明依赖关系,接下来咱们的项目依赖support-v7-appcompat,导入这个库,尼玛,这个库不仅有jar,还有资源文件,那好把这两个引入并声明好依赖关系,这时,你会发现项目依旧报错,因为v7那个jar依赖于v4那个jar...)
很讨厌是不是?还好啦,不过配多了你就觉得蛋疼了。所以,就是为什么Gradle比较有优势的地方了。对于以上的问题,我们只需要在项目中的build.gradle
声明
dependencies { compile "com.android.support:support-v4:$supportLibVersion" compile "com.android.support:support-v13:$supportLibVersion" // compile project(':your project') // compile ('libs/*.jar') // all your jar in the libs dir}
这只是最简单的应用,gradle还提供了很多构建的特性,比如直接把第三方库作为一个子项目依赖进来,具体参阅其文档
我们是否应该从ant构建迁移到Androd Studio的Gralde构建?
很明显,Android Studio是google力推的开发工具,是趋势,而且,老实说Eclipse在开发android应用方面不如Android-Studio(idea)好使。但是,Android Studio目前还没有到正式版,还在开发阶段,出个bug你也伤不起Orz
另外,Gradle的构建目前还是很慢,相对与ant的构建,慢了好多,改了一处地方,run,要等不少时间,而我在idea或者eclipse上很快就构建好了
综上,没有解决以上两个问题还是不太推荐android-studio的,不过,倒是挺建议使用eclipse开发android的朋友有使用Intellij IDEA的开源社区版去开发android,事实上,Android Studio就是架在IDEA上的嘛
一种过渡的方式,同时支持两种构建方式
对于现有的项目或者新的项目,以后怎么转移到Android Studio呢,或者说,我就是想试试我这个项目在Android Studio上开发爽不爽?出于Gradle的灵活性,我们完全可以做出一个同时支持两种构建方式的项目。
项目的结构和传统的一样,这样便可以作为android项目直接导入到eclipse或者idea中,核心在于gradle的build.gradle
文件
不做过多介绍,直接上代码,看着改改就可以啦,还有更多的需求的话可以参考这里:
/*
* The MIT License (MIT)
* Copyright (c) 2014 longkai
* The software shall be used for good, not evil.
*/
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath
'com.android.tools.build:gradle:0.6.+'
}
}
// for our non-android-support libs, such as gson, etc.
repositories {
// prefer and fall back
jcenter()
mavenCentral()
}
apply plugin:
'android'
ext {
supportLibVersion =
'19.0.1'
}
android {
compileSdkVersion
19
buildToolsVersion =
'19.0.1'
sourceSets {
defaultConfig {
testPackageName
'tingting.chen.tests'
}
main {
assets.srcDirs = [
'assets'
]
res.srcDirs = [
'res'
]
aidl.srcDirs = [
'src'
]
resources.srcDirs = [
'src'
]
renderscript.srcDirs = [
'src'
]
java.srcDirs = [
'src'
]
manifest.srcFile
'AndroidManifest.xml'
}
instrumentTest {
assets.srcDirs = [
"tests/assets"
]
res.srcDirs = [
"tests/res"
]
resources.srcDirs = [
"tests/src"
]
java.srcDirs = [
"tests/src"
]
}
}
}
dependencies {
// if you use Android Studio with a lib has its own res/ directory,
// and that lib is not available in remote maven repo,
// you need to use gradle' s multi-project build facility.
// if you don' t know how it works, please refer Gradle' s docs or google.
compile files(
"libs/*.jar"
)
compile
"com.android.support:support-v4:$supportLibVersion"
compile
"com.android.support:support-v13:$supportLibVersion"
// please download google android-volley and compile it to a jar or multi-project build!
}
task wrapper(type: Wrapper) {
// 1.9+ is not supported for now!
gradleVersion =
1.8
}
- android项目两种构建方式的整合(Eclipse/idea和Android Studio)
- android项目两种构建方式的整合(Eclipse/idea和Android Studio)
- android项目两种构建方式的整合(Eclipse/idea和Android Studio)
- android studio 迁移 eclipse 和 Intellij Idea 项目的注意事项
- 将Eclipse工程导入Android Studio的两种方式
- Android Studio导入Eclipse项目的两种方法
- Android Studio导入Eclipse项目的两种方法
- eclipse 项目导入 android studio的方式
- Eclipse 项目导入Android Studio的几种方式
- Eclipse 项目导入Android Studio的几种方式
- (4.5.1.1)将Eclipse代码导入到Android Studio的两种方式
- Android Studio 的 两种打包方式
- IDEA 构建 java web项目两种方式
- Git 生成key 和SSH的两种方式(putty 和android studio)
- 将Eclipse代码导入到Android Studio的两种方式
- 将Eclipse代码导入到Android Studio的两种方式
- Android 项目从Eclipse/IDEA 迁移到 Android Studio
- 5.Maven和Eclipse整合(两种方式进行插件的安装),Maven相关设置,Eclipse下创建Maven项目
- 类模板声明与定义为什么不能分离
- git 命令纪要
- AWS Ubuntu下安装LAMP
- 稀疏矩阵A和B,其行数和列数对应相等,编写一个程序,计算A和B之和,假设稀疏矩阵采用三元组表示
- LeetCode: Spiral Matrix
- android项目两种构建方式的整合(Eclipse/idea和Android Studio)
- 解决了Cocoapods Undefined symbols for architecture _OBJC_CLASS_xxxx的问题,辛苦死我了,记录下之后有空在研究
- 在Oracle Linux 6.5上安装Oracle 10gR2 的最佳实践【Maclean版】
- Girl_iOS100天学iOS的第三天(Plist&UIPickerView)
- 输出好看的图形
- 安装mysql 5.5.8 Error Nr.1364 authentication_string
- 输入系统之led灯控制
- NodeJS会是昙花一现吗?
- Fragment之7____在Fragment 不能正常显示时显示Activity