27

複数の異なるAndroidアプリケーションで使用するログイン画面の作成に取り組んでいます。他の人がアプリで私のログイン機能を使用できるようにパッケージ化する最良の方法は何でしょうか. 変更を加える場合に備えて、それらを自動同期することをお勧めします。***編集**** ライブラリモジュールにパッケージ化するのが最良の選択肢のようです。このモジュールをアップロードして、このモジュールを更新すると、たとえば github からプルすることなくシームレスに更新されるようにするにはどうすればよいですか。

ありがとう!

4

5 に答える 5

5

関連するクラスをライブラリ モジュールにします (その方法は既にご存知のようです)。次に、Gradle Bintray プラグインを使用してJCenterにアップロードします。

build.gradlecom.ryan-newsom1.0に設定groupし、プロジェクト名がandroid-log-in-screen であるとしますversion

(の一部) android-log-in-screen/build.gradle :

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:0.6"
    }
}

apply plugin: 'com.jfrog.bintray'

group = 'com.ryan-newsom'
version = '1.0'

bintray {
    // Omitted for brevity, refer to the examples on GitHub.
}

あなた (または他の人) は、以下を追加することで、プロジェクトでそれを使用できます。

(の一部) other-project/build.gradle :

repositories {
    jcenter()
}

dependencies {
    compile "com.ryan-newsom:android-log-in-screen:1.0"
}

ライブラリは JCenter から取得され、クラスパスに追加されます。

于 2015-07-07T11:25:57.957 に答える
3

ライブラリを AAR 形式にパッケージ化できます。また、ログイン モジュールで使用したリソースも含まれます。その後、AAR ライブラリ形式を bintray にプッシュできます (これは無料で、独自のリポジトリをセットアップできます)。

共同作業者は、次のような依存関係を使用してライブラリにアクセスできます。

「com.newsom:awesome-login-screen:0.5」をコンパイルします

AndroidStudio/Gradle を使用していて、bintray にプッシュしたい場合は、このスターター チュートリアルを確認してください。https://github.com/jimcoven/android-bintray-kit

于 2015-07-07T17:18:16.107 に答える
2

ライブラリを作成して他の開発者が利用できるようにする最善の方法は、AAR を作成して、開発者が依存関係を使用してプロジェクトにインポートできるようにすることです。

プロセスはかなり長いです。ライブラリを公開するために従うべき主な手順は次のとおりです。

  • アカウントを登録し、新しいチケットを作成します ( https://issues.sonatype.org )
  • ダウンロード (OS X を使用している場合) GPGTools ( http://www.gpgtools.org/ )
  • プロジェクトの gradle ファイルを変更する
  • 署名鍵ビルドの作成
  • ファイルに署名してステージング リポジトリに公開する

私はそれについて投稿を書きました。詳細については、こちらを参照してください。これは、maven_push.gradle と呼ばれる gradle ファイルの一部です。

apply plugin: 'maven'
apply plugin: 'signing'

def sonatypeRepositoryUrl
if (isReleaseBuild()) {
    println 'RELEASE BUILD
    sonatypeRepositoryUrl = hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
            : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
} else {
    println 'SNAPSHOT BUILD'
    sonatypeRepositoryUrl = hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
            : "https://oss.sonatype.org/content/repositories/snapshots/"

}

def getRepositoryUsername() {
    return hasProperty('nexusUsername') ? nexusUsername : ""
}

def getRepositoryPassword() {
    return hasProperty('nexusPassword') ? nexusPassword : ""
}

afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

                pom.artifactId = POM_ARTIFACT_ID

                repository(url: sonatypeRepositoryUrl) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }

                pom.project {
                    name POM_NAME
                    packaging POM_PACKAGING
                    description POM_DESCRIPTION
                    url POM_URL

                    scm {
                        url POM_SCM_URL
                        connection POM_SCM_CONNECTION
                        developerConnection POM_SCM_DEV_CONNECTION
                    }

                    licenses {
                        license {
                            name POM_LICENCE_NAME
                            url POM_LICENCE_URL
                            distribution POM_LICENCE_DIST
                        }
                    }

                    developers {
                        developer {
                            id POM_DEVELOPER_ID
                            name POM_DEVELOPER_NAME
                        }
                    }
                }
            }
        }
    }

    signing {
        required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
        sign configurations.archives
    }

    task androidJavadocs(type: Javadoc) {
        source = android.sourceSets.main.allJava
        classpath += project.files(android.plugin.getRuntimeJarList().join(File.pathSeparator))
    }

    task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
        classifier = 'javadoc'
        //basename = artifact_id
        from androidJavadocs.destinationDir
    }

    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        //basename = artifact_id
        from android.sourceSets.main.allSource
    }

    artifacts {
        //archives packageReleaseJar
        archives androidSourcesJar
        archives androidJavadocsJar
    }
}

gradle.properties は次のとおりです。

VERSION_NAME= 
VERSION_CODE=1
GROUP=
POM_DESCRIPTION=
POM_URL=
POM_SCM_URL= POM_SCM_CONNECTION=
POM_SCM_DEV_CONNECTION=scm:git@github.com:
POM_LICENCE_NAME=The Apache Software License, Version 2.0 POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_LICENCE_DIST=repo 
POM_DEVELOPER_ID=
POM_DEVELOPER_NAME=

別の方法がありますが、私は試していませんが、簡単なようです。jitpackを見てください。

お役に立てば幸いです。

于 2015-07-08T07:26:00.080 に答える
1

ソースに応じてパッケージまたはjarを作成し、gitハブに投稿して、IDEからgitを参照して更新をインポートまたは確認できます。

于 2015-06-09T20:00:25.533 に答える