nodejs を最新版をインストールする

nodejs を最新版をインストールする

npm からinstallしたnodejsが古い場合が多い

  • npm をアップデートとする
npm install npm
  • nをインストールする
npm install n
  • stable版nodejsをインストール
n stable

windows - linux 間のファイル共有

smb環境構築

windows - linux 間でファイルのやり取りを行うためにsmbを使う

  • まずはsambaのインストールを行う
sudo apt install samba
  • smbの起動
sudo service smbd start
  • ユーザーとパスワードの設定
sudo smbpasswd -a USERNAME  
  • 共有するフォルダの設定
[share]
path = 共有するフォルダpath
public = yes
writable = yes
printable = no
  • smbのリスタート
sudo service smbd restart

axmlでintellisenseが有効にならない

axmlでintellisenseが有効にならなかったので有効になるようにする方法

基本的にこちら
Android .axml ファイルでは、Intellisense を有効にする方法は? - Xamarin | Microsoft Docs

ただ
android-layout-xml.xsd
schemas.android.com.apk.res.android.xsd
が見つからなかったのでGithubから

GitHub - atsushieno/monodroid-schema-gen: IT IS A DEAD PROJECT, obsoleted by https://github.com/atsushieno/xamarin-android-shema-generator

android-layout-xml.xsd、schemas.android.com.apk.res.android.xsdを以下のフォルダに保存
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Xml\Schemas

xml -> shcemaから先ほど追加したファイルを有効にする
f:id:mo121_7:20180502211750p:plain

そうするとintellisenseが有効になります f:id:mo121_7:20180502211019p:plain

CS1056 Unexpected character '[]' を回避する

ASP.NET core でプロジェクトを作成し、Buildした際CS1056 が発生した
f:id:mo121_7:20180423213946p:plain

C:\Users\ユーザー名\AppData\Local\Tempのフォルダーに.NETCoreApp,Version=v2.0.AssemblyAttributes.csが 作成されているのでこれを削除し、ReBuildを行うとエラーができなくなった

IntelliJでjarを作成

Intellijでjarを作る方法がわからなかったので調べました

今回ビルドしたのはこれです!

contrib-drivers/bmx280 at master · androidthings/contrib-drivers · GitHub

File -> Project Structure f:id:mo121_7:20171203021435p:plain

Artifacts -> Add -> JAR -> From modules with dependencies
f:id:mo121_7:20171203021435p:plain

f:id:mo121_7:20171203021544p:plain

Build -> Build Artifacts
f:id:mo121_7:20171203021812p:plain

f:id:mo121_7:20171203021842p:plain

これでビルドができます

Ubuntu環境構築

Ubuntu16.04でangularの環境構築をしました

基本的には

npm install -g @angular/cli

のみでOKです。

ただし、nodejsのバージョンが古い場合はインスールでこけてしまうようです。

nodejsのアップデートを行えば正常にインスールが完了します。

nodejsのアップデート方法は

npm install -g n
n stable

で最新のnodejsがインスールできます。

Toolbarの表示

Toolbarの表示について書こうと思います。

C# - Xamarin.AndoridでToolbarの表示(88458)|teratail

質問をここに投げていましたが自己解決しました。

https://developer.xamarin.com/guides/android/user_interface/toolbar/part-1-replacing-the-action-bar/
最初はここを参考に書こうと思っていたのですが、全然動かない という状態になりました。

調べたら現在はToolbarからandroid.support.v7.widget.Toolbarに変更されているようです。で、このandroid.support.v7.widget.ToolbarですがXamarin標準では入っていないようです.

そこでNugetからXamarin.Android.Support.V7.AppCompatをインストールしてきます。 ちなみにXamarin.Android.Support.Designを入れるといろいろインストールされるの便利です(?) 入れたあとにクリーンとビルドするがおすすめ

本題

layout\Main.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</LinearLayout>

values\styles.xml

<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <style name="MyTheme" parent="MyTheme.Base">
    </style>
    <style name="MyTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">#2196F3</item>
        <item name="colorPrimaryDark">#1976D2</item>
        <item name="colorAccent">#FF4081</item>
    </style>
</resources>

values-v21\stles.xml

<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <style name="MyTheme" parent="MyTheme.Base">
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowAllowEnterTransitionOverlap">true</item>
        <item name="android:windowAllowReturnTransitionOverlap">true</item>
        <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
        <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    </style>
</resources>

MainActivity.cs

using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Toolbar = Android.Support.V7.Widget.Toolbar;

namespace App2.Droid
{
    [Activity (Label = "App2.Android", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : AppCompatActivity
    {

        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);
            Toolbar toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);
            SupportActionBar.Title = "My Toolbar";
        }
    }
}

これだけで動きそう…

Unhandled Exception:

Java.Lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false } occurred

残念でした.デプロイ時SetContentViewで例外が発生して動かない

対策

Androidのトレーニングサイト(https://developer.android.com/training/appbar/setting-up.html)に次のように書かれていました

<application
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    />

これをAndroidManifestに書けば動く!? ビルド時にエラーが出ましたね

Working with AndroidManifest.xml - Xamarin
ここを見るとapplicationタグはAssemblyInfoに書けばいいみたいです。

[assembly: Application(Theme = "@style/Theme.AppCompat.Light.NoActionBar")]

今回苦しんだ点

Andoridの知識のなさが今回一番苦しみました。もっとAndoridと仲良くなるためにもう1台端末がほしいな()
あとXamarini.Androidが更新されていないというにも苦しみましたね。 今後どんどんXamarin.Andoirdについて書いて行こうと思います