Android Studio从svn上导入Eclipse项目


应用场景 现在大多数公司都是在svn上面存放项目 而且不少公司都是用Eclipse来开发的 所以目录结构有所不同

如果不熟悉想熟悉gradle的推荐“gradle插件用户指引中文版”

下文的android studio 用AS代替
如果你现在是1.0版本的AS 可以忽略本博客,因为1.0版本的导入后直接会拷贝成AS格式的Proect 但是密钥读取这快还是可以参考下

首先 New一个Project

  • 这里普及一下 android Studio里的Project类似于Eclipse里的 workspace 里面的moudle类似Eclipse里的Project

Project里面的build.gradle文件主要是定义了repositories 和 gradle的dependencies 可以大致看下

  • 然后 VCS——CheckOut Form Verson Control SVN
    Subversion 然后输入SVN地址 选择项目
    然后 选择Checkout然后选择呢自己的Project下面 然后选择Upgrade
    Automtically
  • 然后选择gradle构建 里面会为每个svn上的 project生成 .iml文件
    这个文件主要是为了对module的描述 未深究过 例如导入的项目名字为app,就会生成一个app.iml同时会为app生成一个build.gradle

这时候 你需要在AS的Project里面的bulid的settings.gradle里面 include你的moudle 例如:include ‘:app’(lib也要添加)

重点来了 重点是你需要在自己app下面的build.gradle里面定义你的sourceSets

因为 gradle遵循约定优于配置的原则 默认的目录结构跟maven类似 所以你要配置成适用的结构
如:

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']
    }
}

同时里面的
dependencies需要添加如下配置

compile fileTree(include: '*.jar',dir: 'libs')

#####记得jar和libs的顺序 不要反了 否则会出问题

如果有其引用的lib,除了在project的setting里面引用,也需要在这里添加

compile project(':applib')

签名配置如下

signingConfigs {
   coyoteConfig{
        storeFile file("秘钥文件")
        storePassword "秘钥密码"
        keyAlias "别名"
        keyPassword "别名密码"
    }
}

如果想动态使用密码可以这样从控制台读取 这是从Stackoverflow上面学到的

signingConfigs {
release {
    storeFile file(System.console().readLine("\n\$ Enter keystore path: "))
    storePassword System.console().readPassword("\n\$ Enter keystore password: ")
    keyAlias System.console().readLine("\n\$ Enter key alias: ")
    keyPassword System.console().readPassword("\n\$ Enter key password: ")
}

}

或者从环境变量中读取

signingConfigs {
release {
    storeFile file(System.console().readLine("\n\$ Enter keystore path: "))
    storePassword System.console().readPassword("\n\$ Enter keystore password: ")
    keyAlias System.console().readLine("\n\$ Enter key alias: ")
    keyPassword System.console().readPassword("\n\$ Enter key password: ")
}

}

构建配置里面如下

//构建配置
buildTypes{
    release {
        //使用签名配置
        signingConfig  signingConfigs.coyoteConfig
      //  shrinkResources true
        minifyEnabled true
        proguardFile 'proguard-project.txt'
    }
}

这里的minifyEnabled为true说明使用混淆文件proguard-project.txt

这里要注意的是proguard-project.txt里面的配置 因为ant的个gradle的有些区别
所以被坑过

如果你有annotation 必须要使用

-keepattributes *Annotation* 

例外了 否则会出错

也要使用

-keep public class * extends android.support.v4.**

来保持fragment的使用

同时 由于上面gradle配置文件使用了 compile fileTree
所以 不用使用libraryjars来例外jar包

android的主project使用

apply plugin: 'com.android.application'

lib项目使用

apply plugin: 'com.android.library'

其余的基本无差