20190411のAndroidに関する記事は9件です。

DroidKaigi2019 - Android Studio 設定見直してみませんか?のアウトプット

DroidKaigi2019の公開されている動画を見てて
「おーこれは使えそう」という機能がいくつかあったので記録に残す

動画

DroidKaigi 2019 - Android Studio 設定見直してみませんか? / shiraji [JA] - YouTube
https://www.youtube.com/watch?v=MV14DDxv6DE

セッション内容

  • 自分専用のアクションリストを作ってみる
  • !=をカッコ良く
  • 通知周り
  • File Color
  • Kotlinのファイルフォーマット忘れ防止
  • 急に別の言語書きたくなった時のストレス発散方法
  • JSON書きやすくする
  • Run Configurationや.ideaの共有
  • Layout Editor
  • Pluginのインストールの強制

自分専用のアクションリストを作ってみる

Quick lists
自分専用のポップアップが作ることができ、Android Studioの機能を自由に追加できる。

スクリーンショット 2019-04-12 7.16.38.png

keymapを追加すると簡単に呼び出せる (⌘ + option + iを設定中)
スクリーンショット 2019-04-12 7.20.18.png

⌘ + option + i を押すとポップアップが出る
スクリーンショット 2019-04-12 7.22.31.png

設定パス

Preferences | Appearance & Behavior | Quick Lists

感想

なかなか便利!
ショートカットがない機能を追加して使用する、あるいはショートカットを覚えられない機能の使用に使えそう。

!=をカッコ良く

fontの話
Android Studioのフォントを変えて != や == を直感的に表示する

感想

いらないかな

通知周り

Android Studioの特定の処理が終わったらNotificationを表示できる
Gradle syncをBalloonにすると、Syncが終わったらバルーンで通知がでる

スクリーンショット 2019-04-12 7.09.02.png

設定パス

Preferences | Appearance & Behavior | Notifications

感想

なかなか便利そう
Syncが終わったのに気付かずQiitaを見続けることがなくなる(はず)

File Color

バンドルの環境別にファイル/タブの色をかえれる
Debugのファイルを編集したかったのに、Releaseを編集していた、というミスがなくなる

スクリーンショット 2019-04-12 7.34.00.png

設定パス

Preferences | Appearance & Behavior | File Colors

感想

これはぜひ導入したい
(たまにやらかしてたりするし)

Kotlinのファイルフォーマット忘れ防止

コード書いてる途中のフォーマット未適用のコードに警告やエラーを表示できる。

設定パス

Preferences | Editor | Inspections
Kotlin > Style issues > File is no formatted according to project settings
をEnableにして、色をError(赤)に設定する
未フォーマットのコードがエラー表示になる

スクリーンショット 2019-04-12 7.36.47.png

コードの色をWarningにした場合
スクリーンショット 2019-04-12 7.40.57.png
未フォーマット箇所が黄色になっている

感想

まあまあ便利
色をエラー(赤)にすると、コードのエラーなのか未フォーマットなのか区別つかず分かりにくい。
Warning(黄)表示にするといいかもしれない

フォーマット対象外にしたい時

Preferences | Editor | Code Style
Enable formatter markers in comments をEnableにする

break point

Conditionでブレークポイントが止まる条件を指定できるが、簡単に消せてしまうので、それを防ぐ設定がある

設定パス

Preferences | Build, Execution, Deployment | Debugger
Confirm removal of conditional or logging breakpoints をEnableにする
これで式があるブレークポイントを消す時に確認ポップアップがでる

スクリーンショット 2019-04-12 7.43.47.png

感想

これは便利、常時Enableでも害はなさそう

JSON書きやすくする

String変数をJsonとして扱いたい時、inject laungageで便利に修正できるようになる。
例えばこんなコード

var json = "{ \"name\":\"ikemura\",\"github\":\"@ikemura\" } "

文字にカーソルを当ててoption + enter
ポップアップが出たら inject laungage or reference を選んでEnter(▶でメニューを展開させないで)
JSONを選ぶ

これでこの文字列はJsonとしてIDEに認識される
何が便利かというと、Android StudioでJsonのエディタが使えるようになる
Json化した変数の文字の上でoption + Enter

Edit JSON Fragment を選択すると、JSON Fragmentというエディタが表示される
スクリーンショット 2019-04-12 7.47.21.png
JSON Fragmentで項目を追加すると自動で文字がエスケープされるので便利
ダブルクォーテーションも勝手につけてくれるしね

ソースコード上では普通の文字列と見た目が変わらないので、@Language("JSON")を追加する

@Language("JSON") var json = "{ \"name\":\"ikemura\",\"github\":\"@ikemura23\" } "

この @Language("JSON") を自動で追加する設定を有効にするには
Preferences | Editor | Language Injections | Advanced
Add @Launguage annotation or comment if needed を Enableにする
これでinject laungageをすると、@Language("JSON")が自動で付与される

感想

めちゃ便利そう
Jsonを扱う機会がたまにあるので、その時に真価を発揮するかも

Layout Editor

下タブのTextタブが左にくる、Designタブが右になる(順が入れ替わる)

スクリーンショット 2019-04-12 7.52.41.png

設定パス

Preferences | Editor | Layout Editor
Prefer XML editor をEnableにする

感想

地味な変更だが、これは良い
初めにレイアウトxmlを開くとDesignタブが勝手にひらいて「お前じゃない、俺はTextタブがみたいんだ!」となることを防げる。

copy preferences

Android Studioの設定をひらき、左のメニューの上で右クリックすると
Copy Preferences path をクリックする
設定のパスがクリップボードにコピーされる

スクリーンショット 2019-04-12 7.54.17.png

感想

この動画で一番の収穫
これで設定場所をスクショで保存する場面が減る
深い設定場所まではコピーできないので、スクショが必要な場面もある

Pluginのインストールの強制

Android Studioを起動すると、足りないプラグインをインストールするポップアップがでる
Event Logにもエラーログが出る

設定パス

Preferences | Build, Execution, Deployment | Required Plugins
+でプラグインを選択して、追加

感想

そこまで設定するならPluginを直接インストールしたらいいのに、と思うかもしれないが、
おそらくAndroid Studioの設定ファイルをチームメンバーに共有して、Plugin使用を義務付けたり、簡単にPluginをシェアする際に便利なんだろうなと。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AndroidStudioのエミュレーターを作る

なんとなく最近の検索事情を調べていたら、『あ!この記事書きたいカモ!』と思ったので書いてみました。(。・ω・。)

さあ!やって見よう!『AndroidStudioのエミュレーターを作る(作成する)』の会!

ちなみにAndroidStudioのエミュレーターを作りたいのシチュエーションとして
『あ〜code書いたなー!再生。再生っと!あれ、何もない!!』
って感じと思ってます。

作らないといけないので作りましょう!では早速!!

端末を決める

・再生ボタン押すとまず出てくる画面
スクリーンショット 2019-04-11 22.18.16.png

・ないはずなので、『Create New Virtual Device』をタップ
ここに表示されているものですか?以前私が作ったものです。一番上は今使っているもの。
今はここに何もないことにしてください。何もありません。
スクリーンショット 2019-04-11 22.19.23.png

・好きな端末選ぶ
Androidユーザーじゃないとこれ??って思うかもしれませんがAndroidにはiPhoneと違い色々な会社がおのおのにデバイス作っているのでそれを選んであげてください!
選びたい放題です!!

スクリーンショット 2019-04-11 22.28.19.png

OS決める

・次にその端末で使うOSを決めます
携帯でも、なんでもバージョンとやらがあるじゃないですか?それです!!
最新はどうやら『Q』なのかと思いますが、とりあえずLevel(バージョン)を一つ下げて『API Level 28』を使用することにしました!!
『Pie』とか言うやつです!!
スクリーンショット 2019-04-11 22.35.46.png

バージョンが今まだない状態なのでその隣の青文字『Download』タップでバージョンのダウンロードが開始されます。時間かかることもあります。その時は気長に待ちましょう!!

・『Finish』する
ダウンロードが終わると『Finish』が押せるようになるのでタップして、フィニッシュしちゃってください。
スクリーンショット 2019-04-11 22.57.49.png

・OS選択して『Next』
スクリーンショット 2019-04-11 23.01.47.png

合体させる!

・名前はそのままで『Next』
いい感じに名前付いているので編集しないでそのまま『Next』でいいと思います。
スクリーンショット 2019-04-11 23.05.34.png

あとは少し待てば…完成!!!!!
スクリーンショット 2019-04-11 23.10.59.png

後は、選択して『OK』をタップすると起動します!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unityのandroidバイナリのgradleビルドで、DexArchiveMergeExceptionが出た時の対処法

はじめに

UnityのAndroid gradleビルドで下画像のようなDexArchiveMergeExceptionが出た時の
対処法を示します。
unitybuildfailer.png

なぜこのエラーが出るのか

Unityで色々なpluginなどを入れていくと、プラグイン用のgradleのファイルであるmainTemplate.gradleなどに書いてあるダウンロードモジュールと、他のpluginのjarファイルや、たのgradleファイルのテンプレートと衝突してしまうことが起こり、このエラーが起きてしまうようである。

解決方法

  • 手順1
    Unityでビルドする際、Build Settingのところで、Export Projectにチェックを入れ Android Studio用のプロジェクトを生成する スクリーンショット 2019-04-11 22.25.01.png
  • 手順2
    Android Stdudioで先ほど出力したプロジェクトを開いておく、Android StuidoのPreferencesのところでKotlin Compilerの所を選択し 下の画像のように
    Additional command line parameters
    --info
    -stacktrace
    を追加する スクリーンショット 2019-04-11 22.31.17.png
  • 手順3
    手順2で開いていたプロジェクトをMake Projectでビルドすると下の画像のようなエラー(今回の場合は、support.v4ライブラリが原因であったことがわかる)が表示され、モジュールが多重定義されていたことがわかる。 スクリーンショット 2019-04-11 22.05.31.png
  • 手順4
    Unityのほうに戻り、mainTemplateを編集するなり、重複しているjarなりaarなりを削除する。

終わりに

今回のAndroid Stduioのほうにビルドでしてみてエラーを解決する方法は、他のエラーを除去
するテクニックにも使えるかもしれません。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gsonはデフォルトではnullなフィールドをシリアライズしない

調べたのでメモ。

題名の通り、GsonはオブジェクトをJSONに変換する際、デフォルトではnullのフィールドをシリアライズしない。

nullのフィールドをシリアライズしたい場合、 GsonBuilder#serializeNulls() を使用する。

サンプルコード

MainActivity.kt
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val data = Data("nonnull", "nullable", null)

        val gson1 = Gson()
        val json1 = gson1.toJson(data)
        Log.d(TAG, json1)
        // => {"nonNullProp":"nonnull","nullableProp1":"nullable"}

        val gson2 = GsonBuilder().serializeNulls().create()
        val json2 = gson2.toJson(data)
        Log.d(TAG, json2)
        // => {"nonNullProp":"nonnull","nullableProp1":"nullable","nullableProp2":null}
    }

    data class Data(
        val nonNullProp: String,
        val nullableProp1: String?,
        val nullableProp2: String?
    )

    companion object {
        private const val TAG = "MainActivity"
    }
}

参考URL

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

android lintで javax.xml.bind.JAXBException がでる

新しいPCを手に入れたぞ! (社用)

AndroidLintをCIに入れようと思って、ローカルでLintを回そうとしたら謎のエラーが出て詰まった。

./gradlew lint --stacktrace
...(省略)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException

Android Studioのinspectは通るのになんでや...

と小一時間調べた結果、ローカル環境でPathが通っているJavaのバージョンがよくないらしい。
https://sun0range.com/information-technology/jaxb-exception

Android StudioはビルトインのJavaを使っているからIDEでのInspectは問題ないけど、
gradlewスクリプトで実行するとグルーバルにPATHが通っているJavaが使われるのかな?

対処方法

以下を参考にJavaのバージョン下げた。

https://qiita.com/seijikohara/items/56cc4ac83ef9d686fab2

jenvとか使えばここら辺楽になるのかしら。。。

(javaのバージョン管理システムって使いづらかった印象あるから入れてない)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【2019年4月版】NativeScript+Angularで新時代を感じた

NativeScript でハイブリッドアプリの開発に入門してみました。

ちょっと興奮冷めやらぬ感じですが、NativeScript で Angular のサンプルを Android で動かしてみたらこれはもうもってかれた感すごかったのでご紹介いたします。(語彙力)

対象環境

  • PC: Windows 10 Pro
  • スマホ: Android
  • IDE: VSCode

今回は Android スマホで動作確認しましたが、たぶん iOS も同様の手順で大丈夫かと思います。
また、環境構築で例によって管理者権限でコマンドプロンプトを実行する必要あります。

NativeScript の環境構築

管理者権限でコマンドプロンプトを立ち上げ、以下のコマンドを叩きます。

> @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://www.nativescript.org/setup/win'))"

インストールの確認が出るので適宜 yを指定してください。めんどくさい場合はaを指定して都度の確認をスキップできます。
最後の AVD の確認だけは別途、yが必要でした。
上記のスクリプトで事前に必要な環境はすべてインストールしてくれるはずです。(あら便利。。。)

いったんコマンドプロンプトを終了し、再度、管理者権限でコマンドプロンプトを立ち上げます。
以下のコマンドで、NativeScript本体のインストールを行います。

> npm i -g nativescript
> tns doctor

tnsコマンドが見つからない旨のエラーが発生した場合はコマンドプロンプトを再度立ち上げなおしてみてください。
tns doctorで必要な環境が整っているかチェックしてくれます。とくに文句がないようであればVSCodeを立ち上げてさっそく開発モードに入りましょう。

Angular でのサンプルプロジェクトの作成

VSCodeのターミナルを起動し、以下のコマンドでさっそく最初のNativeScrit+Angular アプリを作成しましょう!

$ tns create my-angular-app --ng

プロジェクト作成時に「匿名の使用状況送信していいですか~?」って聞かれるのでnとしておきます。

プロジェクトが作成し終わったら表示されるご案内の通りに以下のコマンドを入力します。

$ cd my-angular-app
$ tns preview

しばらくすると・・・で、でっかいQRコードが表示されました?!

nativescript_QRコードスクショ.png

マジすか?w

ただし、ご案内をよく読むと "NativeScript Playgroud アプリをインストールしてね!" ってことなので、渋々従います。(以降、私は Android 版をダウンロードして確認してますが、iOSでも同様かと思います。)

GoogleのストアからNativeScriptを検索してNativeScript Playgroudアプリをインストール(・・・自分で検索しなきゃダメなの?)
しばらくしてダウンロードが終わり、NativeScript PlaygroudアプリからQRコードを読み込ませると、"NativeScript Preview App を入れてね!"と案内が出ます。(いや、先に言えってw)

渋々従います。再び、GoogleのストアからNativeScript Previewアプリをインストールします。しばらくして、ダウンロードが終わると勝手に何かが立ち上がり・・・

55937956-3284be00-5c75-11e9-914f-01b8735231a3.jpg

ん??なんか出た?

最初は意味が分かりませんでしたが・・・

しばらくして、以下のコードを発見しました。

  function ItemService() {
    this.items = new Array(
      { id: 1, name: 'Ter Stegen', role: 'Goalkeeper' },
      { id: 3, name: 'Piqué', role: 'Defender' },
      { id: 4, name: 'I. Rakitic', role: 'Midfielder' },
      { id: 5, name: 'Sergio', role: 'Midfielder' },
      { id: 6, name: 'Denis Suárez', role: 'Midfielder' },
      { id: 7, name: 'Arda', role: 'Midfielder' },
...

え・・・ウソ。。。このリストが自分のスマホに出てる・・・?

半信半疑で以下のようにリストを変えてみます。

item.service.ts
...
        { id: 7, name: 'Arda', role: 'Midfielder' },
        { id: 8, name: 'A. Iniesta', role: 'Midfielder' },
        { id: 9, name: 'スアレス', role: 'Forward' },
        { id: 10, name: 'メッシ', role: 'Forward' },
        { id: 11, name: 'ネイマール', role: 'Forward' },
        { id: 12, name: 'Rafinha', role: 'Midfielder' },
        { id: 13, name: 'Cillessen', role: 'Goalkeeper' },
...

Ctrl+Sでファイルを保存すると・・・
直ちにAndroid側のPreviewアプリが勝手に再起動?し・・・

55937971-3b758f80-5c75-11e9-9049-407f0fe60872.jpg

変わってるーーーーーーーーーーーーー!!!!!w
えっ?!ちょっ!?ナニコレ!?

試しにスアレスをタップしてみると・・・

55940893-0456ac80-5c7c-11e9-9316-0d752066a853.jpg

しょ・・・詳細画面、出てる!!!

何回か試しましたが、PC画面でVSCodeでリストを更新しCtrl+Sをすると、手元のAndroidのPreviewアプリに即座に反映されます。。。

ビュー側の更新も・・・

items.component.html
<ActionBar title="FCバルサのリスト" class="action-bar"> </ActionBar>

Ctrl+Sで、ポンっと!
55943419-89909000-5c81-11e9-85f1-69c0befca337.jpg

こちらはアプリの再起動なしで、表示がアップデートされてます。。。
なんか、完全に新時代来ちゃってるわ・・・

よし!と、とりあえずこの興奮をQiitaにぶん投げておこう!(←イマココ)

というわけで引き続きいろいろ試してみたいと思います!!

本家サイトのセットアップ手順について

以下の本家サイトにWindowsでのセットアップ手順が書かれていましたが・・・
- https://docs.nativescript.org/angular/start/ns-setup-win

最終的には、というか手順の途中で必要なsetupスクリプトが404になっていました。
そこでgithubのsetup-scriptをリポジトリを確認してみると・・・
- https://github.com/NativeScript/setup-scripts

実際のスクリプトは以下ですが、なにやらChocolateygooglechromeもインストールしています。
https://github.com/NativeScript/setup-scripts/blob/master/native-script.ps1

これはセットアップ手順に書いてあったPrerequiresそのまんまじゃないですかー。
README.md に

for Windows: @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://www.nativescript.org/setup/win'))"

とありますので、はい・・・これでOKよ、ということらしいです。

iOSもここにrubyのスクリプトがありますのでサクッとインストールできるかと思います。

それでは、実験に戻りたいと思います!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【2019年4月版】NativeScript+Angularで感じた新時代

NativeScript でハイブリッドアプリの開発に入門してみました。

ちょっと興奮冷めやらぬ感じですが、NativeScript で Angular のサンプルを Android で動かしてみたらこれはもうもってかれた感すごかったのでご紹介いたします。(語彙力)

対象環境

  • PC: Windows 10 Pro
  • スマホ: Android
  • IDE: VSCode

今回は Android スマホで動作確認しましたが、たぶん iOS も同様の手順で大丈夫かと思います。
また、環境構築で例によって管理者権限でコマンドプロンプトを実行する必要あります。

NativeScript の環境構築

管理者権限でコマンドプロンプトを立ち上げ、以下のコマンドを叩きます。

> @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://www.nativescript.org/setup/win'))"

インストールの確認が出るので適宜 yを指定してください。めんどくさい場合はaを指定して都度の確認をスキップできます。
最後の AVD の確認だけは別途、yが必要でした。
上記のスクリプトで事前に必要な環境はすべてインストールしてくれるはずです。(あら便利。。。)

いったんコマンドプロンプトを終了し、再度、管理者権限でコマンドプロンプトを立ち上げます。
以下のコマンドで、NativeScript本体のインストールを行います。

> npm i -g nativescript
> tns doctor

tnsコマンドが見つからない旨のエラーが発生した場合はコマンドプロンプトを再度立ち上げなおしてみてください。
tns doctorで必要な環境が整っているかチェックしてくれます。とくに文句がないようであればVSCodeを立ち上げてさっそく開発モードに入りましょう。

Angular でのサンプルプロジェクトの作成

VSCodeのターミナルを起動し、以下のコマンドでさっそく最初のNativeScrit+Angular アプリを作成しましょう!

$ tns create my-angular-app --ng

プロジェクト作成時に「匿名の使用状況送信していいですか~?」って聞かれるのでnとしておきます。

プロジェクトが作成し終わったら表示されるご案内の通りに以下のコマンドを入力します。

$ cd my-angular-app
$ tns preview

しばらくすると・・・で、でっかいQRコードが表示されました?!

nativescript_QRコードスクショ.png

マジすか?w

ただし、ご案内をよく読むと "NativeScript Playgroud アプリをインストールしてね!" ってことなので、渋々従います。(以降、私は Android 版をダウンロードして確認してますが、iOSでも同様かと思います。)

GoogleのストアからNativeScriptを検索してNativeScript Playgroudアプリをインストール(・・・自分で検索しなきゃダメなの?)
しばらくしてダウンロードが終わり、NativeScript PlaygroudアプリからQRコードを読み込ませると、"NativeScript Preview App を入れてね!"と案内が出ます。(いや、先に言えってw)

渋々従います。再び、GoogleのストアからNativeScript Previewアプリをインストールします。しばらくして、ダウンロードが終わると勝手に何かが立ち上がり・・・

55937956-3284be00-5c75-11e9-914f-01b8735231a3.jpg

ん??なんか出た?

最初は意味が分かりませんでしたが・・・

しばらくして、以下のコードを発見しました。

  function ItemService() {
    this.items = new Array(
      { id: 1, name: 'Ter Stegen', role: 'Goalkeeper' },
      { id: 3, name: 'Piqué', role: 'Defender' },
      { id: 4, name: 'I. Rakitic', role: 'Midfielder' },
      { id: 5, name: 'Sergio', role: 'Midfielder' },
      { id: 6, name: 'Denis Suárez', role: 'Midfielder' },
      { id: 7, name: 'Arda', role: 'Midfielder' },
...

え・・・ウソ。。。このリストが自分のスマホに出てる・・・?

半信半疑で以下のようにリストを変えてみます。

item.service.ts
...
        { id: 7, name: 'Arda', role: 'Midfielder' },
        { id: 8, name: 'A. Iniesta', role: 'Midfielder' },
        { id: 9, name: 'スアレス', role: 'Forward' },
        { id: 10, name: 'メッシ', role: 'Forward' },
        { id: 11, name: 'ネイマール', role: 'Forward' },
        { id: 12, name: 'Rafinha', role: 'Midfielder' },
        { id: 13, name: 'Cillessen', role: 'Goalkeeper' },
...

Ctrl+Sでファイルを保存すると・・・
直ちにAndroid側のPreviewアプリが勝手に再起動?し・・・

55937971-3b758f80-5c75-11e9-9049-407f0fe60872.jpg

変わってるーーーーーーーーーーーーー!!!!!w
えっ?!ちょっ!?ナニコレ!?

試しにスアレスをタップしてみると・・・

55940893-0456ac80-5c7c-11e9-9316-0d752066a853.jpg

しょ・・・詳細画面、出てる!!!

何回か試しましたが、PC画面でVSCodeでリストを更新しCtrl+Sをすると、手元のAndroidのPreviewアプリに即座に反映されます。。。

ビュー側の更新も・・・

items.component.html
<ActionBar title="FCバルサのリスト" class="action-bar"> </ActionBar>

Ctrl+Sで、ポンっと!
55943419-89909000-5c81-11e9-85f1-69c0befca337.jpg

こちらはアプリの再起動なしで、表示がアップデートされてます。。。
なんか、完全に新時代来ちゃってるわ・・・

よし!と、とりあえずこの興奮をQiitaにぶん投げておこう!(←イマココ)

というわけで引き続きいろいろ試してみたいと思います!!

本家サイトのセットアップ手順について

以下の本家サイトにWindowsでのセットアップ手順が書かれていましたが・・・
- https://docs.nativescript.org/angular/start/ns-setup-win

最終的には、というか手順の途中で必要なsetupスクリプトが404になっていました。
そこでgithubのsetup-scriptをリポジトリを確認してみると・・・
- https://github.com/NativeScript/setup-scripts

実際のスクリプトは以下ですが、なにやらChocolateygooglechromeもインストールしています。
https://github.com/NativeScript/setup-scripts/blob/master/native-script.ps1

これはセットアップ手順に書いてあったPrerequiresそのまんまじゃないですかー。
README.md に

for Windows: @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://www.nativescript.org/setup/win'))"

とありますので、はい・・・これでOKよ、ということらしいです。

iOSもここにrubyのスクリプトがありますのでサクッとインストールできるかと思います。

それでは、実験に戻りたいと思います!

ビルドの手順について追記

Playgroundアプリで遊んだだけではダメなので、ちゃんとパッケージとしてビルドしましょう。

はい、以下のコマンドです。

$ tns build android

もしくは、

$ tns build ios

で、my-angular-app\platforms\android\app\build\outputs\apk\debug\app-debug.apkが出力されます。

なんか・・・いろいろ、大変だったのになぁ。。。

ここで紹介したtnsコマンドの使い方は以下のnpmサイトに載っています。

いや、ホント、進化してるのね・・・

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

android abd shell で Permission denied がでて見れないざます

android開発していた必ず一度はハマっことがあるのではないでしょうか?

abd shellで /data/dataとcdするとそのあとなにもできない。

./adb shell
generic_x86:/ $ cd /data
generic_x86:/data $ cd data
generic_x86:/data/data $ ls
ls: .: Permission denied
1|generic_x86:/data/data $

そんなときはこれ

1|generic_x86:/data/data $ run-as (パッケージ名)
generic_x86:/data/data/(パッケージ名) $ ls
cache code_cache databases files shared_prefs

見れた。よかったよかった。。


パッケージ名はMainActivitiyの一番上の

package xxxxxxx

または
android manifestの

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxxxx">

ここら辺をみればわかります。 ※xxxxxのぶぶんですね。
だいたい。 com.example.システム名 とかになってんじゃないですかね?

例)
package="com.example.hoge" なら、コマンドは
run-as com.example.hoge ですね。

では。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

android PreferenceFragmentCompatのEditTextPreferenceを改行させないようにする方法

なかなか調べても出てこなかったので、
EditTextPreferenceで改行ができてしまい、すこし操作性が悪かったので
改行をできなくするようにする方法です。

というよりはDialogで呼ばれるEditTextのレイアウトを指定する方法です。

preferences.xml

<EditTextPreference
      android:dialogLayout="@xml/prefernce_custom_edittext"
      android:key="userName"
      android:title="ユーザー名" />

android:dialogLayoutを設定します。

prefernce_custom_edittext.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@android:id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="18dp"
        android:paddingRight="18dp"
        android:inputType="text|textNoSuggestions" />

</LinearLayout>

これで普段扱っているように自由にカスタマイズできます。

スクリーンショット 2019-04-11 14.24.58.png

改行できない!よかったよかった!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む