はじめに
iOS開発でFirebaseのStorageとAuthを使おうとしたときに出たエラーが公式ページ見てもよくわからなかったのでメモして置きます。
[Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) to your application initialization. Read more: https://goo.gl/ctyzm8.
Firebaseの実装について公式
https://firebase.google.com/docs/ios/setup
対応
AppDelegateのinitへFirebaseコードを追加
override init() {
super.init()
FirebaseApp.configure()
Database.database().isPersistenceEnabled = true
}
これで治りました。applicationメソッドでFirebaseApp.configure()を試したのですがそれだと何故かうまく行かなかったです。
Firebaseの仕様も今年の6月に変わっているのでひとのブログとか参考にするとうまくいかないので注意です。
公式も日本語版の翻訳は速度が遅いのとあてにならないので英語版を読みましょう。
はじめに
Androidのライブラリを導入時にManifestファイルで競合が発生し、実行できなくなったので改善案をメモしてます。
エラー発生から解決まで
Androidのライブラリを導入時にManifestファイルでiconの競合たるエラーが発生しました。
恐らく、ライブラリとiconで競合しどちらを優先するべきかコンパイラがわからなくなってのエラーと思います。
エラー詳細:
Error:(9, 9) Attribute application@icon value=(@drawable/ic_launcher.png) from AndroidManifest.xml:9:9
Error:(9, 9) Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed : Attribute application@icon value=(@drawable/ic_launcher.png) from AndroidManifest.xml:9:9
is also present at com.github.example:1.0.0:13:9 value=(@drawable/ic_launcher)
Suggestion: add ‘tools:replace=”android:icon”‘ toelement at AndroidManifest.xml:7:5 to override
解決方法
エラー詳細に記載されている通り競合したプロジェクトのiconをreplaceすることで無事実行できました。
まずManifestファイルのmanifestタグを修正します
xmlns:tools=”http://schemas.android.com/tools”を追加します
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="hoge.piyo.xxx" xmlns:tools="http://schemas.android.com/tools">
次にManifestファイルのapplicationタグを修正します
tools:replace=”android:icon”の追加します
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" tools:replace="android:icon" android:theme="@style/AppTheme" >
ここまでで改善しました
はじめに
[git submodule add]コマンドを実行したときにエラー「A git directory for ‘[指定モジュール]‘ is found locally with remote(s):」が出たので解決案をメモします。
エラー発生から解決まで
こちら環境ではvolleyというandroidの通信ライブラリを導入時にエラーがでました。
フローとしては、最初の一回目のsubmodule化ではエラーにはなりません。一度入れたsubmoduleを削除するときに、[rm -rf]で単に削除し、再度[git submodule add]を行おうとするとエラーになります。
[git submodule add]で追加してgit上削除できていないものがあることでエラーが発生しています。
エラー内容:
A git directory for ‘lib/volley’ is found locally with remote(s):
origin https://android.googlesource.com/platform/frameworks/volley
If you want to reuse this local git directory instead of cloning again fromhttps://android.googlesource.com/platform/frameworks/volley
use the ‘–force’ option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the ‘–name’ option.
解決方法
不要な設定情報とファイルを手動で削除することで解決します
以下の3手順を全て実行してください
- .gitmodulesファイルから追加したモジュール情報を削除する
- .git/configファイルのモジュール情報を削除する
- .git/modules/配下にあるsubmodule化したリポジトリを削除する
ここまでで、再度[git submodule add]ができるようになりました
正しいsubmodule化したリポジトリの削除方法
そもそも削除の方法が悪かったようです。以下の方法で削除すれば上記のようなエラーにはならないはずです。
引用:
submoduleの削除
gitのバージョンが1.8.5以上なら以下の方法で出来る。
$ git submodule deinit <消したいsubmoduleへのパス>
$ git rm <消したいsubmoduleへのパス>
java.io.IOException: Cannot run program “sh”エラーの対応をメモ
シェルの実行で「ビルド実行」を行い、「コンソール出力」で確認するとエラーとなっている
[workspace] $ sh -xe C:\Windows\TEMP\hudson1301455313927193009.sh 指定されたファイルが見つかりません。 FATAL: コマンドの実行に失敗しました java.io.IOException: Cannot run program "sh" (in directory "C:\Jenkins\jobs\hello\workspace"): CreateProcess error=2, ?w?????t?@? at java.lang.ProcessBuilder.start(Unknown Source) at hudson.Proc$LocalProc.<init>(Proc.java:244) at hudson.Proc$LocalProc.<init>(Proc.java:216) at hudson.Launcher$LocalLauncher.launch(Launcher.java:780) at hudson.Launcher$ProcStarter.start(Launcher.java:360) at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:97) at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:772) at hudson.model.Build$BuildExecution.build(Build.java:199) at hudson.model.Build$BuildExecution.doRun(Build.java:160) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:535) at hudson.model.Run.execute(Run.java:1732) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:234) Caused by: java.io.IOException: CreateProcess error=2, ?w?????t?@? at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) ... 16 more Build step 'シェルの実行' marked build as failure Finished: FAILURE
GitBashを導入している場合にシェル実行exeのパスが通らなくなっている。※これ以外でもあるかも
Git配下のsh.exeをシェルのパスとしてJenkinsに通すことで改善される
解決
Jenkinsブラウザ画面より
Jenkinsの管理 >> システムの設定 >> シェル
シェル実行ファイル
C:\Program Files (x86)\Git\bin\sh.exe
※デフォルトインストール先(Windows7の場合)のため変更してる場合は確認すること
Jenkinsより「ビルド実行」
Finished: SUCCESS
実行シェルの結果の最後で「SUCCESS」になればOK
端末全体のシステムログを取得するためのコードをメモ
システムログを取得するためにはマニフェストファイルにandroid.permission.READ_LOGSパーミッションが必要
端末内のインストールされている標準出力のログも出力するため、アンドロイドのセキュリティチェックに使える
アプリを作るときも標準出力が読み取られることをセキュリティとして知っとく必要あり
try { Process process = Runtime.getRuntime().exec("logcat"); BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream())); String line = reader.readLine(); //1出力毎にループ while(line != null) { } } catch (Exception e) {}
エラー改善案をメモ
Androidからローカルサーバにアクセスするときにlocalhost指定の場合、
「org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused」エラー
となる。※127.0.0.1も同様エラー
IPアドレスを指定
ローカルPCには、10.0.2.2を指定する
MAMPでmysql起動しない場合の対応法をメモ
MAMPでmysqlがたまに起動しない場合があったが改善案がみつかった
プロセスが残ってしまっていることが原因。終了して再起動で復帰
プロセスを切断
killall -9 mysqld
opauthライブラリを使用してFacebook認証を実装する手順をメモ
[FuelPHP]opauthライブラリで速攻SNS認証(Twitter,Facebook,Google etc)で投稿しているopauthライブラリの実装方法について。
opauthはPHPのフレームワーク毎にパッケージ化されており、FuelPHPも既にパッケージ化されている。
https://github.com/andreoav/fuel-opauth
※バグ改修、コードリファクリングで何度か更新されているっぽい
一度大元となるFuelPHPのopauthパッケージをプロジェクトに導入すると、あとは各ストラテジのファイルを入れ込むだけで簡単に各種SNS認証が導入できる。
2013/1現在のFuelPHPのopauthパッケージには、既にFacebook,Twitterの二つのストラテジは入れ込まれている。
今回はとりあえずFacebookの認証を動くところまで試す。取り込み手順はREADMEのHow to use の4手順。
プロジェクトフォルダ(プロジェクト名)は「basedemo」としてローカル環境で試す
導入手順 ※導入はおよそ10分程
手順1.Facebook管理者ページの設定
Facebook開発者ページからアプリ登録を行い、「App ID」「App Secret」を取得する。
https://developers.facebook.com/apps
[Facebookでログインするウェブサイト]の[Webサイト]には手順5で作成するController_AuthクラスのAction_Loginメソッドにストラテジ文字列を引数としたアドレスがログインページとなるので以下のようにする。
http://[サイトパス]/auth/login/facebook/
※ローカル環境の実行の場合はlocalhostで問題なし
今回は「http://localhost/basedemo/auth/login/facebook/」を設定する
この[Webサイト]パスを間違えると下記のようなエラーが出るので注意
—————————————————————————————————————————————
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: Invalid redirect_uri: 指定されたURLは、アプリケーションの設定で許可されていません。
—————————————————————————————————————————————
手順2.プロジェクトにopauthライブラリをgitからclonesで取り込む ※How to use の1
cd basedemo/fuel/packages/ git clone git://github.com/andreoav/fuel-opauth.git opauth
※zipファイルでダウンロードしてフォルダをパッケージ配下に配置しても同様
手順3.opauth.php設定ファイルの作成 ※How to useの2
opauth/config/opauth.phpをbasedemo/fuel/app/config/にコピーする ※新規作成でも良い
<?php 'path' => '/basedemo/auth/login/', 'security_salt' => 'testtesttest', // デフォルトで設定されている値と違うものにする ※同じ場合動作しない 'callback_url' => '/basedemo/auth/callback/', 'Strategy' => array( 'Facebook' => array( 'app_id' => 'APP_ID', // 手順1で取得した「App ID」の値を設定 'app_secret' => 'APP_SECRET' // 手順1で取得した「App Secret」の値を設定 ), ),
security_saltはデフォルトと違う値かどうかをコード上チェックしているため、別の適当な値を設定すること。
今後ストラテジを追加する場合にはFacebookと同様に追加して記載する。
Twitterの場合:
'Twitter' => array( 'key' => 'KEY', 'secret' => 'SECRET' ),
pathとcallback_urlについてはサイト直下に作成している場合は「How to useの2」に記載されている通りpath[/auth/login/]、callback_url[/auth/callback/]でいいが、今回はlocalhost直下ではなくlocalhost/basedemoなので[/basedemo]を付け忘れないこと。今回ここで4時間ぐらい無駄にハマった・・・
それぞれController_AuthクラスのAction_Authメソッド、Action_Callbackメソッドを呼び出している。
手順4.config.phpの設定 ※How to useの3
opauthをパッケージとして読み込む設定をする
<!--?php 'always_load' =--> array( 'packages' => array( 'opauth', ), ),
手順5.コントローラファイルの作成 ※How to useの4
auth.phpを[/fuel/app/classes/controller]へ新規作成する
あとは「How to useの2」のコードをそのままコピペ
<!--?php class Controller_Auth extends Controller { private $_config = null; public function before() { if(!isset($this--->_config)) { $this->_config = Config::load('opauth', 'opauth'); } } /** * eg. http://www.exemple.org/auth/login/facebook/ will call the facebook opauth strategy. * Check if $provider is a supported strategy. */ public function action_login($_provider = null) { if(array_key_exists(Inflector::humanize($_provider), Arr::get($this->_config, 'Strategy'))) { $_oauth = new Opauth($this->_config, true); } else { return Response::forge('Strategy not supported'); } } // Print the user credentials after the authentication. Use this information as you need. (Log in, registrer, ...) public function action_callback() { $_opauth = new Opauth($this->_config, false); switch($_opauth->env['callback_transport']) { case 'session': session_start(); $response = $_SESSION['opauth']; unset($_SESSION['opauth']); break; } if (array_key_exists('error', $response)) { echo '<strong style="color: red;">Authentication error: </strong> Opauth returns error auth response.'." \n"; } else { if (empty($response['auth']) || empty($response['timestamp']) || empty($response['signature']) || empty($response['auth']['provider']) || empty($response['auth']['uid'])) { echo '<strong style="color: red;">Invalid auth response: </strong>Missing key auth response components.'." \n"; } elseif (!$_opauth->validate(sha1(print_r($response['auth'], true)), $response['timestamp'], $response['signature'], $reason)) { echo '<strong style="color: red;">Invalid auth response: </strong>'.$reason.". \n"; } else { echo '<strong style="color: green;">OK: </strong>Auth response is validated.'." \n"; /** * It's all good. Go ahead with your application-specific authentication logic */ } } return Response::forge(var_dump($response)); } }
動作確認
「http://localhost/basedemo/auth/login/facebook/」を実行してfacebookのログインページに遷移すればOK。あとはログインして完了すると「OK: Auth response is validated.」が表示されれば成功。
画面上はfacebookからのレスポンス情報が表示されているはず。
最後に・・・
単に配置しただけで認証のみは簡単に行えた。あとはDBに情報格納やらプロジェクトにあったコールバック処理、遷移に変えればよさそう。
その他ストラテジの追加は下記公式サイトよりストラテジファイルをダウンロードして配置して、config設定を行い多少修正すれば、おそらくすぐに実装が可能。
公式サイト:http://opauth.org/
あれ、ログアウト処理ないね。。セッション値を削除すればいいかな。
GitHubリポジトリにアップしたときにエラーとなった時の対応法メモ
FuelPHPプロジェクトをGitHubにリポジトリ作ってアップしようとしたらエラーが出たので調べてみた
エラー:fatal: Not a git repository: fuel/core/../../.git/modules/fuel/core
リポジトリが存在しないエラー。全く意味が分からない・・・
まずfuel/core/../../.git/modules/fuel/coreディレクトリを探してみるが.git/modules/の段階でディレクトリが存在しない。普通はあるのかな?新規でcloneしたらいいのかな。不明。
とりあえず呼んでるファイルはどこかを探してみる・・・
grep -r ".git/modules" *
実行結果:
fuel/core/.git:gitdir: ../../.git/modules/fuel/core
fuel/packages/auth/.git:gitdir: ../../../.git/modules/fuel/packages/auth
fuel/packages/email/.git:gitdir: ../../../.git/modules/fuel/packages/email
fuel/packages/oil/.git:gitdir: ../../../.git/modules/fuel/packages/oil
fuel/packages/orm/.git:gitdir: ../../../.git/modules/fuel/packages/orm
fuel/packages/parser/.git:gitdir: ../../../.git/modules/fuel/packages/parser
6ファイル。fuel/packagesを少し弄った気もするのでそれが原因かな?
状況が全くよくわからないからもういいや、めんどくさいから全部ファイル削除・・・
rm -r $(grep -rl "modules/fuel" *)
これで一応エラーを回避してプッシュまで成功。
git使ってる人ならおそらくすぐにわかることなのかもしれないけど、スキル不足で原因、解決策共によくわからない。原因ファイルを消してるだけなので、支障ありそうだけど、とりあえずアップできたからいいや。
gitは後々勉強しよう
migrateエラーの対応策をメモ
maigrateをしようとして「Already on the latest migration for app:default.」
エラーとなった
事象発生手順
1.oil generate migrationコマンドで生成されたマイグレーションファイルを実行。
oil refine migrate // 又はoil r migrate
2.作成されたテーブルを削除
drop table [table名]
3.再びマイグレーションファイルを実行
oil refine migrate // 又はoil r migrate
結果:
「Already on the latest migration for app:default.」発生
既にマイグレーションは最新の状態ですといった内容
解決策
1.マイグレーションの実行で作成されたmigrationテーブルの対象のレコードを削除する
2.下記コマンドを実行
oil refine migrate:current // 又はoil r migrate:current
公式サイト:http://press.nekoget.com/fuelphp_doc/general/migrations.html
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年6月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
おすすめ備忘録
- [AndroidStudio]Error:(9, 9) Attribute application@icon value=(@drawable/ic_launcher.png) from AndroidManifest.xml:9:9 Error:(9, 9) Execution failed for task ‘:app:processDebugManifest’.エラー発生
- [FuelPHP]migrateエラー:Already on the latest migration for app:default.
- [FuelPHP]GitHubエラー:fatal: Not a git repository: fuel/core/../../.git/modules/fuel/core
- [Jenkins][Windows]java.io.IOException: Cannot run program “sh”エラー
- [git]git submodule addでエラー「A git directory for ‘[指定モジュール]‘ is found locally with remote(s):」
エントリ