빠르게 Jcenter (Java 또는 코 틀린)에 안드로이드 프로젝트를 공유

배경

당신이 유틸리티 클래스를 작성하는 경우 개발 과정은, 일반적으로 다른 프로젝트에 사용하는 lib 디렉토리를 얻을 수있을 것입니다, 사용되는 다른 항목을주고 싶다 :

해방 후 전화에서 관련 프로젝트에 도입 :

문제

해당 프로젝트를 사용하려면 우리는 공통의 lib 디렉토리 안에 있지 않은 경우? 그런 그들이 사용할 수 없습니다하지,하지만 쉬운 일이 아닙니다, 각각의 장소에 다시 허세 작동해야 각 변경하는 경우, 유지하고, 수정하고, 되더라도 파일을 복사, 길을 포장 항아리와 같은 이전의 옛날 방식에 따르면, 리소스 파일 더욱 문제가있는 경우 그것은 타사 오픈 소스 라이브러리와 동일 할 수 없습니다 : 수정을 완료 할 수있는 장소, 코드의 로컬 라인에 대한 참조가 해결 될 수 있는가?

이 같이 :
implementation "io.reactivex.rxjava2:rxjava:2.x.y"
复制代码

물론, 일부 프로그램, 인터넷은 간소화하고 내 옆에 조금 정리, 오늘 우리에게 빠른 게시하고 자신의 코드, 구덩이 및 우회에 작은 단계를 공유 촉진하는 단계 템플릿을 제공하기 위해 많은 준비가 만든 솔루션이 있습니다.

Jcenter에 자바 코드를 업로드

주요 단계 (프록시에서 권장하는 전체를 완료하기 위해, 또는 느리거나 실패 할 것이다, 프레임 부분은 중요한 항목입니다) :
  • 가입 JFrog Bintray 계정을

오른쪽 여기에 계정 등록을 열려면 참고 녹색 버튼의 왼쪽에 등록하고, 뒷면은 매우 귀찮은 것입니다하지 않도록주의해야한다.

  • 성공적으로 등록 후 프로필에 API 키를 기억 업로드 사용하는 것입니다 :
  • 우리가 관리되는 코드를 어디에서 새로운 창고를 만들고, 창고입니다

2.

  • 단지 창고 (Respository) 패키지 (Packge)에서 생성 계속, 예를 들어, 지금이 패키지에 전달 된 코드 내부에 도구를 투사 할 준비가, 내가 만든 :
    자식 버전 관리 링크의 끝에서 작성하려고, 또는 쉽게 실패를 감사합니다

지금까지, 내 ​​준비는 기본적으로 장소에 배치 된 몇 가지 핵심 메시지를 보면 :

  1. 창고 이름 ​​: TestRepository
  2. 패키지 이름 : MyTools
  3. 사용자 이름 : soulqw (자신에 의해 대체 될 것이다)
  4. API 키 : XXXXXXXX는 (자신에 의해 대체 될 것이다)
  • 우리의 프로젝트에 반환하는 몇 가지 템플릿 설정을 할 수
  1. 우리의 프로젝트를 Gradle을 루트에 다음과 같은 구성 파일을 추가합니다 :
  dependencies {
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
    }
复制代码
  1. 우리는 디렉토리에 다시 전달해야, 그 다음과 같이 우리의 도구 디렉토리, 그 Gradle을 파일에 추가하는 곳이다 :
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

def siteUrl = 'https://www.google.com/' //可选 如果有的话

def gitUrl = 'https://www.google.com/' //可选 如果有的话

group = "com.share"  //路径
version = "0.0.2.release" //版本名称, 不要用beta,否则容易审核不通过
//以上两个配合项目目录名最终上传上去引用就是   compile 'com.share:tools:0.0.2.release'

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

task copyDoc(type: Copy) {
    from "${buildDir}/docs/"
    into "docs"
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                name 'is permission tool for android'
                url siteUrl
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id 'soulqw' //用户名
                        name 'qinwei' //姓名
                        email '[email protected]' //邮箱
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {
    //关键信息我们从localProperties文件中读取
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    configurations = ['archives']
    pkg {
        repo = "TestRepository" // 仓库名
        name = "MyTools"// 包名
        desc = 'just tools'
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

javadoc {
    options {
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
    }
}
复制代码

우리는 다음과 같은 규칙이있는 프로젝트 그룹, 버전, 최종 프로젝트 디렉토리 병합 스타일을 통과해야 위의 버전 번호를 입력합니다 :

마지막으로, 우리는 localProperties 파일의 이름과 apiKey에를 입력 한 후 :
위의 단계를 완료 한 후, 터미널 프로젝트 디렉토리를 입력 열립니다

./gradlew install bintrayUpload

复制代码

그런 다음 다음과 같이 성공은 다음과 같습니다

우리는 도서관에서 모습을 통과

그래서 우리의 궁극적 인 기준은 다음과 같습니다

dependencies {
//    implementation project(':tools')
    implementation 'com.share:tools:0.0.2.release'
}


复制代码

참고 :

  • 글로벌 프록시에서 업로드 프로세스를 완료해야합니다
  • 성공적인 버전까지 통과 된 후 변경 될 필요가있는 경우, 우리는 이름의 수정 된 버전을 다시 업로드하는 코드를 재 - 수정, 변경할 수 없습니다 등 0.0.2.release로, (거부 검토 할 realease 또는 버전 번호, 또는 쉽게 사용하려고 )
  • 이제 나중에 참조를 전달하고 감사의 채택 이후, Jcenter에 추가가 필요하지 않습니다 수

설명을 사용할 승인을 위해 하루 이틀에 잘 보통 몇 시간을 기입 해 봅니다. 감사가 거부되면, 당신을 거부하는 이유, 당신은 다시 검사 할 수 있습니다 다시 자신의 요청을 수정하고 메시지에 회신 설명한다 :

승인되면, 이후의 반복 한 같은 이름의 수정 된 버전을 다시 검토 할 필요가 없습니다

  • lib 디렉토리에 의존 프로젝트는 안드로이드 지원 라이브러리와 같은 라이브러리를 소유하는 경우
dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'
}
复制代码

응용 프로그램에 대한 프로젝트는이 라이브러리를 사용하지만, 편집 인해 일치하지 않는 버전 번호 및 오류에 쉽게 때 응용 프로그램이이 LIB를 도입 그래야 각, 불일치의 버전 번호에 따라, 올바른 자세는 해당 라이브러리에 LIB 의존성을 말을하는 것입니다 구현에 compileOnly 또는에서 제공하는 컴파일

dependencies {
    //这样引用容易引发冲突,改为compileOnly 仅仅lib内可用
//    implementation 'com.android.support:appcompat-v7:28.0.0'
    compileOnly 'com.android.support:appcompat-v7:28.0.0'
}

复制代码

다음은 과거와 현재 구성에서 여러 Gradle을 변화의 테이블 :

새로운 구성 이전 구성 행동
이행 엮다 모듈에 대한 종속성이 컴파일시에 가능하며 런타임 모듈 소비자 만 사용할 수 있습니다. 대신 시스템을 구축하는 프로젝트의 양을 줄일 수 있기 때문에 크게, 빌드 시간을 줄일 수 있습니다 API / 컴파일을 사용하는 대형 멀티 - 프로젝트 구현의 건설을 위해 재 컴파일 할 필요가있다. 대부분의 응용 프로그램과 테스트 모듈이 구성을 사용해야합니다.
API 엮다 모듈에 대한 종속성은 소비자에게 제공하고 컴파일시에 모듈 컴파일 타임 및 런타임에 사용할 수 있습니다. 이 구성은 행동 컴파일 (현재 사용되지 않음), 정상적인 상황에서, 당신은 단지 라이브러리 모듈에서 사용한다 유사하다. 당신은 각각의 테스트 모듈에 자사의 API를 열고 자하지 않는 응용 프로그램 모듈은 구현을 사용해야합니다.
compileOnly 제공 모듈 종속성은 컴파일시에 사용할 수 있으며, 그 소비자는 컴파일 또는 실행시에 사용할 수 없습니다. 이 문제는 제공하는 구성 (현재 사용되지 않음)과 유사하다.
runtimeOnly APK 모듈 및 종속성은 런타임에 소비자에게 사용할 수 있습니다. 이 구성은 APK처럼 동작 (현재는 사용되지 않음).
소개 :

나중에 프로젝트의 개발, 우리의 프로젝트는 천천히 코 틀린로 이동하고, 나중에 코 틀린에 클래스의 도구로 나타나

업데이트 방법,

++ 버전,

업로드,

그런 다음. . .

기본적으로, 관련 정보에 액세스하여 원래 코 틀린 파일의 javadoc 생성 오류가 너무 같은 Gradle을 일부 구성 파일을 추가합니다 :

코 틀린 코드를 업로드 지원

  • 돌아 가기로 프로젝트 수준의 Gradle을 파일 :
  classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.18"
复制代码

그런 다음 전체 파일은 다음과 같이해야합니다 :

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.10'
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
        //upload
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
        //kotlin
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        //for kotlin upload
        classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.18"

    }
}

allprojects {
    repositories {
        google()
        jcenter()
        
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

复制代码

돌아 가기 Gradle을 파일의 우리의 도구, 구성 :

//for kotlin upload
apply plugin: 'org.jetbrains.dokka'
//同时添加三个方法 for kotlin
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
    outputFormat = 'javadoc'
    outputDirectory = javadoc.destinationDir
}
task generateJavadoc(type: Jar, dependsOn: dokkaJavadoc) {
    group = 'jar'
    classifier = 'javadoc'
    from javadoc.destinationDir
}
task generateSourcesJar(type: Jar) {
    group = 'jar'
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

复制代码

아티팩트로 대체됩니다 :

artifacts {
    archives generateJavadoc //javadocJar
    archives generateSourcesJar //sourcesJar
}

复制代码

그리고 이렇게 최종 템플릿은 코 틀린 자바가 아래로 업로드 업로드 할 수 있습니다 :

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
//for upload
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
//for kotlin upload
apply plugin: 'org.jetbrains.dokka'

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 28
        versionCode 2
        versionName "0.0.3"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    //这样引用容易引发冲突,改为compileOnly 仅仅lib内可用
//    implementation 'com.android.support:appcompat-v7:28.0.0'
    compileOnly 'com.android.support:appcompat-v7:28.0.0'
    compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

def siteUrl = 'https://www.google.com/' //可选 如果有的话
def gitUrl = 'https://www.google.com/' //可选 如果有的话

group = "com.share"  //路径
version = "0.0.3.release" //版本名称, 不要用beta,否则容易审核不通过
//以上两个配合项目目录名最终上传上去引用就是   compile 'com.share:tools:0.0.2.release'

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
//同时添加三个方法 for kotlin
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
    outputFormat = 'javadoc'
    outputDirectory = javadoc.destinationDir
}
task generateJavadoc(type: Jar, dependsOn: dokkaJavadoc) {
    group = 'jar'
    classifier = 'javadoc'
    from javadoc.destinationDir
}
task generateSourcesJar(type: Jar) {
    group = 'jar'
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task copyDoc(type: Copy) {
    from "${buildDir}/docs/"
    into "docs"
}

//for java only
//artifacts {
//    archives javadocJar
//    archives sourcesJar
//}
//for kotlin
artifacts {
    archives generateJavadoc //javadocJar
    archives generateSourcesJar //sourcesJar
}


install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                name 'is permission tool for android'
                url siteUrl
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id 'soulqw' //用户名
                        name 'qinwei' //姓名
                        email '[email protected]' //邮箱
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {
    //关键信息我们从localProperties文件中读取
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    configurations = ['archives']
    pkg {
        repo = "TestRepository" // 仓库名
        name = "MyTools"// 包名
        desc = 'just tools'
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

javadoc {
    options {
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
    }
}

复制代码

그 다음에 업로드 명령을 입력 :

개요

위의 방법에 의하면, 일반적으로 통해 액세스 할 수있는 업로드 문제가 없을 것, 기본적으로 완료

데모 템플릿 및 주소

마지막으로, 구성 파일 localproperties에 주목

HTTPS : //juejin.im/post/5cf8dc44e51d454f6f16eb9e 재현

추천

출처blog.csdn.net/weixin_33896069/article/details/91434839