Android studio に移行しました。

 今までEclipseAndroidを作っていましたが、エラーが多発してどうしようもないので

Android Studioに移行しました。

Android Studioヴァージョンは2.3です。

 

単語が英語ですが、これまでの導入からバグで躓くということはないようで安心です。

 

f:id:GentTiZO:20171028183448p:plain

上の画像でカーソル行にあるsetContentViewがると、getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

でエラーがでる。

原因は不明。サイトみてて、ひょっとしてsetContentViewでビューをセットする前に

Android画面の設定を終えたらいいんじゃ・・・っていう考え。

 

解決すると

f:id:GentTiZO:20171028183424p:plain

となる。

今までの開発で起きた問題

     今までAndroidEclipseを使って開発をしていたんですが、FPSが低下している原因が分からなかったので、いままで分からない所を調べてみようと思いました。

ターゲットSDKとか調べてみました。

f:id:GentTiZO:20170927100154p:plain

アプリケーションが動作することがわかっている最高のAPIレベルを選択します。
この属性は、ターゲットバージョンに対してテストしたことをシステムに通知します。
システムは、ターゲットバージョンとのアプリケーションの前方互換性を維持するため
の互換動作を有効にすべきではありません。

とあるのですが、まだよくわかりません。 とくにターゲットバージョンとのアプリケーションの前方互換性を維持するための互換動作を有効にすべきではないのは何故か?

ということ、それとそもそもターゲットバージョンとのアプリケーションの前方互換

ってなんだろう?

 

f:id:GentTiZO:20170927100134p:plain

インストールされたSDKからコードをコンパイルするターゲットAPIを選択します。
これは通常、最新のバージョン、またはリフレクションなしで直接アクセスしたいす
べてのAPIをサポートする最初のバージョンです。

これも良くわからん。 また引っかからないといいけどね。

 

Androidアプリを作ろうとすると、完了ボタンがブラックアウトしたままで作成できない問題。

プロジェクトを削除してする。そして念のため、Eclipseを再起動して、新しくプロジェクトを作り直す。そのとき、最小必須APIレベルを16、ターゲットAPIとコンパイルAPIを同じ19にする。これでプロジェクトが作れた。

 

重いエミュレータ(5.0.1以降)でOSがクラッシュした。メモリエラーでした。

まさかエミュレータ起動しただけでブルースクリーンになるとは思いもよらなかったなぁ~

でも考えてみると、エミュレータってCPU制御やメモリ関連がシビアなものですもんね。 ただこれからは19以上でエミュ動かすとなると怖いですね。

 

FPSが低下した問題

Host GPUって設定だった。Android仮想デバイスの編集の下にあるチェックボックス

奴 なぜエミュでもFPSが低下するか疑問だった。これは開発に影響大きい問題だから看過できなかった。でも調べてもそういう情報ってかなり少ないんですね。

これもAndroid4.7だから起こることなのかもしれない。 分かれば対処は簡単だけどハマるとすごく困るのがこの手の問題なんですよね・・・ 

Host GPUってOpenGL関連のAPIじゃないと効果はないって説明からAPI命令からGPUを使うものがあるんでしょうか? それが他のViewにはないとか?

もしくはエミュレータ上のGPUまでエミュレートしてるから遅いとか?

HostGpuを使うと速度速いっていうんで謎ですね。

逆に外すと早い。まぁまだ検証が不十分だから断定なんてできないし、これからだな

 

 

 

 

 

Androidバグ対処の続きです。

 なんとかアプリっぽくなってきました。

今までに遭遇した危険なバグを少しだけまとめたいと思います。

 

Andoridアプリケーション・プロジェクトを選択し、完了を押すとエラーが出る。

アプリケーションが作れず困っていました。テスト・プロジェクト サンプル・プロジェクトは作れるんですけどね・・・

そこで調べたところ、Android SDK Build-toolsのバージョンを26.0.1から25.0.2へと変更したところうまくいきました。どうやらツールのバグのようです。

 

layoutフォルダにある作成されたxmlファイルにあるウィジェットにプロパティから

onClickに設定を行う。するとxmlファイル内にあるandroid:onclickが追加されるのですが、なぜかボタンをクリックするとクラッシュする・・・

調べたらそこが問題のようで。

前の記事にも書いた場所ですが、そこのonClickはxmlソースにバグ?があると・・・

そこでOnClickListenerを実装してonClickメソッドを実装しました。

参考書では、OnButtonClickメソッドを実装するんですが、ググってもそのメソッドの情報がないんですよね・・・ このメソッドはなんだろう?

 

Androidマニュフェスト.xmlを書き換えても、クリーンを実行すると初期化されるバグ

何をやっても初期化される。なぜこうなるのかは不明で、どこにバグがあるのかも不明

ググってもなかなか情報もない。そこで、マニュフェストファイルだけ、バックアップ

差し替えでなんとかすることに。一息入れるころ合いになったらAndroid SDK Build-toolsのアンインスト、インストをやったりしてみようかな・・・

 

それと私がやっている環境です。

OS  windows7 64

      Eclipse 4.7

      Android SDK version 24.4.1

      Android SDK Build-tools 25.0.2

      Java jdk se  1.8.0_144

      ADT-plugin   23.0.7

APIレベルは19から24インストしてます。(ここでもバグがあり、API23のAndroid Wear ARM と Intel x86をアンイストした)

 

 

開発バグ まとめ

  XMLファイルにあるonClickによるバグ

下のソースを見れば分かりますが、すべてコメントアウトしています。

このonButtonClickメソッドは別にいいんだけど、これと関係するXMLファイルにある

onClickというのが問題。これがどうやら原因で、java.lang.NoSuchMethodException

というエラーをはきます。

 

protected void onButtonClick(View v) {
/*
//StackTraceElement[] str = (new Throwable()).getStackTrace();
out.println("onButtonClick 1");
ImageView image = new ImageView(this);
out.println("onButtonClick 2");
image.setImageResource(R.drawable.result1);
out.println("onButtonClick 3");
//out.println(" Passing " + str[0].getLineNumber());
setContentView(image);
out.println("onButtonClick 4");
*/
}

XMLファイルソースの一部

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick" ここが問題、ここを削除するとエラーは起きない
android:text="@string/bt_action" />

</LinearLayout>

 

確かに起きないけど、これじゃボタン押すアクションが起こせない。

調べたけど、v22.1.0以降(上記URL先記述によると 22.1.0, 22.1.1, 22.2.0 で発生を確認)サポートライブラリのバグのようです。とある。しかし、これはAPIレベルは19

うーむ、また結果を記事にかこうと思う。

開発バグその4

状況は、Eclipse4.7 SDKは24.4.1です。

はじめてのAndroidアプリ製作で[Hello World]をやろうとしたらエラー・・・

エラー表示で

C:\Users\XXXAppData\Local\Android\android-sdk\build-tools\26.1.0\lib dx.jar

Unable to build: the file dx.jar was not loaded from the SDK folder!

がでました。クリーンでも直らず、またか。。。と思って調べていました。

eclipse - Android ADT error, dx.jar was not loaded from the SDK folder - Stack Overflow

でビルドツールを25.0.2にしたところ通った。Stack Overflowには助けられますね。

海外だけどこういった情報が豊富にありそうで、頼もしい限りです。

ここを見て参考にしてくれたら幸いです。

 

実は、前からバグに悩まされてます ははは。

Android Stdioに移行してサービスが終了してました。 でも参考書はEclipseなんですよね。という理由です。 うちが64bitOSだからかSDK Managerも動かなかったんですよ

動いた時は、もう思わずガッツポーズだった・・・

R.java.~ってやつもERRORだった。

しかしまぁ、なんだかんだ言ってやってます。

これからもどんどん情報だしますよ。