メモメモメモ

ほんとうにめも

【Laravel】validationエラーの情報はちゃんとObjectで返ってきてるぞ!

Laravelで用意されている通常のvalidation機能

laravel.com

を使うと、フロントエンドでエラーメッセージ等の詳細情報を取得できないのかと思って焦っていた。 そのとき僕は以下のようにエラーハンドリングしていた(つまりしてないw)

        .then((data) => {
          }).catch(err => {
            console.error(err)
          })

すると、consoleには以下のように表示された f:id:yooska14:20181124154102p:plain ので、文字列が返ってきているものとばかり思っていた。

解決方法

しかし、

        }).catch(err => {
          console.log(err.response)
        })

このようにerr.responseをdumpしてみるとエラー情報の詳細がオブジェクトに格納されていることが確認できた。 f:id:yooska14:20181124154423p:plain LaravelというよりもChrome Consoleの仕様でこのような表記になっていたみたい。よく考えたら通常の文字列表示とは違かったので気づけなかったのが悔しい。

【HTML】required属性を無視する一番楽な方法

とあるプロジェクトでフォームの一時保存機能を実装していたときに見つけた。

submitボタンにformnovalidate属性を付けると、そのボタンを押下して送信された場合はrequiredmaxlengthなどを無視してくれる。

まさに一時保存機能を実装するときの為にあるような機能。

参考

stackoverflow.com

【ReactNaitve】Androidアプリのpackage名を変える

package名を変える理由

kang.hateblo.jp のようにアプリの引き継ぎ作業をしていた。あーだこーだしていざ、APKファイルをアップロード!というところで

APK または Android App Bundle のパッケージ名は「●●●」とする必要があります。 と言われてしまった。 f:id:yooska14:20181105161150p:plain

APKファイルの名前ではなくpackage名を変更しなければならなかったのでメモ。

Androidアプリのpackage名とは

アプリ固有のIDのようなもの。 iOSで言うbundle id Dropboxの場合はcom.dropbox.androidで、リバースドメインドメインを逆にしたやつ)プラス末尾にandroidをつける的な命名が一般的みたい。(これはiOSのbundle idでも同じ。)

手順(変更箇所)

変更ファイルは app/build.gradle app/src/main/AndroidManifest.xml

の2つ。 app/build.gradleは defaultConfigの中にあるapplicationIdを変更する。こんな感じ。

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "your_package_name"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
    }

app/src/main/AndroidManifest.xmlは最上部の

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

この部分を変更する。

以上!

【ReactNative】Androidの証明書(keystore)を引き継ぐ

概要

基本的には通常通りで変わらない。 kang.hateblo.jp ↑の通りでリリースできるはず。 しかし、過去にリリースしたアプリで使っていた証明書を引き継ぎする必要があったのでその手順をメモ。

流れ

  1. keystoreを置き換える
  2. gradle.propertiesを書き換える

1. keystoreを置き換える

過去アプリのkeystoreをもらい、android/app/に置く。

2. gradle.propertiesを書き換える

置いたkeystoreのファイル名をgradle.propertiesMYAPP_RELEASE_STORE_FILEキーに書く。 passwordもMYAPP_RELEASE_STORE_PASSWORD``MYAPP_RELEASE_KEY_PASSWORDに書く。

以上!

誰か助けて

keystoreを無くしちゃった場合とかってアプリの履歴そのままで再発行できたりするのかな。。。

【ReactNative】Androidビルドエラー②

エラー

error: failed linking references.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-youtube:verifyReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

解決方法

android/build.gradleに以下を追加

    subprojects {
        afterEvaluate {project ->
            if (project.hasProperty("android")) {
                android {
                    compileSdkVersion rootProject.ext.compileSdkVersion
                    buildToolsVersion rootProject.ext.buildToolsVersion
                }
            }
        }
    }

参考

stackoverflow.com

追記

build.gradleもといgradle自体を全然理解してなかったのですごくつまづいた。 gradleについては以下が参考になった。 qiita.com

【ReactNative】Androidビルドエラー①

react-native run-androidを実行すると以下のエラーが発生した。

* What went wrong:
Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
> Could not create service of type FileHasher using BuildSessionScopeServices.createFileSnapshotter().

ググっても解決しなかったので色々探ってみたところ、your_project/android/.gradleというディレクトリを発見した。 .gitignoreされているのでこれはCacheファイルかな?と考えたときにピンときた。

キャッシュを削除してみてなかっった!!!!

案の定、.gradleはcacheディレクトリだったので、ディレクトリごと削除して再度react-native run-androidを実行したらBUILD SUCCESSFULの嬉しいレスポンスが返ってきた。

追記

cacheクリアは方法としては ./gradlew clean cleanBuildCache の実行が普通みたいだが、今回はそれもまた同じエラーになってしまった。 適当に新規プロジェクトを作成してみて、作成段階では.gradleディレクトリが存在しなかったので、削除しても自動生成されるだろうと確信したので、ディレクトリごと削除してみたら当たった。