くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

リセットした Mac を Xamarin Mac Agent として設定できなかったから解決した。

状況

状況

Xamarin Mac Agent として Mac たんを設定しようとしても、できなかった。

ログファイルより

Xamarin.VisualStudio.Remote.State.DisconnectedState|Error|0|Mac に対して接続し、作業するには、Xcode ライセンスに同意する必要があります

やったこと

1. Xcode CLI Tool をインストール

ダウンロードリンク

https://developer.apple.com/download/more/developer.apple.com

Xcode の場所を設定

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Xcode のライセンスに同意

$ sudo xcodebuild -license

新しい SSH フィンガープリントに同意

f:id:kuxumarin:20170413195615p:plain

完了

まとめ

知っていれば、どうでもいいかもしれないけど、知らないとつらい案件

VSTS のビルド結果を Github Badge として表示する方法

VSTS のビルド結果を Github Badge として表示する方法

Github Badge とは

Github へビルド状態のステータスとか Gitter へのリンクなどの小さな画像リンクを表示できるサービスです。

こんなの

今回は、 VSTS のビルド結果を Github で表示しようってやつです!

ほかの種類のbadgeについてはここが詳しい

qiita.com

やってみる

1. VSTS の適当なビルド定義の編集画面を開いてください

2. Options のタブを開いてください

3. Badge Enabled をクリックしてON状態にしてください

ONにしたら一回SAVEしてください

4. 出てきた URL をコピーしてください

テキストボックスの右側にあるアイコンをクリックするとテキストのコピーができます。

5. Github の 編集したい README ファイルの編集画面を開く

その中に以下のテキストを打ち込みます。

![]({さっきコピーしたURL})

6. 見てみる

わーい!

Xamarin Forms Preview で **Unsupported Java Version Detected** ってエラーメッセージが出たから解決してみた。

Xamarin Forms Preview で Unsupported Java Version Detected ってエラーメッセージが出たから解決してみた。

エラーメッセージ

The previewer requires a 64-bit version of Oracle Java JDK 8 (1.8) or higher. Please install it and then set the Java JDK location in the Xamarin Studio or Visual Studio preferences.

解決方法

64 bit バージョンの JDK をインストールする

www.oracle.com

難しいところ

Visual Studio 2017 のインストーラーがデフォでインストールするのが、 32 bit バージョンだということです。

Xamarin.Forms 2.3.4 で追加された Bindable Picker を RxPRop で使ってみた (長濱 ねるちゃんはいいぞ)

Xamarin.Forms 2.3.4 で Picker の Item Source が Bindable になりました。

ソース

blog.xamarin.com

しかし、ネットでググっても、 ReactiveProrpety で 利用しているサンプルがなかったため、自分で書いてみました。

ソース

MainPage.Xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:BindablePickerTest"
             xmlns:viewmodel="clr-namespace:BindablePickerTest.ViewModel;assembly=BindablePickerTest"
             BindingContext="{Binding Source={x:Static viewmodel:DesignTimeViewModel.MainPageViewModel}}"
             x:Class="BindablePickerTest.MainPage">
    <StackLayout 
        Padding="20,20,20,20">
        <Picker HeightRequest="40"
                Title="欅坂46 で一番かわいいのは?"
                ItemsSource="{Binding KEYAKIMember}"
                ItemDisplayBinding="{Binding Name}"
                SelectedItem="{Binding FavoriteMember.Value, Mode=OneWayToSource}"/>
        <Label Text="{Binding FavoriteMember.Value.Name, StringFormat='{0} かわいいよね( ˘ω˘ )'}" />

    </StackLayout>
</ContentPage>

MainPageViewModel.cs

using Reactive.Bindings;

namespace BindablePickerTest.ViewModel
{
    public class MainPageViewModel
    {
        public ReactiveCollection<MemberInfomation> KEYAKIMember { get; set; } = new ReactiveCollection<MemberInfomation>();

        public ReactiveProperty<MemberInfomation> FavoriteMember { get; set; } = new ReactiveProperty<MemberInfomation>();
        
        public MainPageViewModel()
        {

            KEYAKIMember.Add(new MemberInfomation { Name = "長濱 ねる" });
            KEYAKIMember.Add(new MemberInfomation { Name = "渡邊 りさ" });
            KEYAKIMember.Add(new MemberInfomation { Name = "菅井さま" });
            KEYAKIMember.Add(new MemberInfomation { Name = "今泉 佑唯" });
        }
    }
    public class MemberInfomation
    {
        public string Name { get; set; }
    }
}

動作動画

https://goo.gl/bQC0hi

解説

ソースの通りな感じです。まぁ、 Xaml ファイルでインテリセンスが利くように小細工してるぐらいでしょうか

blog.nuits.jp

ハマったポイント

Reactive Proprety を利用すると、 バインディングするときのパスで、 .Value を追加しなければいけないのに気づけず、ハマっていました。

参考サイト

ticktack.hatenablog.jp

Visual Studio Team Services で Xamarin.iOS をビルドする!

Xamarin.iOS を VSTS でビルドする

VSTS とは

VSTS とは、 Microsoft の提供している開発者が開発を効率的に行えるようにするサービスです。

VSTS に含まれている機能

アジャイル開発とかをしやすくするための機能がたくさん含まれてます。 今回は、VSTS 自体についての記事ではないので詳しくは、ぐぐってください。

  • 継続的インテグレーション
  • バックログ、タスク管理

やっていく

VSTS で Xamarin.iOS のプロジェクトをビルドするための ビルド構成を作る

VSTS で Xamarin.iOS をビルドするときに、 Xamarin.Android のプロジェクトが混じっているとビルドに失敗します。 ということで、新しく、 Xamarin.iOSをビルド専用のビルド構成 を作ります。

Visual Studio で Xamarin,iOS の含まれているソリューションを開き、構成マネージャーを開いて新規構成を選ぶ

この時に、設定のコピー元は、 Release を選んだ方がいいと思います。

Xamarin.iOS のビルドに必要なプロジェクト以外のチェックを外して、 iOS Release という名前で保存する

自分の場合、こんな感じになりました。

これを、アクティブソリューションプラットフォームを iPhone, iPhone Simulator と2つ切り替えて設定します。

Github との連携設定

今回は、 Github においてある Visual Studio の Xamarin Template で作ったまんまの コードをビルドしていきたいと思います。

Github との連携するために Github による VSTS に対する認証が必要です。

ここで、 上部にあるツールバーの一番右に配置してある歯車のアイコンにマウスをホバーさせると出てくるメニュー の中から Services を選択します。

Services の画面

New Service Endpoint の部分をクリックし、 出てくるドロップダウンボックスから Github を選択します。

すると、Github との連携の設定画面が出てきます。 Authorize をクリックしてください。

出てきた、 Github との連携の設定画面

ID/Pass を入力して、認証してください。 Github との認証が完了した画面

iOS アプリをビルドするために手持ちの Mac マシンに Build Agent をインストールしてく

現在、 VSTS で提供されている ビルドマシンは、以下の3種類あります。
ビルドマシンは、 VSTS でアプリ等をビルドするタスクが発行されたときにビルドをするためのマシンです。

  • Hosted (メイン, Windows機)
  • Hosted Linux Preview (プレビュー, Linux)
  • Hosted VS 2017 (プレビュー, Windows)

名前を見ればどのようなマシンかはわかるかと思います。
まぁ、プレビューなので選択しは実質1つだけですが。

iOS アプリのビルドをするためには、 Mac マシンが必要

iOS アプリをビルドするためには、 Apple の利用規約の関係で Mac マシン上でビルドしなければいけません。
ところが、VSTS でビルドのために使えるマシンは、上で書いてあるように、 Windows (一応、Linux)しかありません。 Mac は使えない感じです。

どうすれば、 iOS アプリをビルドできるでしょうか?

ちゃんと、やり方は用意されています。
手元にある Mac マシンをビルドするために使います。具体的には、 VSTS で iOS アプリのビルドするタスクが呼び出されたら、 VSTS の Build Agent がインストールされたマシンが代わりにビルドを行います。

Build Agent ... 知らない子ですね。

Build Agent とは、

Build Agent とは、 Hosted ビルドマシンでは無理な場合(今回のように Mac が必要なときや、Hosted マシンの1か月の利用時間制限を使い切ってるとき)に設定して使うときに使うソフトウェア?です。

VSTS のサイトから無料で入手することができます。

今回は、このソフトウェアを Mac マシンにインストールしていきます。
(Mac Book Air をビルドマシンにしてるから、Mac mini ほしい...)

www.amazon.co.jp

Build Agent を入手する

Build Agent は上でも書いた通り VSTS のサイトから入手することができます。 具体的には、 設定画面Agent QueueDownload Agent のボタンからダウンロードで入手できます。

Build Agent を Mac へ設定している様子を動画で撮影してみました。

Build Agent にした Mac マシンでビルドするための証明書を作る

iOS アプリをビルドするためには、 アプリパッケージを作るための、証明書が必要です。 しかし、証明書を作るためには、 XCode を利用して作られます。つまり、Xamarin Studio や Visual Studio では作成できない。 また、証明書の判別は、 Bundle identifier を利用して行われています。
ということで、

Xcode でダミーのプロジェクトを作成し、 Xamarin.iOS のプロジェクトの Bundle identifier と同じにして証明書を作ってあげる必要があります。 証明書の作成は、 XCode で、 Bundle identifier を同じにした 適当な iOS アプリをシミュレーターで動かすだけでおkです。

今回の場合は、 Build Agent に設定してあるマシンでも証明書を作らなければいけないので、下準備として、

Build Agent に設定してある Mac マシンの Xcode 上で Xamarin.iOS の Bundle identifier な証明書を作成する必要があります

新しいビルド定義を作成する

VSTS では、ビルド定義に従って、ビルドを行っていきます。まず、ビルド定義を作成していきます。

ダッシュボードにアクセス

ダッシュボードにアクセスするところから始めていきます。

Build && Release タブへ移動

継続的インテグレーションやリリースの管理はこのタブで行います。
すでに、 Android のビルド定義が1つされている感じです。

新しいビルド定義の作成

+New の部分をクリックして、新しいビルド定義を作成します。

新しいビルド定義ができた!

Github にある ビルドしたリポジトリを指定する

VSTS 自体にもコードを管理する機能がついています。しかし、ほかの ツール等への移行をしようとしたときに辛みが出てくるので、今回は、 Github でホスティングしているリポジトリをビルドしていきます。

Github にある リポジトリやブランチの選択

Xamarin Component Restore のタスクを削除

今回ビルドするプロジェクトでは、 Xamarin Component は使ってないため、タスクを削除します。

Xamarin.iOS のビルド設定

たぶん、一番メインのタスクです。

ビルドするソリューションの選択

ビルドするを選択するためにファイルピッカーを開いて設定していきます。

Xamarin Test Cloud のタスクを削除

Xamarin Test Cloud は様々なデバイスでのUIテストを行ってくれるものですが、今回は使用しないので削除します。

設定が完了

これで、ほとんどの設定が完了しました。

それでは、、、

設定を保存してから

ビルドするマシンを先ほど設定した Mac に変更して、

ビルド設定を iOS Release に変更、、、

緊張の...

ビルド...

成功!!

Xamarin.Android を VSTS でビルドしたい場合は、こちらを見てね!

goo.gl

参考情報

https://blogs.msdn.microsoft.com/chomado/xamarin/vsts-xamarin-hockeyapp-bookmarks/

Build Xamarin apps - Azure Pipelines | Microsoft Docs

Xamarin Blog | An open source mobile platform for building Android, iOS, macOS, watchOS, and tvOS apps with .NET.

24 時間自宅で動かせる Mac 開発機がほしい!!!!!!!!!!!!!

www.amazon.co.jp

VSTS でビルドが完了したら Twitter に投稿する Microsoft Flow を作ってみた

VSTS でビルドが完了したら Twitter に投稿する Microsoft Flow を作ってみた

Microsoft Flow とは

サービス連携を簡単に、コーディングしなくても作成できるサービスです。
今回のように、VSTS 、Twitterだけでなく SlackやOnedriveとも連携できたりします。似たようなサービスはいろいろあるのですが、Microsoft Flow はMicrosoftが提供しているのもあってMicrosoftのサービス、特に Azure との連携が強化されています。

VSTS (Visual Studio Team Services) とは

Microsoftの提供している、チームでアプリケーションを開発するのを助けれくれるツール群の総称です。
継続的インテグレーション、自動テストやバックログ、タスクの管理などなど、さまざまな機能があります 特にアジャイル開発などに特化しています。

やっていく

1. 新しい フロー を登録する

Microsoft Fow では、サービス同士を連携させるための設定単位を フロー という名前で管理しています。

今回は、1からフローを作っていきます。テンプレートを使用することで楽に作れますが。。。

2. フローを編集していく

VSTS との連携を設定していく

フローの起点になるようなサービスを トリガーといいます。 今設定しているのは、トリガーです。

現れた画面のテキストボックスに Visual Studio Team Services と入力してください。

Visual Studio Team Services のアイコンが出てきます。    トリガーと書かれたリストビューにある、 Visual Studio Team Services - Buld Complete をクリックしてください

VSTS との連携設定に画面がでてきます。 どの VSTS アカウントと連携するのか、どのプロジェクトと連携するのか、ビルド結果でフィルターをかけるのか等を設定できます。

以下の場合は、 fumiya-kume というアカウントの、 AutoCalc というプロジェクトの、ビルドが成功したときにトリガーが発動するようになっています。

Twitter との連携を設定していく

Twitterとの連携を設定するために、 新しいステップをクリックしてください

先ほどと同じように出てきた検索ボックスへ Twitter と入力します。

ツイートの投稿の部分をクリックします。 また、Twitterと Microsoft Flow の連携が済んでない場合はここでします。

ツイートするテキストの編集をします。

ただ単に文字をツイートするだけでなく、 VSTS のビルド結果も参照できるので、インタラクティブなツイートをできます。

ちらっと入力してみました。

右上の フローの作成 をクリックして完了です。
名前は付けなくても大丈夫です。よしなにいい名前をMicrosoft Flow がつけてくれます。

わーい!

ビルドするよ!

ビルドに成功したよ!

無事にツイートされたよ!

Visual Studio Team Services で Xamarin.Android をビルドする!

VSTS こと、 Visual Studio Team Service とは、Microsoftが提供しているチームでの開発を支援するための環境です。

※Visual Studio Team Services 以下、VSTS と記述します。

VSTS を使うメリット

Xamarin.Android と同じ会社が作っている製品ということで、 Xamarin のサポートが強力

たとえば、Xamarin Test Cloud を使う機能が標準で入っていたりします。 また、 Visual Studio 内からも少しごにょれるなど、 Xamarin の開発を行う上で、自然と使えるようになってます。

無料ではじめれる

5人までなら無料で使い始めれる、ビルドをいくつまで並列で行えるかのパイプラインも1本ならは無料で使えます。 お金がない自分にとっては、最適だとおもいました。

やること

1. VSTS のダッシュボード画面を開く

VSTS のアカウントは事前に作成してある前提で話を進めていきます。 また、新規プロジェクトを立ち上げてある状態です。

VSTS のダッシュボード画面

2. Github との連携

今回は、 Github においてある Visual Studio の Xamarin Template で作ったまんまの コードをビルドしていきたいと思います。

Github との連携するために Github による VSTS に対する認証が必要です。

ここで、 上部にあるツールバーの一番右に配置してある歯車のアイコンにマウスをホバーさせると出てくるメニュー の中から Services を選択します。

Services の画面

New Service Endpoint の部分をクリックし、 出てくるドロップダウンボックスから Github を選択します。

すると、Github との連携の設定画面が出てきます。 Authorize をクリックしてください。

出てきた、 Github との連携の設定画面

ID/Pass を入力して、認証してください。 Github との認証が完了した画面

3. ビルドタブへ移動

以下の写真に従い、 ビルド&リリース タブへ移動します。

ダッシュボード画面からビルド&リリース画面への移動

VSTS の ビルド&リリース画面

4. 新しいビルド定義を作成

ビルド定義とは、VSTS で Xamarin.Android をビルドするときにどのような方法でビルドするのか、どこへデプロイするのか、とかを決めます。基本的には、ここを編集していきます。

以下の写真のように、新しいビルド定義を作成します。 ビルド定義のテンプレートはいくつかありますが、ここでは、 Xamarin.Android の定義を使って作成していきます。

新しいビルド定義を作成する画面

Xamarin.Android のビルド定義を選択している画面

Xamarin.Android のビルド定義を作成し終えた画面

すでに、少しエラーが出てますね(^^;

5. 最低限必要ないプロジェクトを削除する

Xamarin Component Restore のタスクを削除する

とりあえず、 Xamarin Component Restore のタスクは今は必要ないので、削除します。

Xamarin Component Restore を削除している画面

Xamarin Test Cloud のタスクを削除

先ほどと同じように Xamarin Test Cloud のタスクも削除してください。

Xamarin Test Cloud のタスクを削除している画面

必要のないタスクを削除したあとの画面

6. Github からソースを取り込む設定をする

今回は、 Github で作成している Xamarin.Android のプロジェクトをビルドしていくので、

以下のように Get Source をクリックすると、ソースコードを取り込む元を選択できます。ここでは、 Github を選択してください。

7. ビルドするプロジェクトを指定する

Xamarin.Android のテンプレートで作成したビルド定義は、 .Droid と名前のついたプロジェクトを Xamarin.Android のプロジェクトと判断して、よしなにビルドしてくれます。
しかし、最新の Xamarin の作成する Xamarin のプロジェクトの名前は、 hoge.Android という形になっています。 そこで、少し手を加えてあげる必要があります。

Before

After

まだ続きます。

以前私のブログで紹介したバッドノウハウを使わなければいけません。
具体的には、 Xamarin.Android プロジェクトのビルド時にJDK8 を使うように明示的に指定しなければいけないgoo.gl

以下の感じで設定してあげてください。

Before

After

8. ビルドを実行する

ついに、ビルドの時間がやってきました。

右上の Save & Queue をクリックしてください。

Agent Type を Hosted へ変更し、 Queue をクリックすれば、完了です。

View post on imgur.com
i.imgur.com

おまけ

VSTS のビルドが成功したら Twitter に通知したりもできます ネコミミー

VSTS で Xamarin.Android のプロジェクトを ビルドしようとすると、 cannot access java.lang.Object ってエラーが出るから解決してみた

VSTS で Xamarin.Android をビルドしようとしたら、以下のようなエラーが出ました。

C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1862,3): Error : java\lang\Object.class(java\lang : Object.class)
cannot access java.lang.Object
Process 'msbuild.exe' exited with code '1'.

ぐぐったら以下のような情報にたどり着きました。

That error is telling you that the Java Class version that is being loaded was compiled with Java 8 (52) but Java 7 (51) is trying to load that compiled class. forums.xamarin.com

ふむ、

## JDK 8 でビルドされたクラスに JDK 7 を使用した状態で、アクセスしようとしているのか。

# そもそも、VSTS で現在ビルドしているAgent に JDK 7が入ってないのかなと思って少し調べてみました。

ちなみに、Hosted Agent でビルドしています。

Java Standard Edition Development Kit 1.8

www.visualstudio.com

ふむ、JDK 8 はちゃんと入っている。。。

# 解決方法は、 VSTS の Buld Defined で 明示的に JDK 8 を使用するように指定すれば大丈夫です。

Build Xamarin.Android Project の設定欄にある、 JDK Archtecture の設定項目を JDK 8 に変更すればいい感じです。

# わーい

# 参考ページ www.jamessturtevant.com

Amazon アプリストアへ無料で開発者登録してみた

Amazon のアプリストアへ開発者登録してみました。

Amazon アプリストアとは

Amazon の解説している Android, Webアプリを登録できるアプリストアです。 Google Play とは別物みたいです。

いくらかかるの?

無料で登録することができました。 Google Play の場合、登録料がかかるので、すこしメリットがあるかなと。

やったこと

まずは、 Amazon アプリストアのトップページへアクセス

f:id:kuxumarin:20170328232410p:plain

developer.amazon.com

個人情報を入力

f:id:kuxumarin:20170328232513p:plain

契約書に同意

f:id:kuxumarin:20170328232524p:plain

口座情報の入力

アプリ内課金機能を使う場合は、口座情報を入力するかんじです。 自分は、とりあえずアプリ内課金機能を使わないので、放置しました。

f:id:kuxumarin:20170328232532p:plain

登録完了

f:id:kuxumarin:20170328232609p:plain

感想

自分でもあっけないほど登録が簡単に完了してしました。 さて、アプリの申請をだすかな(*‘▽’)

XamarinMediaManager 0.4.0 を Xamarin.Android のプロジェクトにインストールしようとした

やったこと

XamarinMediaManager 0.4.0 を Xamarin.Android のプロジェクトにインストールしようとした

以下のようなエラーが出た

環境

解決策

XamarinMediaManager のインストールするバージョンを 0.3.0 まで落とした

原因としては、 Ver 0.4 で Andoid のサポートライブラリのバージョンが上がってるのが原因っぽいですね。

github.com