投稿

ラベル(Android)が付いた投稿を表示しています

【Android】API SDK バージョン別の処理とおまけ(ターゲットユーザー分布)

イメージ
Android開発において、何よりめんどくさいのがAPI(SDK)バージョン毎の対応だと思ってる方も少なくないハズ というわけで、今回はAPIバージョン毎に処理を分ける為のメモです(*´ω`) 大抵の方は知ってると思うのでブラウザバックしちゃって下さいませw SDK_INT 対象ハードウェアデバイスで現在実行されているソフトウェアのSDKバージョン いわゆるAPIバージョンですね Build.VERSION.SDK_INT EXAMPLE if(Build.VERSION.SDK_INT > 22) { // API 23以上の処理 Log.d("SDK VERSION", "23-"); } else if (Build.VERSION.SDK_INT > 18) { // API 19以上23未満の処理 Log.d("SDK VERSION", "19-22"); } else { // API 18以下の処理 Log.d("SDK VERSION", "-18"); } ちなみに、下記のコードで現在の開発コードネームが取得できます Build.VERSION.CODENAME VERSION_CODES 数字の直打ちではなくコードネームで分岐する場合はコチラ 各種コードネームを指定する事で、SDKバージョンを取得できます Build.VERSION.<CODE_NAME> EXAMPLE if(Build.VERSION.SDK_INT > Build.VERSION.LOLLIPOP_MR1) { // API 23以上の処理: LOLLIPOP_MR1 = API 22 Log.d("SDK VERSION", "23-"); } else if (Build.VERSION.SDK_INT > Build.VERSION.JELLY_BEAN_MR2) { // API 19以上23未満の処理: JELLY_BEAN_MR2 = API 18 ...

【Android】Gradle Compatible Warning:All com.android.support libraries must use the exact same version specification

ちょっとfirebase使ってみたかっただけなのに、競合とかいらないから(;´・ω・) 警告だから無視してもいいのかなーと逃げたくなりつつ、競合放置は流石によくないですよね・・・ と、重い腰を上げたのでしたw All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 28.0.0, 26.1.0. Examples include com.android.support:animated-vector-drawable:28.0.0 and com.android.support:support-media-compat:26.1.0 There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion). Issue id: GradleCompatible というわけで、勝手にケンカしてくれちゃってるver28さんとver26.1さんを探しに行きましょう! Gradle 競合確認 appディレクトリ配下に移動して確認コマンドを入力します cd app ./../gradlew dependencies 見づらいのでファイルに出力・・・とかはご自由に エラーログによると「com.android.support:animated-vector-drawable:28.0.0」と 「com.android.support:support-media-compat:26.1.0」がケンカしてます( `ー´...

【Android】エラー:IllegalStateException: Expected END_OBJECT but was NAME

JsonReaderとかいうめんどくさいモノ使って嫌々ながらパーサー作ったせいで、アホなエラー出してしまったのです(;´・ω・) 2018-10-12 15:15:33.419 5344-5344/com.hoge.fugapp E/AndroidRuntime:FATAL EXCEPTION: main Process: com.hoge.fugapp, PID: 0000 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hoge.fugapp/com.hoge.fugapp.HogeFugaActivity}: java.lang.IllegalStateException: Expected END_OBJECT but was NAME Caused by: java.lang.IllegalStateException: Expected END_OBJECT but was NAME IllegalStateException 間違い reader.beginObject(); while (reader.hasNext()){ if (reader.nextName().equals("hoge")){ hoge = nextString(); }else{ break; } } reader.endObject(); 正解 reader.beginObject(); while (reader.hasNext()){ if (reader.nextName().equals("hoge")){ hoge = nextString(); }else{ reader.skipValue(); } } reader.endObject(); 良い子の皆さんは、決して、次以降のトークンは必要ないからと言って whileをbreakしてendObject()とか、endArray()とかやっちゃいけません;つД`) っていうか、なんでJSON如きにここまでしてやらなあかんねん!...

【Android】エラー:plugins won't be able to load の原因は adb binary is obsoleteでした

ずいぶん前に出した・・・出た?エラー 記憶が曖昧だけど、また出そうな気がするから軽くメモっておくことにします( `ー´)ノ とりあえずプロローグw 深夜までデバッグしてて、数時間寝て起きたらビルドできず、こんなエラーが出てました Plugin supporting features (Run Configuration[Android App], Facet[android, android-gradle]) is currently disabled. Unable to apply changes: plugins "Android APK Support", "App Links Assistant", "Firebase App Indexing", "Firebase Services" won't be able to load. えー・・・ 昨夜まで動いてたのに・・・ 誰か私が寝てる間に弄ったでしょ? 今なら許してあげるから白状して下さい と、いらぬ嫌疑をかけつつ、Google様に翻訳をお願いしたところ 「ふむふむ。。。Firebase関係のプラグインが読み込めないみたいだな。あとは知らん!」 とのお告げを受けたのでした( ゚Д゚) っていうか、Firebase関連はともかくとして、Android APK SupportとかApp Links Assistantが読み込めないってどういうことさ! という話なのです(;´∀`) とりあえず、お告げに従って?読み込めないプラグイン関係を外してビルドしてみたところ・・・ 無事ビルド出来たのですが・・・ エミュレーターを起動しようとすると the adb binary found at hoge.appdata.local.android.sdk.platform-tools.adb.exe is obsolete and has serious performance problems with the android emulator. please update to a newer version to get significantly faster app fi...

【Android】Warning: XML tag has empty body

最近、Androidアプリ作ったんですけど、思ったよりめんどくさかったけど、おもしろかった(*´▽`*) とかいう、謎な感想は置いといて、タイトルの「XML tag has empty body」ですね XML tag has empty body Reports empty tag body. The validation works in XML / JSP / JSPX / HTML/ XHTML file types. ふと気づいたらマニフェストで警告が出てる・・・ なんでしょう? 何も間違ってはないと思うのですが・・・? とかなんとか、AndroidStudio様に聞いてみても英語が苦手な私には、さっぱり分からず(;´∀`) ググってみても中々情報が見つからず・・・ っていうか、「tag」と「empty」辺りで気付け!って話なんですけど、しょうもないケアレスミス?でしたw XML tag has empty body 間違い 正解 中身がないタグは、わざわざ終了タグを作らないで下さいね。 ゴミを量産しちゃだめですよ。 冗長なコードは最低です。 と、天下のGoogle様はおっしゃっていたらしいです( *´艸`) 皆様もお気を付けくださいませw