前回自作Viewの作成方法を書きました。

【Android】AttributeSetを使ってXMLだけで自作Viewに値をセットする

今回は作った自作Viewを世に公開する方法と公開した自作Viewを使う方法を紹介します。

みんな大好きGitHubGitHub Pagesを使って公開するので、GitHubのアカウントをお持ちでない方はこれを機にアカウントを作成してください。

簡単に紹介するとGitHub PagesMavenリポジトリとして自作Viewを公開します。

順番としては

  • .aarを生成するモジュールの新規作成
  • .aarファイルの生成
  • デプロイ
  • 公開

という流れで書いていきます。

今回公開する自作Viewは前回記事のCustomViewをまんま使います。

どんなViewかは前回記事をみるか、サンプルを見てください。

【Android】AttributeSetを使ってXMLだけで自作Viewに値をセットする

NinjaAdMax/SampleCustomViewAttr

先に今回参考にさせて頂いたページです。

u1aryzの備忘録とか: githubをMavenリポジトリとしてAndroidライブラリプロジェクト(aar)をデプロイして使用する

とてもお世話になりました。

バージョンの相違があったので、1から書かせて頂きました。

.aarを生成するモジュールの新規作成

まずはAndroidLibraryとして作成するので、新しいModuleもしくはProjectを作成してください。

今回は新しくModuleを作る方法を紹介します。

  • Moduelを新規作成

    ScreenShot30

  • AndroidLibraryを選択する

    ScreenShot31

  • 必要な値を設定

    ScreenShot32

    僕はすでに作ってあるのでModule library already exitsと表示されています。

こんな感じで作ってくれればlibraryというModuleが作成されると思います。

ファイルはこんな感じになるかと

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ tree library/
library/
├── build.gradle
├── library.iml
├── libs
├── proguard-rules.pro
└── src
├── androidTest
│   └── java
│   └── jp
│   └── shinobi
│   └── admax
│   └── android
│   └── library
│   └── circleview
│   └── ApplicationTest.java
└── main
├── AndroidManifest.xml
├── java
│   └── jp
│   └── shinobi
│   └── admax
│   └── android
│   └── library
│   └── circleview
└── res
├── drawable-hdpi
│   └── ic_launcher.png
├── drawable-mdpi
│   └── ic_launcher.png
├── drawable-xhdpi
│   └── ic_launcher.png
├── drawable-xxhdpi
│   └── ic_launcher.png
└── values
└── strings.xml

では色々肉付けしていきます。

.aarファイルの生成

.aarファイルを作成する前に前回作った自作Viewを移動していきます。

クラス名は変わらないので、そのまま移動しました。

またdrawable-**ディレクトリもいらない(今回画像は使わないため)ので削除して最終的にこんな感じになりました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$ tree library/
library/
├── build.gradle
├── library.iml
├── libs
├── proguard-rules.pro
└── src
├── androidTest
│   └── java
│   └── jp
│   └── shinobi
│   └── admax
│   └── android
│   └── library
│   └── circleview
│   └── ApplicationTest.java
└── main
├── AndroidManifest.xml
├── java
│   └── jp
│   └── shinobi
│   └── admax
│   └── android
│   └── library
│   └── circleview
│   ├── CustomView.java
│   └── enums
│   └── CustomViewCirclePosition.java
└── res
└── values
├── attrs.xml
└── strings.xml

build.gradleは以下のようになっています。

library/build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apply plugin: 'com.android.library'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "jp.shinobi.admax.android.library.circleview"
minSdkVersion 9
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}

ではこのModuleを.aarファイルにします。

Terminalを使ってコマンドを入力します。

1
2
3
$ pwd
/Users/${ユーザー名}/workspace/android/SampleAttributeSet
$ ./gradlew library:clean library:assembleDebug

これでlibrary/build/outputs/aar/ディレクトリ以下に.aarファイルが作成されます。

確認してみましょう。

1
2
$ find . -name "*.aar"
./library/build/outputs/aar/library.aar

これで.aarファイルの生成は完了です。

リリースビルドの場合

ちなみにですが、リリースビルドの場合は以下のコマンドを使ってください。

1
$ ./gradlew library:clean library:assembleRelease library:uploadArchives

proguardを使って暗号化などした方がいいので、本番公開する場合は上記のコマンドを使ってください。

デプロイ

.aarファイルも準備出来たので、Mavenリポジトリ用にデプロイします。

build.gradleを編集します。

以下の内容を追加してください。

library/build.gradle
1
2
3
4
5
6
7
8
9
10
11
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository url: "生成先のディレクトリ"
pom.version = "バージョン"
pom.groupId = "グループID"
pom.artifactId = "articactID"
}
}
}

となります。

今回はGitHub Pagesを使うので、Mevanリポジトリ用のディレクトリをつくって、そこのパスを指定しました。

今回のサンプルでは以下のようにしました。

library/build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository url: "file:///Users/${ユーザー名}/workspace/android/AndroidRepositories/repository"
pom.version = "0.0.1"
pom.groupId = "jp.shinobi.admax.android.library.circleview"
pom.artifactId = "custom-view"
}
}
}

workspace/android/AndroidRepositoriesが今回作成したMavenリポジトリ用のディレクトリになります。

これを保存して以下のコマンドを叩きます。

1
2
3
$ ./gradlew library:clean library:assembleRelease library:uploadArchives
:library:uploadArchives
Uploading: jp/shinobi/admax/android/library/circleview/custom-view/0.0.1/custom-view-0.0.1.aar to repository remote at file:///Users/${ユーザー名}/workspace/android/AndroidRepositories/repository

そうするとrepository url:で指定したディレクトリに以下のような感じでMavenリポジトリが生成されていると思います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
AndroidRepositories
└── repository
└── jp
└── shinobi
└── admax
└── android
└── library
└── circleview
└── custom-view
├── 0.0.1
│   ├── custom-view-0.0.1.aar
│   ├── custom-view-0.0.1.aar.md5
│   ├── custom-view-0.0.1.aar.sha1
│   ├── custom-view-0.0.1.pom
│   ├── custom-view-0.0.1.pom.md5
│   └── custom-view-0.0.1.pom.sha1
├── maven-metadata.xml
├── maven-metadata.xml.md5
└── maven-metadata.xml.sha1
9 directories, 9 files

これで作成まで完了しました。

あとはこれを公開します。

公開

上記で作成したMavenリポジトリ用のディレクトリをGitHubに公開します。

GitHub Pagesとして公開するのでブランチはgh-pagesにしてください。

こんな感じになります。

ScreenShot33

では最後に使い方を紹介します。

公開した自作Viewを他のプロジェクトで使う

自作Viewを使うModuleのbuild.gradleに以下を追加します。

build.gradle
1
2
3
4
5
6
7
8
repositories {
maven {
url 'http://${GitHubのアカウント名}.github.io/${repository name}/repository'
}
}
dependencies {
compile '${groupID}:${artifactID}:${version}'
}

これで使えるようになります。

今回僕が作った自作Viewを使う場合は以下のようになります。

build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
apply plugin: 'com.android.application'
repositories {
maven {
url 'http://ninjaadmax.github.io/AndroidRepositories/repository'
}
}
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "jp.shinobi.admax.android.sample"
minSdkVersion 9
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:20.0.0'
compile 'jp.shinobi.admax.android.library.circleview:custom-view:0.0.1'
}

あとはLayoutファイルは作ったときと同じように使えます。

終わりに

サンプルはSampleCustomViewAttr/library at master · NinjaAdMax/SampleCustomViewAttrにあります。

また公開したリポジトリはNinjaAdMax/AndroidRepositoriesです。

これで簡単に自分で作ったViewを世に公開できるようになりました。

ばんばん新しいライブラリを作成して、有名人になりましょう。

以上になります。

参考

u1aryzの備忘録とか: githubをMavenリポジトリとしてAndroidライブラリプロジェクト(aar)をデプロイして使用する