关于自己写的aar包发布到maven过程中的一些问题解决

很多开发者都想自己写一套好用的框架,发布出去给别人引用,自从android studio问世以来,不断的改进,关于引用他人的成果非常方便简单了,用过android studio的用户都知道,在build.gradle中引用只需添加一句代码:
 compile 'com.android.support:appcompat-v7:24.1.1'
 是不是非常简单?比以往的下载jar包,拷贝到项目是不是简单多了?那么,我写好了一套非常好用的代码,我也想分享出去给别人用,让别人也能在build.gradle按照上面的类型添加一句代码,就可以直接使用,我该怎么做呢?具体怎么做,可以参考这篇博客,是他教会了我的。
[博客](http://blog.csdn.net/lmj623565791/article/details/51148825)
根据这篇博客,我就马上跟着hongyang大神操作。
(1)注册bintray.com账号,获取api key.(可参考上面的hongyang博客)
 (2)引入bintray-release

在第2步的过程中,遇到了一些小麻烦,我先把对应代码贴下
1.在项目的build.gradle文件中添加bintray-release的classpath
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        //添加的classpath
        classpath 'com.novoda:bintray-release:0.3.4'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
2.在要给他人引用的module下的build.gradle下添加如下代码:
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'//添加
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
}
//添加
publish {
    userOrg = 'huangxuanheng'//bintray.com用户名
    groupId = 'com.example.fragmentstack'//jcenter上的路径
    artifactId = 'fragmentstack'//项目名称
    publishVersion = '1.0.0'//版本号
    desc = 'Oh hi, this is a nice description for a project, right?'//描述,不重要
    website = 'https://github.com/huangxuanheng/ishowProject'//网站,不重要;尽量模拟github上的地址,例如我这样的;当然你有地址最好了
}
好了,接下来就是运行下面代码:
gradlew clean build bintrayUpload -PbintrayUser=huangxuanheng -PbintrayKey=xxxxxxxxxxxxxxxxxx  -PdryRun=false

的时候,遇到了一些问题,问题如下:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:lint'.
> Lint found errors in the project; aborting build.

Fix the issues identified by lint, or add the following to your build script to proceed with errors:
...
android {
    lintOptions {
        abortOnError false
    }
}
...

* Try:        
Run with --debug option to get more log output.

我一看,马上copy这句话:

android {
    lintOptions {
        abortOnError false
    }
}

到我的module对应的build.gradle里面,copy过来后的代码如下:

apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'//添加
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    //添加的那段报错代码
    lintOptions {
        abortOnError false
        warning 'InvalidPackage'
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
}
//添加
publish {
    userOrg = 'huangxuanheng'//bintray.com用户名
    groupId = 'com.example.fragmentstack'//jcenter上的路径
    artifactId = 'fragmentstack'//项目名称
    publishVersion = '1.0.0'//版本号
    desc = 'Oh hi, this is a nice description for a project, right?'//描述,不重要
    website = 'https://github.com/hyman/basetools'//网站,不重要;尽量模拟github上的地址,例如我这样的;当然你有地址最好了
}

继续运行gradlew clean build bintrayUpload -PbintrayUser=huangxuanheng -PbintrayKey=xxxxxxxxxxxxxxxxxx -PdryRun=false
还是报那个错误,我非常的纳闷,一步一步的检查,认为自己已经添加进去了,可是无论我怎么运行,总之还是报这个错误,我非常的郁闷与无助,于是,我就开始了百度,经过了九九八十一难,终于找到了一篇比较类似我的文章,不记得那篇文章是哪个大神写的了,但根据他写的内容,关于该问题,我得到了解决。其实是我忽略了一点,我虽然添加了这段代码

 lintOptions {
        abortOnError false
        warning 'InvalidPackage'
    }

到要分享的module对应的build.gradle,但一个项目中还有其他的module,然而其他的module我并没有添加,我以为其他不添加也不会有什么影响,我错了,问题就出在这里。
于是,我在所有的module对应的build.gradle中,都添加了这几行代码:

 lintOptions {
        abortOnError false
        warning 'InvalidPackage'
    }
然后同步项目后运行:
gradlew clean build bintrayUpload -PbintrayUser=huangxuanheng -PbintrayKey=xxxxxxxxxxxxxxxxxx  -PdryRun=false
发现上面的问题解决了,不再报那错误了,但还是出现了新的错误,错误内容大概如下:
Could not create package 'huangxuanheng/maven/fragmentstack': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]
这个错误的大概意思是,在我注册的bintray.com账号里面的maven没有找到
于是我又苦逼的找资料,我[在这](http://blog.csdn.net/small_lee/article/details/52328613)
找到了答案,原来是我注册的bintray.com账号里面,没有建有maven项目,于是就根据[文章](http://blog.csdn.net/small_lee/article/details/52328613)去建我的maven项目,建好了之后,在我的要分享的module对应build.gradle里面,把artifactId修改为我在maven中建的项目,改完后的大致代码如下:
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'//添加
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        abortOnError false
        warning 'InvalidPackage'
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
}
//添加
publish {
    userOrg = 'huangxuanheng'//bintray.com用户名
    groupId = 'com.example.fragmentstack'//jcenter上的路径
    artifactId = 'ishow'//项目名称
    publishVersion = '1.0.0'//版本号
    desc = 'Oh hi, this is a nice description for a project, right?'//描述,不重要
    website = 'https://github.com/huangxuanheng/ishowProject'//网站,不重要;尽量模拟github上的地址,例如我这样的;当然你有地址最好了
}

改好后,继续运行:gradlew clean build bintrayUpload -PbintrayUser=huangxuanheng -PbintrayKey=xxxxxxxxxxxxxxxxxx -PdryRun=false
惊奇的发现,竟然BUILD SUCCESS。于是我马上去我的bintray.com账号里面看,果然成功发布到了maven项目里面
我的这些问题的解决,离不开大神们的贡献,在此,非常感谢一直默默贡献的大神们,谢谢你们

你可能感兴趣的:(android)