【HTML】required属性を無視する一番楽な方法
とあるプロジェクトでフォームの一時保存
機能を実装していたときに見つけた。
submitボタンにformnovalidate属性を付けると、そのボタンを押下して送信された場合はrequired
やmaxlength
などを無視してくれる。
まさに一時保存
機能を実装するときの為にあるような機能。
参考
【ReactNaitve】Androidアプリのpackage名を変える
package名を変える理由
kang.hateblo.jp のようにアプリの引き継ぎ作業をしていた。あーだこーだしていざ、APKファイルをアップロード!というところで
APK または Android App Bundle のパッケージ名は「●●●」とする必要があります。
と言われてしまった。
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 ↑の通りでリリースできるはず。 しかし、過去にリリースしたアプリで使っていた証明書を引き継ぎする必要があったのでその手順をメモ。
流れ
- keystoreを置き換える
- gradle.propertiesを書き換える
1. keystoreを置き換える
過去アプリのkeystoreをもらい、android/app/
に置く。
2. gradle.propertiesを書き換える
置いたkeystoreのファイル名をgradle.properties
のMYAPP_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 } } } }
参考
追記
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
ディレクトリが存在しなかったので、削除しても自動生成されるだろうと確信したので、ディレクトリごと削除してみたら当たった。
【ReactNative】Androidで2回目以降のリリースフロー
だいたい開発中はiOSでStaging(TestFlight)まで上げてAndroidは後回しにするので忘れがちな自分のために備忘録を。
手順
- ビルドバージョンを変更
- リリースビルドを作成(APKファイルを生成)(CLIコマンド一発)
- APKファイルをGoogle Play ストアにアップロード
以上。 参考までに、これがiOSだと
になる。ほとんど変わらない。 ※iOSの場合は審査待ちがあるので比較的「スムーズに行かない」気分になる。
1. ビルドバージョンを変更
./android/app/build.gradle
defaultConfig { applicationId "your_app_id" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 2 // ここをincrement versionName "1.1" // ここもincrement ndk { abiFilters "armeabi-v7a", "x86" } }
versionCode
とversionName
がバージョンアップされていればOK。
ここを変えないと手順3で
バージョン コード 1 の APK が既に存在するため、別のバージョン コードを使用する必要がありますとなってAPKファイルをアップロードできない。
2. リリースビルドを作成(APKファイルを生成)
[project]/android
で
./gradlew assembleRelease
を実行する。
すると、[project]/android/app/build/outputs/apk/release
にapp-release.apk
ファイルが生成される。
このAPKファイルが、アプリ本体のようなものみたいです。
余談ですがAndroid端末からAPKを抽出して別端末へコピーとかもできるみたい。
3. APKファイルをGoogle Play ストアにアップロード
Google Play Console (https://play.google.com/apps/publish) へ行って、アプリを選択。
下画像にある左サイドバーの「リリース管理」 > 「アプリのリリース」へ移動し、
製品版トラックセクションで「APKファイルをアップロード」する。 あとはポチポチ進んだらすぐリリースできる(iOSと違って審査がないからすぐリリースできる)