質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

591閲覧

C# Xamarin NGraphics library のデモを動かしたい。

esucht_amem

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

1クリップ

投稿2018/01/29 09:32

編集2018/01/29 09:36

C#、Xamarin 初心者です。

動かしながら勉強しようと思い、
NGraphics library(https://github.com/chrfalch/NControl/) を
ダウンロードして、Visual Studio のソリューションエクスプローラの
DEMOS -> NControlDemo.FormsApp(移植可能)を
ビルド・デバッグの開始 しましたが、
「クラスライブラリの出力タイプを持つプロジェクトを直接起動することができません」
とエラーになりました。
どのようにすれば、DEMOを動かせるるのでしょうか。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラー内容の通り、起動しようとしているのが、PCLのライブラリだからです。
動かしたいプラットフォームのプロジェクトをターゲットにして(Androidであれば「~~.Droid」、iOSであれば「~~.iOS」)実行してみてください。

余計なお世話かもしれませんが、初心者の方が動かす場合、GitHub上のしばらく更新されていないリポジトリは各ツールのバージョンが異なるためにうまく動かない可能性があります。
公式のサンプル(https://github.com/xamarin/xamarin-forms-samples)を動かしてみた方がいいかもしれません。
https://github.com/xamarin/xamarin-forms-samples/tree/master/XamlSamples とかはいろんなコントロールのサンプルになるのでお勧めです。

投稿2018/01/29 13:32

編集2018/01/29 13:33
_shunsuke_kawai

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

esucht_amem

2018/01/30 01:19

ありがとうございます。 「~~.Droid」の方を動かしたのですが、 「警告 Mac サーバーへの接続を確立するためのアドレスとユーザーが指定されていないため、プロジェクト 'NControl.iOS' に対してメイン アセンブリのみコンパイルされました。Mac サーバーに接続して完全なアプリケーションをビルドし直してください。 NControl.iOS」 「警告 Mac への使用可能な接続がないため、タスク Xamarin.MacDev.Tasks.CollectBundleResources は実行されません NControlDemo.iOS」 「警告 Mac への使用可能な接続がないため、タスク ResolveUniversalTypeIdentifiers は実行されません NControlDemo.iOS」 「警告 Mac サーバーへの接続を確立するためのアドレスとユーザーが指定されていないため、プロジェクト 'NControlDemo.iOS' に対してメイン アセンブリのみコンパイルされました。Mac サーバーに接続して完全なアプリケーションをビルドし直してください。 NControlDemo.iOS」 と、Mac サーバーを用意していないのでエラーがでます。 やりたいことは、角度を指定して円を描きたいのですが、公式のサンプルを見ても見つけられなくて、NGraphics libraryを確認しようとしました。 XamlSamples を確認してみます。 教えてくださり、ありがとうございます。
_shunsuke_kawai

2018/01/31 05:52

現時点で実行できていないってことですかね? Macとどうのこうのっという警告はおそらくiOSのプロジェクトがビルド対象になっていると思われます。 ビルドの構成がデフォルトだと「Any CPU」になっていると思いますが、ビルド構成マネージャーからiOS関連のプロジェクトを対象外にすること、Androidのプロジェクトが「配置」対象になっていることを確認してみてください。 あと気を付ける点としてはいきなり実行するのではなく、一度~.Droidプロジェクトをビルドしてからデバック実行した方がいいかもしれません。
esucht_amem

2018/01/31 09:23 編集

何度もありがとうございます。 ご指摘通り、現時点で実行できていません。 >ビルドの構成がデフォルトだと「Any CPU」になっていると思いますが、ビルド構成マネージャーからiOS関連のプロジェクトを対象外にすること、Androidのプロジェクトが「配置」対象になっていることを確認してみてください。 ⇒確認し、OKでした。 >あと気を付ける点としてはいきなり実行するのではなく、一度~.Droidプロジェクトをビルドしてからデバック実行した方がいいかもしれません。 ⇒ソリューションのクリーン後、ソリューションのビルド ⇒⇒ すべてリビルド: 6 正常終了、0 失敗、2 スキップ ソリューションプラットフォーム 「Any CPU」 スタートアッププロジェクト 「NControlDemo.Droid」で、デバッグ開始 ⇒ポップアップウィンドウに「配置エラーが発生しました。続けますか?」 ⇒⇒はい(Y) ⇒⇒⇒出力ウィンドウ「ビルドに失敗しました: Xamarin.Android では前のバージョンの実行をサポートしていません。ソリューション ビルドを確認してから実行、またはデバッグしてください。」 ⇒⇒いいえ(N) ⇒⇒⇒出力ウィンドウ「 1>アプリケーションを実行する前に有効なデバイスを選択してください。 1>------ 配置開始: プロジェクト:NControlDemo.Droid, 構成: Debug Any CPU ------ 1>エラー:取り消されました。 ========== 配置: 0 正常終了、1 失敗、0 スキップ ========== 」 このような状況で実行できていません。m(__)m
_shunsuke_kawai

2018/02/01 02:03

実行しようとしているAndroidは何でしょうか?またそれが認識されているのでしょうか? 以下を確認してみてください。 ・実機orシュミレーター ・AndroidがVisualStudioに認識されているか(ツールバーのデバッグ開始ボタンのところに端末名が表示されているか。「▷開始」となっていたら認識されていません。) ・AndroidのOSバージョン ・開発端末に入っているAndroid SDKが適切か(上の回答によってどれが適切かは変わる可能性があります。)
esucht_amem

2018/02/01 02:06

何度もありがとうございます! 「▷開始」となっています。 確認してみます。
esucht_amem

2018/02/01 15:00

Manifest.xml に android:minSdkVersion="18" と書かれているのに、Version="16"の実機とエミュレータ を使ってました。 コンパイルのAndroidバージョンをAndroid7.0・実機も7.0にして、 デバッグ開始ボタンのところに端末名:****Android7.0 を実行しました。 (やっとここまできました。ありがとうございます。) すると、 「アプリケーションはブレークモードになっています」 「お使いのアプリはブレーク状態になりましたが、すべてのスレッドが外部コード (通常はシステム コードまたはフレームワーク コード) を実行していたため、表示されるコードはありません。」 「ハンドルされていない例外 Unhandled Exception: Java.Lang.RuntimeException: Unable to instantiate activity ComponentInfo{ncontroldemo.ncontroldemo/md584e75cc6fb7b4b862f88e6840b20126d.SplashActivity}: java.lang.ClassNotFoundException: Didn't find class "md584e75cc6fb7b4b862f88e6840b20126d.SplashActivity" on path: DexPathList[[zip file "/data/app/ncontroldemo.ncontroldemo-1/base.apk"],nativeLibraryDirectories=[/data/app/ncontroldemo.ncontroldemo-1/lib/arm64, /system/fake-libs64, /data/app/ncontroldemo.ncontroldemo-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64, /system/vendor/lib64, /product/lib64]] 」 となり、F11を押すとデバッグ終了します。 デモの確認はもう少しかかりそうです。><
_shunsuke_kawai

2018/02/02 12:03

Android 7.0の場合は対象のSDKバージョンは24になるハズですが大丈夫でしょうか? 試しにAndroidManifest.xmlの記述を android:targetSdkVersion="24" android:minSdkVersion="24" としてみたらいかがでしょうか? また、APIレベル24のSDKがインストールされているかもあわせて確認してみてください。
esucht_amem

2018/02/02 13:38

何度もありがとうございます! 試してみます。
esucht_amem

2018/02/02 13:58 編集

<uses-sdk android:targetSdkVersion="24" android:minSdkVersion="24" /> と、修正してデバッグすると 「アプリケーションはブレークモードになっています」 「お使いのアプリはブレーク状態になりましたが、すべてのスレッドが外部コード (通常はシステム コードまたはフレームワーク コード) を実行していたため、表示されるコードはありません。」 「ハンドルされていない例外」 「Unhandled Exception: Java.Lang.RuntimeException: <Timeout exceeded getting exception details>」 となり、F11を押すとデバッグ終了します。
esucht_amem

2018/02/02 14:01

実機は HUAWEI P9 Lite を初期化。 その後、デフォルトアプリを最新にしたものです。
esucht_amem

2018/02/02 14:53

<uses-sdk android:targetSdkVersion="21" android:minSdkVersion="21" /> (エミュレータが遅いので21)にして、エミュレータで動かしましたが、 エラー内容・動作ともに同じでした。 VisualStudio側に問題がありそうです。。。
esucht_amem

2018/02/03 08:17

ビルドしたら警告がでており、 「 The $(TargetFrameworkVersion) for Xamarin.Forms.Maps.Android.dll (vv6.0) is greater than the $(TargetFrameworkVersion) for your project (v5.1). You need to increase the $(TargetFrameworkVersion) for your project. NControlDemo.Droid \NControl-develop\NControlDemo\NControlDemo.Droid\NControlDemo.Droid.csproj The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.dll (vv6.0) is greater than the $(TargetFrameworkVersion) for your project (v5.1). You need to increase the $(TargetFrameworkVersion) for your project. NControlDemo.Droid \NControl-develop\NControlDemo\NControlDemo.Droid\NControlDemo.Droid.csproj The $(TargetFrameworkVersion) for NControl.Droid.dll (vv7.1) is greater than the $(TargetFrameworkVersion) for your project (v5.1). You need to increase the $(TargetFrameworkVersion) for your project. NControlDemo.Droid \NControl-develop\NControlDemo\NControlDemo.Droid\NControlDemo.Droid.csproj The $(TargetFrameworkVersion) for NGraphics.Android.dll (vv6.0) is greater than the $(TargetFrameworkVersion) for your project (v5.1). You need to increase the $(TargetFrameworkVersion) for your project. NControlDemo.Droid \NControl-develop\NControlDemo\NControlDemo.Droid\NControlDemo.Droid.csproj The $(TargetFrameworkVersion) for FormsViewGroup.dll (vv6.0) is greater than the $(TargetFrameworkVersion) for your project (v5.1). You need to increase the $(TargetFrameworkVersion) for your project. NControlDemo.Droid \NControl-develop\NControlDemo\NControlDemo.Droid\NControlDemo.Droid.csproj The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.Android.dll (vv6.0) is greater than the $(TargetFrameworkVersion) for your project (v5.1). You need to increase the $(TargetFrameworkVersion) for your project. NControlDemo.Droid \NControl-develop\NControlDemo\NControlDemo.Droid\NControlDemo.Droid.csproj 」 とバージョンの差による問題のようですが、古いバージョンに設定する方法を教えていただけないでしょうか。 よろしくお願いします。
_shunsuke_kawai

2018/02/05 04:24

Android SDK はどのバージョンがインストールされてますか? VisualStudioのツール⇒Android⇒Android SDK Manager を選択すると一覧が出てくるので、そこの Android X.X がどれが選択されているのでしょうか? そのバージョンの「Android SDK Platform XX」だけ入っていれば大丈夫です。 今回ですと ・Android SDK Platform 27 ・Android 7.0 - Nougat   ⇒Android SDK Platform 24 が入っていれば大丈夫だと思いますが。。
esucht_amem

2018/02/05 11:11 編集

・Android SDK Platform 27 ・Android 7.0 - Nougat   ⇒Android SDK Platform 24 これが入っています。(他にもいろいろ入ってます。) Android SDK Manager 自体が更新(GUIが違う)されているようなので、 念のためリビルドして再確認しました。 状況が少し改善して、実機の上5分の1くらいに赤〇の一部と青■の一部と"NControlDemo"と表示。 実機の下5分の1くらいに"‣"(右向き三角)、"+"、">_"、"リストの記号のようなもの"が表示されます。 それと画面をスワイプさせると、左下に"google"、右下に”+”、”-”が表示されます。。。
_shunsuke_kawai

2018/02/05 13:53

それ、おそらく正常に起動できたということではないでしょうか…?
_shunsuke_kawai

2018/02/09 06:51

遅くなりました。 これはこういうサンプルアプリなんですね。 NControlDemo.FormsAppが共通プロジェクトとして実行されます。 NControlDemo.FormsApp/Views/MainView.cs にこの画面を表示する処理が書いてあります。 地図が表示されないのはAndroidManifest.xmlにAPI Keyが記載されていないからです。 そもそもやりたいことは >やりたいことは、角度を指定して円を描きたいのですが、 ということですが、 https://qiita.com/wraith13/items/2ed51964d463c5dddee7#%E7%B7%9A%E7%94%BB この辺とかは参考にならないでしょうか?
esucht_amem

2018/02/12 13:06 編集

返事が遅くなり、申し訳ありません。 地図についてですが、Google Console の 認証情報 のAPI Key を設定しているのですが、なぜか表示されません。。。 拙い質問・説明にも関わらず、丁寧に教えてくださり、感謝の言葉の申し上げようもございません。本当にありがとうございます。 教えて頂いたサイトを参考にしていこうと思いますが、最後に一点教えて頂けましたら助かります。 円の弧をタップ&ドラッグして動的に扇型を描くには、SKPointで位置情報を取得しながら描く。と、いうイメージでいいでしょうか?
_shunsuke_kawai

2018/02/14 09:17

おそらく弧をグリグリ動かすのは結構大変だと思います。座標の計算やタッチ操作の検知等々… よくあるヤツですが、以下にそれっぽいサンプルを作ってみました。 Slider を使用して円の描画をしています。ご参考までにどうぞ。 https://github.com/shunsuke-kawai/SkiaSharpSample
esucht_amem

2018/02/14 10:56

サンプルまで作ってくださり、本当にありがとうございます。 早速確認しようとしたのですが、 「エラー 指定されたパス、ファイル名、またはその両方が長すぎます。完全限定型名は 260 文字未満で指定し、ディレクトリ名は 248 未満で指定してください。 SkiaSharpSample.Android 」 となり、クリーンもビルドも通りません。 ローカル コンピューター ポリシー -> コンピューターの構成 -> 管理用テンプレート -> システム -> ファイルシステム -> Win32 の長いパスを有効にしたり、 最新の.NET Framework 4.6.2をインストール、最新のJDK 1.8.0_161、JAVA_HOME のpath 設定済みですが、上記のとおりです。 上記以外の環境に問題があるのでしょうか? (Windows 10 Pro、AMD A10-7850K です。)
esucht_amem

2018/02/14 13:08

動きました!!! 本当に本当にありがとうございました。 一人だったら途中であきらめていたと思います。 何度も何度も親切に丁寧に答えてくださり、サンプルまで作ってくださり、ありがとうございました。m(__)m
_shunsuke_kawai

2018/02/15 04:08

よかったです!おめでとうございます! またなにかあったら別質問としてあげてくださいー。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問