Android Studio OutOfMemoryError: GC overhead limit exceeded
タイトルのエラーが出るようになってしまいました。いろいろ変えてしまっていて、原因がはっきりとは特定できてません。(^^;build-toolのVer.を25にアップを含めてSDKを一通り、AndroidManifest.xml、最後に変えたのは、buid.gradleあたりかと。。。
参照サイトを参考にまずは、gradle.propertiesに以下を追加しましたが、エラーは消えず。
-Xms1024 # ヒープメモリの最小サイズ
-UseGCOverheadLimit #GCメモリ越えの警告を無視
次に、Android Studioのメニューから以下を追加して、エラーがなくなりました。
・「Run」「Edit Configurations」をクリックします。
・左のツリーから「Defaults」「Gradle」を選択します。
・「VM Options:」に「-XX:UseConcMarkSweepGC」を追加して、「OK」をクリックします。
エラーが出る前にはJavaのバージョンを1.7.0_XXから1.8.0_112に変更しています。
変更後、Javaのパスも変更しています。
変更方法は、「Project Structures」の「JDK Location」をツリーから変更。
参照サイト:
garbage collection - Error java.lang.OutOfMemoryError: GC overhead limit exceeded - Stack Overflow
ノートPC U24EをWindows10にアップデートしてみました
2週間ほど前にASUS製ノートPC(U24E)がAnniversaryUpdate相当のBuildVersion:1607に勝手にアップデートされてしまいました。前回、デスクトップPCではスリープでエラーとなったため、AnniversaryUpdateから元のバージョンに戻しましたが、ノートPCではスリープは正常に機能しています。
新SignIn認証の認証情報作成方法
Stack Overflowに書かれている「New Google sign in Android」の記事でEric Leschinski氏とKaizieの回答を見てみると、SignIn認証するには、Android用とWebアプリ用に2つのOAuth IDが必要とあります。そして、それは、公式サイトの「Start Integrating Google Sign-In into Your Android App | Google Sign-In for Android | Google Developers」に書かれているとのこと。このサイトも何度か見たのですが、手っ取り早くSignIn認証したかったので、前回はgithubに転がっていたサンプルを流用しました。では、公式サイトに則って、やってみたいと思います。
1.コンフィグレーションファイルの取得
・「GET A CONFIGURATION FILE」ボタンをクリックします。
・「Create or choose an app」ポップアップ画面で「App name」を選択します。
(選択すると、App nameの右側に以下のメッセージが表示されます。
Services will be addes to your existing project in the Google Developers Console.)
・同ポップ画面で、Androidのパッケージ名をフルで入力します。
(例:com.example.package_name)
・入力後、同意画面が表示され、「CONTINUED TO Choose and configure services」ボタンをクリックします。
・「Google Sign-In」画面で、Android用SHA-1認証コードが表示され、一番下の「ENABLE GOOGLE SIGN-IN」ボタンをクリックします。
(SHA-1の情報は、以前keytoolコマンドで生成した値と同じでした)
・「Choose and configuration services」画面で、「CONTINUED TO Generate configuration files」ボタンをクリックします。
・「Download and install configuration」画面で、「file_download」ボタンをクリックし、コンフィグレーションファイルをダウンロードします。ダウンロードしたファイル名は、google-services.jsonです。
(以前、Fusion Tablesの認証情報の作成方法で作成したclient_id.jsonと内容は異なります。)
・Android Studioの左上のタブを「Project」googleに変更し、app-配下にダウンロードしたgoogle-services.jsonをドラッグします。
p.s.
google-services.jsonの内容を見ると確かに2つのclient_idがありました。Stack Overflowの記事と公式サイトの記事をもっと早く見ていたら(^^;ここから後もすんなりいかないんだよなー、きっと。
参照サイト:
New Google sign in Android - Stack Overflow
エミュレータを日本語に変更する方法
SignIn認証に成功
前回、メール認証に成功してから3週間も経過してしまいましたが、本日、SignIn認証に成功しました。下記の参照サイトの1つ目のサイトを参考にコーディングしました。参照サイト中のsign_out_disconnectに関連するコードがないので、sign_out_buttonに置き換えています(というか、間違いだと思われる。UpdateUIにあるのは4種類なので。。。)。また、レイアウトのxmlファイルがないので、自分で補いました。
1.activityの切り換えのコードを追加
MainとなるActivityと参照サイトのIdTokenActivityに以下を追加してます。また、IdTokenActivityの追加により、AndroidManifest.xmlにIdTokenActivityを追加しました。
1.AndroidManifest.xml
<activity
android:name=".IdTokenActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme">
2.MainのActivity
Super.onCreateの下に以下を追加する。
Intent intent = new Intent();
intent.setClassName("com.example.myapplication_test", "com.example.myapplication_test.IdTokenActivity");
this.startActivity(intent);
3.IdTokenActivity
setContentViewの下に以下を追加する。
Intent intent = this.getIntent();
2.バグ修正
このままでは、SignIn認証エラーとなり認証に失敗し、onActivityResultの引数dataのdata.getExtras()に以下のエラーが出力されます。
「{statusCode=unknown status code:12501, resolution=null}」
2つ目の参照サイトから、GoogleSiginInOptionsを修正することにより、SignInに成功しました。
・修正前
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestEmail()
.build();
・修正後
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.PLUS_LOGIN))
.requestScopes(new Scope(Scopes.PLUS_ME))
.build();
実行すると、アカウント選択画面が表示され、アカウントをクリック後、以下の画面が表示されます。
「ALLOW」をクリックすると、「SignedIn」と表示されました。
SignIn認証はクリアしたのですが、FusionTablesの認証は、まだです。道のりはもう少しといったところでしょうか。
参照サイト
google-services/IdTokenActivity.java at master · googlesamples/google-services · GitHub
Nexus5 タッチパネルが効かない ボタンが勝手に押される。
最近、雨が多いですね。スマホは、Nexus5とFone2Laserを使用していますが、本日、雨の中から家に帰ってNexus5を使用しようとすると、一部タッチパネルが効かなくなり、押してもいないボタンが勝手に押されるようになりました。水滴を拭き取ってもだめでしたが、数時間、自然乾燥させたら元に戻りました。傘を差しながら雨の中で使用したことは何度かありますが、こんな現象は初めてだったので、すこし焦りました。