2018年9月23日日曜日

implementation 'com.android.support:appcompat-v7:26.1.0'

dependencies節のcompile(非推奨)からimplementationへの置き換え作業にて。

エラー表示がされたまま解除できなかったので試行錯誤の結果
testImplementation 'junit:junit:4.12'
をコメントアウトすることでエラー表示が無くなった。理由は不明
念のためほぼ使用していないtest関連もコメントアウト状態にした。

この時の環境
Android Studio 3.1.4
gradle 4.4
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'com.google.gms:google-services:4.0.2'

2018年8月11日土曜日

:app:lintVitalRelease FAILED

API Level 28がリリースされ、PlayStore上でAPI制限が上げられてきたのでAPIレベルを変えてリコンパイルする作業でエラーが出てきました。

この手のエラーはデバッグ用のビルドではエラーが出ず、リリース用のビルドでエラーが発生しますね…今回もリリースビルドでエラーが出てしまい、クリーンしたり、toolVersionを最新のものにしたり色々してみましたが変化しませんでした。

:app:lintVitalRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:lintVitalRelease'.
> Could not resolve all files for configuration ':app:lintClassPath'.
   > Could not find com.android.tools.lint:lint-gradle:26.1.4.
     Searched in the following locations:
         file:/C:/Android/SDK/extras/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom
         file:/C:/Android/SDK/extras/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar
         file:/C:/Android/SDK/extras/google/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom
         file:/C:/Android/SDK/extras/google/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar
         file:/C:/Android/SDK/extras/android/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom
         file:/C:/Android/SDK/extras/android/m2repository/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar
         https://jcenter.bintray.com/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.pom
         https://jcenter.bintray.com/com/android/tools/lint/lint-gradle/26.1.4/lint-gradle-26.1.4.jar
     Required by:
         project :app

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 14s
17 actionable tasks: 1 executed, 16 up-to-date

メッセージ中の「lint-gradle:26.1.4」という部分がtoolVersionを変更しても変化しないというのが気になったのですが、正直八方塞がりになってしましました。

こんな時に一番役立つのはやはりAPI Levelを設定したうえで新規プロジェクトを作成して比較するということ。バグではない限り大概これで足りない記述や変更された記述を転記してやれば正常にコンパイルできるようになります。

確認したところ、プロジェクトレベルのbuild.gradle内に
allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
赤い文字の部分が追加されていました。
今までエラーが出ていたプロジェクトに追記したところエラーが出なくなりました。

直接のビルドエラーの原因はgradleのバージョンアップでリポジトリを強制追加しない感じになったのでしょうかね。

2018年2月7日水曜日

OCN電話プレフィックス

Zenfone 2 Laserでうまく動いていない感じだったので調べてみました。

現象としてはNEW_OUTGOING_CALL自体全く動いていないといった感じで、呼び出し画面は実際にダイアルした番号が表示されるだけとなっていました。

インテントフィルターをさらに増やし、レシーバーの受け口をさらに広げる必要があるのかログで怪しそうなキーワードからソースを検索して追加してみても変化はなかった。

機能しているかどうか明らかにするために処理を少し変更して以下のことを試してみた。
・setResult(null)を行うようにした。→発信時の呼び出し画面が表示された後、すぐに消え、呼び出しが行われなくなった。
・setResultで固定で全く異なる番号をセットした。→呼び出し画面の番号は入力したり、指定したアドレスの電話番号だが、実際にはセットした別の番号に発信していた。

このことから呼び出しは正しく行われ、番号の変更は正しく行われているが、呼び出し画面や発信履歴では変更される前の番号が表示され記録されている。
CallLog.Calls.getLastOutgoingCallを使用しても変更前の番号が取得された。

Android Version 6.0

2017年11月9日木曜日

java.lang.NullPointerException: at android.app.LoadedApk.getAssets (LoadedApk.java:547)

一時期からPlayConsoleで上がってくるクラッシュレポートで気になっていました。
ざっくり見ると単純にOSのapkからのロードが失敗しているだけに見えるので無視していました。

最近になり結構頻繁にレポートに出てくるので「LoadedApk.java:547」 を検索してみました。
いくつか

java.lang.NullPointerException in android.app.LoadedApk.getAssets #95

書き込みは「Androidのプラットフォームのバグに起因すると思う」という形でCloseされていて次の書き込みで引用されています。
Google Play Crash Report: java.lang.NullPointerException: #383
この中で「アプリの更新中または更新後のフレームワークバグのようだ。」 ということで回避方法のコードなども引用されていました。

Apply workaround to fix framework bug of 'null' Resources while updat… #386

原因としてアップデート時にgetResource()が失敗する状況に陥ってしまうようです。

2017年11月4日土曜日

resource string xml



& → &
> → >
< → &lt;
' → \'
" → \"

ただ、これらのエスケープはトランスレータエディタでは処理がおかしい。
他に正しいエスケープの方法を探す必要がある。

2017年10月21日土曜日

Grooveミュージックのアンインストール

Windows PowerShell(管理者)(A)を起動して

PS C:\WINDOWS\system32> Get-AppxPackage *zunemusic* | Remove-AppxPackage

でアンインストールすることができる。

再インストール
ストアからアプリをインストール

参照
Windows 10ミニTips http://news.mynavi.jp/column/win10tips/031/

2016年10月15日土曜日

FragmentのonClickイベント

Activityのようにlayoutのxml内でButtonなどから
android:onClick="onClickEvent"
と記述した場合、外側のActivityにメッセージが投げられるだけで肝心の自分のFragmentには届かない。

結果としてどちらかを選ぶ必要がある。
  • xml記述を優先しActivityに処理を記述する。
  • onCreateViewなどでinflateした後にコードでリスナーを登録する。
普通に考えるとコードでリスナー登録を行う方がスマートなのですが、なんでxmlでFragment内のメソッドに飛ばさないのかが納得いきませんが。

何とかできないかといろいろ手は尽くしてみたものの、なんともならないので検索してみると同様の方はやはりいらっしゃったようです(笑)

Fragment上のonClickとかをFragment内で受け取る - Qiita: