もこたんブログ@mocuLab(・ω・)

Programming & Designing

ポータブルクラスライブラリ(PCL)と共有ライブラリの違い

以下、共有ライブラリは共有プロジェクトと表記します。

コードの共有方法には2パターンあり、プロジェクトの作成時にどちらか1つだけ選択できます。 

f:id:mocotanus:20180131054503p:plain

 

共有プロジェクト

 

共有プロジェクトはライブラリではありません。VisualStudioの機能です。


一般的なプロジェクトと役割が違います。
通常、プロジェクト単位でdll,exeなどの実行モジュールが作られます。しかし共有プロジェクトは実行モジュールを生成しません。単にソースコードの置き場でしかありません。

 

●ビルド時のイメージ:
ビルドすると、共有プロジェクト内のコードが.Androidにコピーされてからビルドされる。(.iOSも同じ)
(→ソースコードを共有する)

 

●特徴
#ifディレクティブで囲めばプラットフォーム依存のコードが書ける。

しかし、#ifディレクティブは増えると読みづらくなっていく。

 

ポータブルクラスライブラリ(PCL)

PCL(Portable Class Library)とも呼ばれます。

 

プロジェクトの種類で、クラスライブラリです。


クラスライブラリとはDLLのことで、Javaでの.jarファイル、Xcodeでの.aファイルにあたります。プラットフォーム(AndroidiOS)に依存しない部分のみを記述するため、ポータブルな(移植可能な)ライブラリになります。

ビルドして生成されるdll自体が移植可能なものとなる。

 

●ビルドすると:

クラスライブラリなので、ビルドするとdllが生成されます。

(→dllを共有する)

 

●特徴
完全に独立している。
どのプラットフォーム上でも使える。
dllだけで使える。

ただし、プラットフォーム固有の処理は書けない。

 

 

以下の書籍を参考にしました。

 

PCLのほうが使い勝手が良さそうだが…(´・ω・`)

VisualStudio2017forMacCommunityをインストールした後にやっておきたいこと

Xamarinでアプリ開発するための準備です。
HelloWorldの前段階です。
Androidエミュレーター周りで調べるのに時間かかった。。(´・ω・`)

 

Visual Studio for Mac のインストール(簡単)

Xcodeをインストール(簡単)

Xcodeを一度起動しておく。
起動時にパッケージのインストールなどが行われるため。
同じ理由で、Xcodeの更新後も、更新を適用するには一度起動する必要があります。

「AndroidSDKとツールの場所」のパスを設定する。

「Cmd+,」で設定画面が出せます。
設定>プロジェクト>SDKの場所>Android>場所

f:id:mocotanus:20180130055111p:plain

自分のMacでは以下に置いてあります。
SDK
/Users/名前/Library/Developer/Xamarin/android-sdk-macosx
NDK
/Users/名前/Library/Developer/Xamarin/android-ndk

日本語環境だとファインダーでは「Users→ユーザ」、「Library→ライブラリ」とカタカナ表記になっていました。
ライブラリフォルダはデフォルトでは非表示だったと思います。
ショートカットキー「Command」+「Shift」+「.(ピリオド)」を入力すると、不可視ファイル・不可視フォルダの表示/非表示の切り替えができます。

SDK(Software Development Kit)
ソフトウェア開発キット

NDK(Native Development Kit)
Androidアプリで C および C++ コードを使用できるようにするツールのセットです。NDKを使用して独自のソースコードをビルドしたり、事前にビルドされた既存のライブラリを活用したりできます。とのことです。



Androidエミュレーターの起動確認

Androidエミュレータ起動確認 - もこたんブログ@mocuLab(・ω・)
・HAXMのインストール
Android Virtual Devices(AVD)を作成する

 

 

「"LC.exe" exited with code -1.」のエラーが出てビルドできないとき

「"LC.exe" exited with code -1.」のエラーが出てビルドできないとき


使用されているすべてのGrapeCityの製品のライセンス認証が通っていないときに出ました。
(古~いのができていなかった)

VisualStudioでプロジェクトの配下にあるプロパティディレクトリの中に、ライセンスファイルが含まれていますので、それをダブルクリックします。そうするとテキストがずらりと並んでいまして、なんとなく何が使われているかの予想がつくと思いますので、そうやって見て調べました。


試用版のまま期限が切れているものがある場合も出るようです。

「No system images installed for this target.」が表示されて、AVDの作成ができないとき

「Target」で選択しているバージョン(下の画像だとAndroid4.4.2)と同じシステムイメージがインストールされていないとき、「No system images installed for this target.」が表示されて、AVDの作成ができません。

f:id:mocotanus:20180124063613p:plain

 

システムイメージのインストール

VisualStusio for Macの場合、
VSMac>ツール>SDKマネージャー

f:id:mocotanus:20180125101037p:plain

f:id:mocotanus:20180124064212p:plain

↓拡大

f:id:mocotanus:20180124064333p:plain

HAXM入れてる前提だと、
Intel x86 Atom
Google APIs Intel x86 Atom
Intel x86 Atom」どうしをセットで選ぶ

 

AndroidStusioの場合、Configure>SDK Manager

f:id:mocotanus:20180129061453p:plain

f:id:mocotanus:20180129061512p:plain

 右下の「Show Package Details」にチェックを入れると細かく表示されます。

 

→「適用」→ライセンスの同意

f:id:mocotanus:20180124064542p:plain

 

Googleエミュレーターマネージャーを再起動(閉じて再度開く)
先ほどインストールしたものが選べるようになっている。
・スキンを選択
・Use Host GPUにチェック
「OK」でAVDが作成される

f:id:mocotanus:20180124064744p:plain

 

以上で作成できるようになります。

MacでAndroidエミュレータが起動しない(HAXMが起動しない)とき

私の場合、HAXMはインストールができているのに起動していませんでした。
Mac側がブロックしていたのが原因でした。

 

やったこと

Macの設定>セキュリティとプライバシー>許可する(intel HAXMがブロックされていた)

f:id:mocotanus:20180124062831p:plain

 

そのときのスクショを撮りきれてないんですが、チェックを入れて許可したら動くようになりました。

 

参考↓
以下の方と同じ状況だったみたいです。

mac AndroidStudio emulator が起動しない - Qiita

 

HAXMが起動しているかの確認

ターミナルで以下のコマンドを実行。

起動確認:
kextstat | grep intel

起動していたらもにゃもにゃっと文字列が表示されます。起動していなかったら何も表示されません。
Intel HAXMが正常に動作している場合、コマンドには、 "com.intel.kext.intelhaxm"という名前のカーネル拡張がロードされていることを示すステータスメッセージが表示されます。

 

HAXMを停止:
sudo kextunload -b com.intel.kext.intelhaxm

HAXMを開始:
sudo kextload -b com.intel.kext.intelhaxm

 

↓HAXMインストーラーの説明ページより

Installation Instructions for Intel® Hardware Accelerated Execution Manager - macOS* | Intel® Software