ラベル GitHub の投稿を表示しています。 すべての投稿を表示
ラベル GitHub の投稿を表示しています。 すべての投稿を表示
2014/09/12

[Android]ライブラリプロジェクト(aar)をMavenリポジトリとしてGitHubで配布する

Androider の皆さんこんにちは。
もう Eclipse から Android Studio への移行は済みましたか?
僕はまだ途中です。
俺々ライブラリが移行できないと Android Studio に移行できないので
今回はそのための手順をご紹介したいと思います。

環境

OS
Mac OS X 10.8.5
Android Studio
0.8.9

ライブラリプロジェクト(aar)とは

Android Studio 、というより Android Studio で導入された Gradle というビルドシステムでの
ライブラリプロジェクトの配布用バイナリ形式を aar (Android archive) と呼ぶらしいです。
.aar の拡張子を持つ ZIP ファイルで、以下が入っています。
  • /AndroidManifest.xml (必須)
  • /classes.jar (必須)
  • /res/ (必須)
  • /R.txt (必須)
  • /assets/ (オプション)
  • /libs/*.jar (オプション)
  • /jni//*.so (オプション)
  • /proguard.txt (オプション)
  • /lint.jar (オプション)
参考: AAR Format - Android Tools Project Site

配布編

まずは Android Studio でライブラリプロジェクトを作成します。詳しい方法については割愛。

試しに aar を作成するためリリースビルドするため、
上の画像の Terminal で ./gradlew assembleRelease を実行します。
以下のコマンドで aar が作成されているか確認します。
find . -name '*.aar'
./library/build/outputs/aar/library.aar

問題ないので build.gradle に Maven プラグインを使用して aar やら何やらを生成するタスクを追記します。
以下のハイライト部分です。
(余談だけど build.gradle って説明された時に初めは root の build.gradle なのか
Modules の build.gradle なのかわからなくて戸惑いました。だいたい Modules の方らしい。)
apply plugin: 'com.android.library'

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.0.0'
}

def repo = new File(rootDir, "repository")

apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository url: "file://${repo.absolutePath}"
            pom.version = '1.0.0'
            pom.groupId = 'at.wada811'
            pom.artifactId = 'android-dialog-fragments'
        }
    }
}
pom.version がライブラリのバージョン、
pom.groupIdが自分用の識別子(Java の package 名の最初の部分で良さそう)、
pom.artifactIdがライブラリの識別子、みたいです。
詳しくは 第52章 Mavenプラグイン を読んで下さい。

追記したら Android Studio の Terminal で ./gradlew uploadArchivesすると
repository ディレクトリに aar が生成されます。
tree repository
repository
└── at
    └── wada811
        └── android-dialog-fragments
            ├── 1.0.0
            │   ├── android-dialog-fragments-1.0.0.aar
            │   ├── android-dialog-fragments-1.0.0.aar.md5
            │   ├── android-dialog-fragments-1.0.0.aar.sha1
            │   ├── android-dialog-fragments-1.0.0.pom
            │   ├── android-dialog-fragments-1.0.0.pom.md5
            │   └── android-dialog-fragments-1.0.0.pom.sha1
            ├── maven-metadata.xml
            ├── maven-metadata.xml.md5
            └── maven-metadata.xml.sha1
この repository を GitHub に Push すれば配布側の手順としては完了です。

利用編

GitHub で配布されているライブラリプロジェクト(aar) を参照することで利用することができます。
プロジェクトは準備出来ているとして、app などの build.gradle に以下を記述します。
repositories {
    maven { url 'http://raw.github.com/wada811/Android-DialogFragments/master/repository/' }
}

dependencies {
    compile 'at.wada811:android-dialog-fragments:1.0.0'
}
全体は HelloGradle/build.gradle at master · wada811/HelloGradle を見て下さい。
読み込めると以下のように app/build/intermidiates/exported-aar/ 以下に追加されます。


これで Public な俺々ライブラリが手軽に配布、参照できて便利ですね!

参考

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

[Git][GitHub]GitHubにPushする際に認証失敗する

GitHub で2段階認証の設定をしてから push 時に認証が失敗するようになりました。
いつもどおり以下のコマンドを実行すると ID/PW を聞かれます。
git push origin master
Username for 'https://github.com':
Password for 'https://github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/wada811/AndroidLibrary-wada811.git/'
[Git][GitHub]やっておくと地味に便利なこと2つ | DevAchieve で .netrc に ID/PW を書いているので
聞かれるのはおかしいなぁと思いながら ID/PW を入力しますが上記のようにエラーになってしまいます。

調べてみると Git over HTTPS では Personal access token をパスワードの代わりに使えって言っています。
Two-factor Authentication
How does it work for command-line Git?

If you are using SSH for Git authentication, rest easy: you don't need to do
anything. If you are using HTTPS Git, instead of entering your password, enter
a personal access token. These can be created by going to your
application settings page.

実際に push 時にパスワードではなくアクセストークンを入力してみると問題なく push することができます。

アクセストークンの入力はめんどくさい

ssh プロトコルで push するように変更する

% git remote set-url origin git@github.com:wada811/AndroidLibrary-wada811.git
% git remote -v 
origin  git@github.com:wada811/AndroidLibrary-wada811.git (fetch)
origin  git@github.com:wada811/AndroidLibrary-wada811.git (push)
参考: Githubの2段階認証を有効にしてgitからの認証が弾かれる時の話 - 頼りないニモニック

.netrc に ID と Personal access token を書いておく

machine github.com
login wada811
password xxxpersonalaccesstokenxxx
コレが一番楽な解決方法ですね。
コレにて一件落着。
2014/05/11

dotfilesをGitHubで管理する方法

ドットファイルと呼ばれるファイル名の先頭にドットがある設定ファイル(※)を
GitHub で管理する方法について調べたので書いておきます。(※ .zshrc とか)
Mac の移行時に環境構築で dotfiles リポジトリを clone するだけで
zsh とか git とかの設定が新しい環境でもすぐに反映されるので楽チンみたいです。
イケてるエンジニアがやってるって噂なので僕もやりたいと思います。

1. dotfiles フォルダを作成する

cd ~
mkdir dotfiles

2. dotfiles フォルダにドットファイルを移す

mv .gitconfig dotfiles
mv .gitignore dotfiles
mv .vim dotfiles
mv .vimrc dotfiles
mv .zsh dotfiles
mv .zshrc dotfiles

3. ドットファイルのシンボリックリンクを作成するシェルスクリプトを作成する

cd dotfiles
vi dotfilesInstaller.sh
#! /bin/bash
ln -s ~/dotfiles/.gitconfig ~/.gitconfig
ln -s ~/dotfiles/.gitignore ~/.gitignore
ln -s ~/dotfiles/.vim/ ~/.vim
ln -s ~/dotfiles/.vimrc ~/.vimrc
ln -s ~/dotfiles/.zsh/ ~/.zsh
ln -s ~/dotfiles/.zshrc ~/.zshrc
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

4. dotfiles を GitHub で管理する

git init
hub create
git add .
git commit -m "Initial commit"
git push -u origin master

GitHub で管理された dotfiles リポジトリの完成

wada811/dotfiles
これでイケてるエンジニアの仲間入りですかね!

新しい Mac で dotfiles をインストールする

cd ~
git clone git@github.com:wada811/dotfiles.git
clone したら dotfiles フォルダの dotfilesInstaller.sh を以下のように実行したら移行完了です。
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

参考
dotfilesをGitHubで管理,vimプラグインをNeoBundleで管理する方法メモ - Programming Log

dotfiles を追加する際には dotfilesInstaller.sh に追記しなければなりませんが、
以下のように記述すれば追記の必要もないようです。
なんとなく意味はわかりますが、完全に理解しているわけではないので採用していません。そのうち調べます。
#!/bin/sh
cd $(dirname $0)
for dotfile in .?*
do
    if [ $dotfile != '..' ] && [ $dotfile != '.git' ]
    then
        ln -Fis "$PWD/$dotfile" $HOME
    fi
done
DotfilesをGitHubで管理する | fixture.jp
2014/03/16

[Git][GitHub]hub コマンドでターミナルから Pull Request を送る

[Git][GitHub]Pull Request を送る手順、あるいは GPUImage for Android に PullRequest を送った話 | DevAchieve を書く際に色々調べていたら
以前導入した hub コマンドで Pull Request を送る方法があったのでまとめてみました。
hub: github/hub
導入記事: HomeBrew を zsh で使えるようにする。ついでに hub コマンドも。
参考記事: GitHubユーザーのためのhubコマンド - Qiita

Pull Request したいリポジトリをクローン

hub clone octocat/Spoon-Knife
Cloning into 'Spoon-Knife'...
remote: Reusing existing pack: 10, done.
remote: Total 10 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (1/1), done.
Checking connectivity... done

作業ディレクトリに移動

cd Spoon-Knife

作業用ブランチを切る

git checkout -b Spife
Switched to a new branch 'Spife'

編集してコミット

vi README.md
git add README.md
git commit -m "Spife is spoon, it's also knife."
[Spife 0758961] Spife is spoon, it's also knife.
1 file changed, 1 insertion(+)

リポジトリをフォーク

hub fork
Updating wada811
From github.com:wada811/Spoon-Knife
* [new branch] master -> wada811/master
new remote: wada811

変更をプッシュ

git push wada811 Spife
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 388 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:wada811/Spoon-Knife.git
* [new branch] Spife -> Spife

Pull Request を送る

hub pull-request
https://github.com/octocat/Spoon-Knife/pull/1778

hub コマンドを入れたものの全然使ってなかったので積極的に使っていこう。
2014/03/15

[Git][GitHub]Pull Request を送る手順、あるいは GPUImage for Android に Pull Request を送った話

CyberAgent/android-gpuimageを使ってみたら
大きめの画像を Bitmap に変換する際に結構時間がかかっていたので
ソースコードを見てみたらPixelBuffer#convertToBitmap
上下反転を直すために全ピクセルをループ回していました。

これでは画像が大きくなるほど処理時間が長くなってしまうので
一旦上下反転した画像を Bitmap に変換して、
その Bitmap を Matrixで更に上下反転させて直しました。
change the way to convert upside down image · ec82668 · wada811/android-gpuimage

GitHub で Pull Request を送る手順

1. リポジトリをフォークする

GitHub で fork する。

2. リポジトリをクローンする

git clone git@github.com:octocat/Spoon-Knife.git

3. 作業ディレクトリに移動する

cd Spoon-Knife

4. 作業用ブランチを切る

git checkout -b Spife

5. ファイルを編集してコミットする

vi README
git add README
git commit README -m "Spife is a spoon, it is also a knife."

6. フォーク元のリポジトリの更新に追従する

6-1. フォーク元のリポジトリの登録(初回のみ)
git remote add upstream git://github.com/octocat/Spoon-Knife.git
6-2. commit 前の差分がある場合は退避する
git stash
6-3. master ブランチに移動する
git checkout master
6-4. upstream/master の変更をローカルの master に pull する
git pull upstream master
6-5. 作業用ブランチに移動する
git checkout Spife
6-6. fork 元の最新版まで rebase する (コンフリクトしたら頑張りましょう)
git rebase master Spife
6-7. stash で退避した差分を元に戻して作業を継続 (コンフリクトしたら頑張りましょう)
git stash pop

7. Pull Request 用に作業用ブランチの commit を1つにまとめる

7-1. 作業用ブランチに移動する
git checkout Spife
7-2. 作業用ブランチを元に Pull Request 用ブランチを切る
git checkout -b featureSpife
7-3. 作業用ブランチ上の fork 元からの差分を1 commitにまとめる
git rebase -i master

8. Pull Request 用ブランチを push する

git push origin featureSpife

9. Pull Request する

GitHub から Pull Request する。

詳しい説明は GitHubへpull requestする際のベストプラクティス - hnwの日記 を読んで下さい。
僕は CyberAgent/android-gpuimage が1年近く放置されていたのと、変更箇所が1ヶ所だけだったので
上の手順の 6 と 7 を省いて実行しました。
CyberAgent さんは Pull Request が来ると Travis CI が動くようです。
Travis CI を使ったことがないのでよくわからないのですが、
結果は設定ファイルがないよ!ということでその後うまく動かなかったのかエラーになりました。
Travis CI - CyberAgent/android-gpuimage - Could not find .travis.yml, using standard configuration.
他の人の Pull Request も同様に失敗しているのでこちら側由来のエラーではないはず。
Pull Request しても反応がないのだったら他で連絡しても多分反応ないし放置することにしました。

Bad End.

おまけ

Pull Request はこれで2回目だけど手順も全然覚えてないし、
git レベルが低くてコミットをまとめるとかコンフリクトを解決するとか
あまりやらないことは記事を書けるレベルに達していないので
とりあえず全体の流れだけ記事に書いてみました。
Pull Request する機会は早々ないと思いますが、これで次からは多少すんなりできるかな?

もっと git レベルを上げるために Fork しない Pull Request で色々な操作を練習して慣れていきたい。
GitHub初心者はForkしない方のPull Requestから入門しよう - QNYP Blog
2013/06/08

[Git][Android].gitignoreを設定する

Androidアプリ作ってるよー!カメラアプリでプレビューが歪むよー!
結構大きな変更になりそうだよー!ブランチ切りたいよー!
git 使ってなかったよー! Android 用の .gitignore ってどんな設定すればいいのー?

ということで
git init
vi .gitignore
# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
.classpath
.project

# Proguard folder generated by Eclipse
proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/
gitignore/Android.gitignore at master · github/gitignore · GitHub

.DS_store とかもコミット対象になってるんだけどーって場合は
vi ~/.gitignore
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
 
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
 
# Logs and databases #
######################
*.log
*.sql
*.sqlite
 
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
git config --global core.excludesfile ~/.gitignore で設定する。
設定された確認するには以下のようにする。
git config --global --get core.excludesfile

[Git][GitHub]やっておくと地味に便利なこと2つ | DevAchieve
設定したはずなんだけどすっかり忘れてた。
2013/03/23

HomeBrew を zsh で使えるようにする。ついでに hub コマンドも。

HomeBrew を zsh で使えるようにする

MacにHomeBrewとzshを導入してみた | DevAchieveでログインシェルを zsh に
変更したは良いけど brew コマンドが使えなくなっていた…。
よくわからないが zsh-completions をインストールすれば良いらしい。

とりあえずシェルを bash に変更する。
chsh -s /usr/local/bin/bash
HomeBrew で zsh-completions をインストールする。
brew install zsh-completions
.zshrc に以下の記述を追加する。
vi .zshrc
# zsh補完を有効化
fpath=(/usr/local/share/zsh-completions $fpath)
変更した .zshrc の設定を有効にする。
source .zshrc

ついでに hub コマンドも

むしろメインの目的だった hub コマンドを使えるようにする。
hub コマンドで GitHub がもっと便利になるらしい。
hub コマンドについては以下の記事がわかりやすい。
GitHubをさらに便利に使う、hubコマンドを活用しよう! | Act as Professional - hiroki.jp

とりあえず上記で HomeBrew を zsh で使えるようにしたので以下のコマンドでインストールする。
brew install hub
インストールできたか確認する。
hub --version
git version 1.7.9.6 (Apple Git-31.1)
hub version 1.10.2
こんな感じに出ればOK!

更についでに GitHub のリポジトリを作る

すでに Git で管理されていることが条件で、まだの場合は適当に作る。
mkdir Sample
cd Sample
git init
hub create
初回はID/PWを尋ねられるので答えたらリポジトリが作られる。
そうしてできたリポジトリこちら。wada811/Sample
以下のコマンドで GitHub のリポジトリのページを開けるのでリポジトリが作成されているか確認できる。
hub browse

おわり。
2013/02/10

[Git][GitHub]やっておくと地味に便利なこと2つ

全てのリポジトリで .gitignore で無視するファイルを指定しておく

Ignoring files · github:help
git config --global core.excludesfile ~/.gitignore_global
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db

GitHub への push 時にアカウント名とパスワードを聞かれないようにする

~/.netrc にユーザ名/パスワードを書く

machine github.com
login wada811
password xxxxxxx
2012/01/27

Windows7 64bitでGit/GitHubを始める

先に言ってしまうとWindows7 64bitだからといってほとんど違いはありません。
まずはWindowsでGitを使うためにMSysGitというものをインストールする必要があります。
以下のサイトでGit-*.*.*-preview********.exeをダウンロードしします。
Downloads - msysgit - Git for Windows - Google Project Hosting http://code.google.com/p/msysgit/downloads/list

このようなアイコンのやつを実行すると
セットアップウィザードが開きます。
ライセンスに同意します。
保存場所を指定します。
空白とか日本語が含まれるフォルダに
保存するのは何か問題が起きそうで
怖いのでCドライブ直下にでも。
64bitだとContext menu entriesの方が
選択されている。違いはこれだけかと。
今インストールしているやつに
Git GUIというのも入っているから
使うならGit GUI Here のチェックが
必要になるようだ。

それとは別にTortoiseGitという
GitのGUIツールがあり、
それを使うなら同じく要チェック。
TortoiseGitとGitHubの連携を
試みたけど上手くいかなかった。

頑張ってGitコマンド覚えよう!
スタートメニューに追加
普通は"Use Git Bash only"にしておいた方が良いとか。(参考:Windows版git & TortoiseGit のインストール - Linux & Development Diaries)
チェックアウト時の改行コードの設定。
「何もしない」の一番下が良いとか。
(参考:Windows版git & TortoiseGit のインストール - Linux & Development Diaries)
セットアップウィザードの終了。

次はいよいよGitHub


Plans & Pricing - GitHub
無料アカウントでも登録してみる。
適当に登録したら
Set Up Gitに飛ばされるけど
Git のインストールは済んでいるので
Help.GitHub - Set Up SSH Keysに飛ぶ。
SSHのキー作成が初めてだったり、
何のことだかわからなかったら、
3. Generate a new SSH key.から先を
Git Bashという黒い画面のやつで実行。

GitHubにリポジトリを作る

Your Dashboard - GitHubにアクセスしたら中段に大きく、Create A Repo とかあるので、
そこに沿ってリポジトリを作成する。英語は割と無視してコマンドとスクリーンショットを真似すれば良い。
作成したら README ファイルが作成されたはずなのでGitHubから自分のリポジトリのページを開く。
READMEをクリックしてEdit this fileとかのボタンを押して編集して保存なんてことをしてみる。
ここでいくら変更してもローカル(自分のPC)のREADMEファイルには変更が反映されない。
エディタなどでも開いても中身のないファイルのままのはず。

GitHubでの変更を反映するには

pull(プル)という動作をする必要がある。
Git Bash(黒い画面のアレ)で"git pull"してやるとGitHubでの変更がローカルのリポジトリに反映される。

GitHubに変更を反映するには

ローカルリポジトリに追加
git add ファイル名

コミット
git commit -m 'コメント'

GitHubに反映
git push -u origin master

練習だと思ってREADMEにこれらのコマンドを書いてGitHubに反映してみよう!
使い始めはコマンドを忘れやすいのでリポジトリのREADMEに書いておくと便利。入門git

とりあえず超初心者なユーザーはこれで十分かも。
もっと使いこなしたかったり詳しく知りたかったら右の書籍がオススメかも。

使い始めで理解が浅いから大した解説出来なかったけど、この記事が役に立つと良いな。
ということで、Git/GitHub始めました。wada811's Profile - GitHub
AIZU ONLINE JUDGEの回答載せてます。wada811/AOJ - GitHub
良かったらフォローしてください。

タグ(RSS)