Githubパッケージを使用したAndroidライブラリの公開


Githubは2019年11月にGithubパッケージをリリースしました.これで、サードパーティサービスを購読することなく、さまざまな種類のパッケージやライブラリ、すなわちMaven、NPM、Ruby Gems、Dockerなどを公開することができます.
本稿では、AndroidライブラリやMavenパッケージ、すなわちjar、aarなどをGithubパッケージに公開する方法について説明します.
例プロジェクトを見ることができますhere .
これらの簡単な手順ですべてのことを学びます.
  • セットアップ資格
  • Androidライブラリを発行
  • 別のプロジェクトでライブラリを使用します
  • 詳しく説明しましょう

    セットアップ資格
    Githubに任意のパッケージを公開するには、githubユーザ名とgithubトークンが必要です.usernameは既に持っている問題ではありません.ここでGithubトークンを作成する必要があります.
    新しいトークンを作成するには、Githubアカウントの右上にあるプロフィール画像をクリックして開きます.それから行きなさい.Developer settings ➡ Personal access tokens ➡ Generate new token .
    次のパーミッションを確認してください.
    read:packages
    write:packages
    repo
    
    このトークンはGithubで再び見ることができません.それで、トークンをコピーして、あなたのシステムまたは安全な場所のどこかにそれを保存してください.コピーを保存しない場合は、新しいものを生成できます.

    Androidライブラリを発行
    資格情報が準備できたら、モジュールレベルのgradleファイルにコードを追加するときです.
    オープンモジュールまたはライブラリのbuild.gradle ファイルを次のプラグインを適用します
    apply plugin: 'maven-publish'
    
    現在、ライブラリに関連する情報を返すメソッドを定義する時が来ました.以下にこれらのメソッドを示します:
    // Place the version of your library here
    def getVersionName = { ->
        return "0.0.1"
    }
    
    // Add the name of your library here
    def getArtifactId = { ->
        return "analytics-sdk"
    }
    
    // Add the group ID of your library here
    def getGroupId = { ->
        return "com.otb"
    }
    
    // Prepare URL of maven package.
    // Replace 'mohitrajput987' with your github repo's username or organization name.
    // Replace 'analytics-sdk-android' with the name of github repo
    def getGitHubUrl = { ->
        return "https://maven.pkg.github.com/mohitrajput987/analytics-sdk-android"
    }
    
    コンプリートbuild.gradle ライブラリモジュールのファイルは次のようになります.
    apply plugin: 'java-library'
    apply plugin: 'kotlin'
    apply plugin: 'maven-publish'
    
    def getVersionName = { ->
        return "0.0.1"
    }
    
    def getArtifactId = { ->
        return "analytics-sdk"
    }
    
    def getGroupId = { ->
        return "com.otb"
    }
    
    def getGitHubUrl = { ->
        return "https://maven.pkg.github.com/mohitrajput987/analytics-sdk-android"
    }
    
    publishing {
        publications {
            bar(MavenPublication) {
                groupId getGroupId()
                artifactId getArtifactId()
                version getVersionName()
                // Place the path of your artifact here
                artifact("$buildDir/libs/${getArtifactId()}.jar")
            }
        }
        repositories {
            maven {
                name = "GitHubPackages"
    
                url = uri(getGitHubUrl())
                credentials {
                    username = System.getenv("GITHUB_USER_NAME")
                    password = System.getenv("GITHUB_TOKEN")
                }
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    }
    
    Githubのユーザ名とパスワードを環境変数に保存し、以下のようにします.
    username = System.getenv("GITHUB_USER_NAME")
    password = System.getenv("GITHUB_TOKEN")
    
    からアクセスできますlocal.properties ファイルも.
    現在Gradleを同期し、新しいGradleタスクが表示されますpublish .
    新しいアーティファクトを作成し、Githubパッケージにアップロードする時です.
    新しいビルドを作成するには、次のコマンドを実行します.
    ./gradlew analytics-sdk:assemble
    
    これはJARファイルを作成します.Githubパッケージにこれを公開するには、次のコマンドを実行します.
    ./gradlew analytics-sdk:publish
    
    置換analytics-sdk モジュールのプロジェクト名を指定します.
    これらの2つのコマンドを実行した後、私たちのパッケージが正常に公開されます.そのパッケージを見ることができますGitHub Packages .
    このプロジェクトの完全なコードも、このパブリックリポジトリに表示できます.
    Analytics GitHub Repository

    別のプロジェクトでライブラリを使用します
    我々は、ライブラリを正常にgithubパッケージを公開している.このライブラリを別のプロジェクトで使用するには、次のGradle依存をappレベルのgradleファイルに追加します.
    implementation "com.otb:analytics-sdk:0.0.1"
    
    publicかprivateなリポジトリであるかどうか、ユーザはルートレベルのgradleファイルにパッケージURLと資格情報を追加しなければなりません.
    repositories {
       maven {
           url = "https://maven.pkg.github.com/mohitrajput987/analytics-sdk"
           credentials {
               username = GITHUB_USER
               password = GITHUB_TOKEN
           }
       }
    }
    
    ユーザのgithubトークンにはrepo and read package 許可.
    私は、これらの資格情報を加えることがオープンソースプロジェクトのために苦痛であるということを知っています、しかし、それは現在義務的です.Githubが中央リポジトリでこれらのライブラリをホストすることを望みます.
    はい、それです!

    結論
    当社のライブラリGithubパッケージで公開されており、あなたのプロジェクトで使用することができます.このライブラリをチェックしますかGitHub あなたがAnalytics、MixPanel、Google Analyticsをあなたのプロジェクトに統合しているならば、それはあなたの人生を簡単にします.
    Githubのパッケージは、既にGithub生態系を使用している場合に便利です.AndroidとJavaのライブラリを簡単にインストールできます.