ラベル android の投稿を表示しています。 すべての投稿を表示
ラベル android の投稿を表示しています。 すべての投稿を表示

ReactNativeでAndroid対応する話

前提

ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話

トラブルシューティング

Build.VERSION_CODES.Q が存在しないエラー

compileSdkVersionを29以上にすると解決

メモリー足りないエラー

Execution failed for task ':app:mergeExtDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > java.lang.OutOfMemoryError (no error message)

コメントアウトを解除した

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

64K問題?

Cannot fit requested classes in a single dex file (# methods: 154819 > 65536 ; # fields: 126457 > 65536)

multiDexEnabled trueを追加

facebook sdkのエラー

The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

確かにまだ設定してないからなー。

FirebaseのAuthentication使ってるからそこら変の設定がもろもろ足りない。

React Native Firebase

https://rnfirebase.io/

Twitterの設定

中で使ってるライブラリーはこれ
react-native0.62.2使ってるから、gradleの追加や、MainApplication.javaへの追加は不要

Appleでログイン

使っているライブラリーはこちら

iOS開発時は1.0.0。Android対応は2.0.0からので、バージョンを最新にする(2.1.0)

  const response = await appleAuthAndroid.signIn();

ドキュメント通り実装しても、responseで取得できるのはid_tokenだけ。

{nonce: "XXXXXXXXX", state: "XXXXXXXXXXXX", id_token: "XXXXXXXXX", code: "XXXXXXXXXXX"} 

id_tokenはJWTなので、decodeすると、(便利なサイト https://jwt.io/)

{

  "iss": "https://appleid.apple.com",

  "aud": "xxxxxxxxxxxxxxxxxxxxxx",

  "exp": 1607694557,

  "iat": 1607608157,

  "sub": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "nonce": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "c_hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "email": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

  "email_verified": "true",

  "is_private_email": "true",

  "auth_time": 1607608157,

  "nonce_supported": true

}

こんな感じ

で?

Firebaseの本家の(ReactNativeじゃないほう)のAndroidのドキュメントをみてみる

https://firebase.google.com/docs/auth/android/apple

始めの方はSDK使えば簡単にできるようなことが書いてある。

「高度: 手動によるログインフローの処理」ここが参考になるかも

https://firebase.google.com/docs/auth/android/apple#advanced_handle_the_sign-in_flow_manually

AuthCredential credential =  OAuthProvider.newCredentialBuilder("apple.com")

    .setIdTokenWithRawNonce(appleIdToken, rawUnhashedNonce)

    .build();

mAuth.signInWithCredential(credential)

appleIdTokenとか書いてあるので、それ渡せば良い? appleIdTokenはAppAuthから取得する?んー。これも違うような。

Web版をみてみる。

https://firebase.google.com/docs/auth/web/apple


続きはまた明日・・・ 

 


smartwatch3 x iphone7 を使ってみた(設定編)

はじめに

ランニングに行くときに、どれくらい走ったか、どれくらいのペースだったかを調べたいと思っても、iPhoneをもって一緒に走るのは重たいし、なかなか固定できないので、スマートウォッチを使ってなんとかできないか調査してみる。

Apple Watch1

GPS機能がついていない。
ただし、Nike+ではペースや距離は計測可能。
Adidasのアプリは無理。

SmartWatch3

GPS機能ついてるんですが、iPhoneとの連携はあくまでも通知だけ。
そもそもiOS向けのアプリでAndroid Wearに対応しているのがない?

iPhoneとAndroid Wearの連携

iOS向けの専用アプリ。これを連携すれば、一通りの通知は確認できる。
アプリ毎の通知拒否も可能。
通知はわかるけど、中身はわからない(メールの本文など)

Google FitがAndroid Wear内にあるが、これはiOS向けにはアプリが展開されていないためiPhoneと連動はできない。

音楽の早送り、ボリューム調整も可能。


Android端末があれば、少しは変わると思う。


Genymotionで連携できるかなーって思ったらどうも無料版がなくなってるらしい。
Androidのエミュレータってどうしてるんだろう。。。

jQuery Mobileをつかう

リンクでページ遷移をする場合、基本ajaxで行ってるみたい。

直接遷移して欲しい時はaタグの場合
rel="external"

を付ける

formタグの場合は
data-ajax="false"

をつける


<a href="/hoge" rel="external">りんく</a>
....
<form action="/hoge" action="post" data-ajax="false">
<input type="submit" value="GO">
</form>


すべてを無効にする場合

1.config.jsを作成

$(document).bind("mobileinit", function(){
$.mobile.ajaxLinksEnabled = false; // Ajax を使用したページ遷移を無効にする
$.mobile.ajaxFormsEnabled = false; // Ajax を使用したフォーム遷移を無効にする
});


2.jqueryの読み込みを見込ませる。
読み込ませる順番も大事 jquery.js => config.js => jquery.mobile.js
<script type="text/javascript" src="/static/js/jquery.1.5.0.min.js"></script>
<script type="text/javascript" src="/static/js/config.js"></script>
<script type="text/javascript" src="/static/js/jquery.mobile-1.0a3.min.js"></script>

EclipseのAndroid設定エラー???

ADT(Android Development Tools)のversionを5にupdateしたら、
Eclipseのコンパイルが通らなくなりました。

「プラグイン "org.eclipse.jface" からのコードの起動で問題が発生しました。」

とエラー?かダイアログ?か表示されていたので、
昨日はなくなくあきらめて、
Eclipseの再インストールでもするかな〜と思っていたら、
見つけました。


Android SDK Tools, Revision 5のインストール方法

この方も同じようにRevision 5にupdateしてエラーとなっていた模様。
というか、なぜ昨日は探し出せなかったのか・・・。

ということで一件落着。
このブログも誰かの目にとまり役に立っていたら幸いです。

Androidアプリを登録する

先日のブログで紹介した「Android不要なアプリを削除する」で見事に削除できましたが、
今度はもとに戻したいと思ってみたり。

1.Eclipseで作成したプロジェクト/binディレクトリにあるXXXXX.apkファイルを
$ANDROID_HOME/toolsへコピーする

2.cd $ANDROID_HOME/toolsで移動

3.adb install XXXXX.apk
※このときエミュレータは起動していました。

無事に復活することができました。

Android不要なアプリを削除する

Eclipse+Android(ADT)でサンプルアプリを開発

不要となったアプリをEclipse上で削除しても、
エミュレータ上からは削除されていません。
個別に削除する必要があるみたいです。

1.Eclipseの実行
2.エミュレータが起動
3.ターミナルを起動し、以下を実行
[Android HOME?]/tools/adb shell
※まだ詳しく調べてないが、Androidが起動しているLinuxに入る?
4./data/app配下のアプリをrmする

再起動なしで、アプリが削除されていることを確認

参考
http://labs.feed-yomi.com/android/setup/emu_appdel.html

ReactNativeでAndroid対応する話

前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...