背景
有些工程是从eclipse迁移过来的,目录结构发生了改变,属于非标准工程,
有些工程是直接通过studio创建的,属于标准工程,
两种工程的目录结构是不一样的,只有熟悉两种工程的目录结构才可以实现互转
名词解释
标准工程:通过studio创建的工程
非标准工程:从eclipse迁移过来的工程
标准工程和非标准工程build.gradl以及目录的区别
标准工程:
整体工程有一个build.gradle
每个module有一个属于自己的build.grradle
整体工程的build.gradle示例:
module的build.gradle示例:
标准工程的module的目录结构示例:
非标准工程
把主module和整体的工程的build.gradle合并,同时改变主工程的目录结构
在android{} 大括号里面加入:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
即去掉标准工程的module目录,将AndroidManifest.xml ,src ,res ,assets,libs放在工程根目录下面
非标准工程向标准工程迁移
建议在外部操作,完成之后再import到studio中。
1.仿照标准工程建一个目录结构
将AndroidManifest.xml ,src ,res ,assets,libs按照目录结构放入相应位置
2.拆分build.gradle
将主module的build.gradle拆分为两个,一个放在工程根目录,代码如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
module的根目录创建一个build.gradle,将除去上面代码的剩余代码放进来,
在settings.gradle里面加入 include ':jymapp',冒号后面的直接写你的文件夹的名称即可。
检查没有问题就可以import到studio跑工程了。
有了上面的经验,标准工程转成非标准工程想必就不用再说明了,有兴趣的可以试验一下。