把eclipse的android libary库项目融入gradle项目中苦与乐

现在的主流android项目大多是as构建的,我也赶着时代潮流的尾巴,登上了as这辆车,对于ide的强烈的高要求情节,让我找了idea来开发,抱歉没有使用正版,太贵了,是从网上找的破解版,出于学习目的,并没有用于商业开发。

刚换了工作来到一个新公司,之前做的一个sdk是用ant构建的eclipse项目,它是一个库项目,给第三方使用,于是我就想转为gradle构建方法,并写一个子项目来验证sdk的各个功能,于是悲剧的小故事开始上演了。

在as中加入第三方项目的时候,一般的习惯是这样的

通常我们引入jar包使用,非常灵,引入第三方项目的时候通常是这样

<span style="font-size:18px;">compile 'com.android.support:appcompat-v7:24.1.1'</span>

如何引入eclipse版本的library呢,主要是两部要做

  1. 把项目构建为gradle版本
  2. 在test项目中引入library。
先说第一步构建gradle项目,主要是在项目中加入一个gradle文件,例如
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    useLibrary 'org.apache.http.legacy'
    lintOptions {
        abortOnError false
    }
    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
//            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
//        compile 'com.android.support:appcompat-v7:24.1.1'
}
这里需要注意两点jdk的构建版本,如果原项目中使用版本比较低,你贸然使用1.8的版本,会比较悲剧,可能会出现以下问题
我这里使用的1.7,之前项目是1.6的,开始我使用的1.8构建的,出现的问题让我崩溃,后来才知道是jdk版本的问题。
第二个要注意的地方
//            resources.srcDirs = ['src']
这个地方我开始没有注释,结果一直报错,测试的activity.class解析不出来,我看了其他人的项目,没这个问题,可能这个过程我漏了什么。我个人理解是因为资源文件夹重复,在test项目中出现了重复性错误。总之如果出现问题,可是试一试。

接着需要把项目引入test项目,如果用第一图中的方式,会怎么样呢,就是添加module模块的方式,test项目会识别你的代码,不会出现语法错误,可是当build的时候,会告诉你不能识别library项目,不信的朋友自己试一试,保证百试不爽,再重复一遍,不是jar包,我们要引入library项目。那该怎么做呢?在test项目中的gradle文件加入下边这句话

这点还差点,还需要在setting的gradle文件中加入

划去的部分是项目名称,最后需要注意的两个地方
compile project ‘xxxxxx’,别出现这种低级错误
还有就是在之前eclipse的项目的gradle文件的头部是这样的
apply plugin: 'com.android.library'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千面而一言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值