今天尝试把已经做好的项目迁移到studio中,目的就是想让原本是eclipse下边的目录结构转换成跟studio下边的目录结构。因为通过网上的那种方式(在eclipse中右键工程目录Export)如下图:
虽然可以生成对应的build.gradle。但是即使生成之后,进入AndroidStudio之后还需要对gradle进行相应的更改,对于不熟悉gradle的人比较麻烦。而且很可能改不好,也改不到跟Studio自己生成的项目一摸一样的体系架构。
这里是之前的项目截图
这些东西都需要拷贝
所以最简单的方式就是现在重新在AndroidStudio里面新建项目。主要项目名称,以及包名要对应之前的项目。因为之前项目有两个引用库,注意新建project之后应该先new module app。
建立完之后,这个最初始的项目架构当然是最标准的studio下面的架构。然后关掉Studio,开始粘贴。
然后把主要的东西粘贴到里面。
把eclipse中的项目下src目录下com文件夹内容整个拷贝到studioworkspace中project下module里面src下边的main下边的java文件夹里面。包括两个library都要这么拷贝。然后是res目录整个覆盖,然后是manifest文件。libs文件夹也要进行相应的拷贝。
这里需要注意的是有可能有重复的jar文件,比如support-v4,而且eclipse不会自动去sdk(sdk里面有整套的support包)里面读取相应的support,只能粘贴到目录libs文件夹下。并且eclipse中即使主工程跟引用工程用的同一个support包,eclipse不会自动认为它们是同一个,必须每个library自己都有一个。它也studio就不一样了,gradle自动构建,对一个supportv4包引用一下就好了,它会去sdk里面找的。
还有说明文档readme.txt以及keystore文件。注意,我这里主工程下面还有so库。
粘贴完之后,重启AndroidStudio,这个时候需要更改build.gradle。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
这里的dependencies是指的studio自带的gradle插件的版本,这里是1.1.3。
project下边的gradle文件,jcenter表示从jcenter这个网站获取第三方版本库,没有的话gradle会自动更新到对应的版本。
有名气的第三方库都会从github同步到jcenter,并且会给用户一个写法:比如:compile 'dev.dworks.libs:volleyplus:0.1.2'
下边是app这个module下边的代码
apply plugin: 'com.android.application'
apply plugin: 'maven'
apply plugin: 'findbugs'
apply plugin: 'checkstyle'
android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig {
applicationId "包名"
minSdkVersion 8
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.orhanobut:logger:1.4'//日志工具
compile 'dev.dworks.libs:volleyplus:0.1.2'//网络数据请求框架,提供了volley的许多实现,保留了volley的高度可配置特性
compile 'com.android.support:multidex:1.0.1'//对dex文件的优化,解决方法数过多产生的问题
compile 'com.android.support:appcompat-v7:22.0.0'//提供了UI版本兼容
compile 'com.android.support:support-v4:22.0.0'//提供了功能版本兼容
compile 'de.greenrobot:greendao:1.3.4'//ORM框架核心
compile 'com.google.code.gson:gson:2.3.1'//json数据解析
compile 'com.android.support:recyclerview-v7:22.0.0'//AbsListView的替代方案
compile 'com.android.support:cardview-v7:22.0.0'//卡片视图
compile 'com.android.support:palette-v7:22.0.0'//色彩分析
compile 'com.android.support:gridlayout-v7:22.0.0'//矩阵布局
//https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh/blob/master/README-cn.md
compile 'in.srain.cube:ultra-ptr:1.0.8@aar'//下拉刷新
//compile 'cn.trinea.android.common:trinea-android-common:4.2.15'
compile 'com.levelupstudio:expandable-recyclerview:1.0.1'//可扩展recyclerview
}
android 里面的versioncode配置了以后manifest就不用配置了,以这里为准。
其中sourceSets里面main里面的的 jniLibs.srcDirs = ['libs'] 主要是为了libs文件夹下面的so文件。不然不会加载。
dependencies里面的compile fileTree(dir: 'libs', include: ['*.jar'])表示编译libs文件夹下的所有的jar文件。
当然如果jcenter里面有对应的repository,可以写在dependencies里面,这样gradle会下载到本地的库,用的时候引用一下就好了。