JetBrains の IDE が全て半額! 急げ!! 当然 Intellij IDEA もだぞ?

急げ! あと数時間しかないぞ!

Don’t miss the JetBrains Friendship Day special offer — all individual tools for developers at 50% off! #JetBrainsFriends

持ってる知り合いを探して、クーポン発行をお願いする、なのか?!

詳細はよう分からんがお得なはず!!


プレインストールアプリを削除する

ずっと、Nexus/Pixelシリーズの、素のAndroid OS を使ってきましたが、 今回、ドコモ版のGalaxy S8を周回遅れで購入しましたが、使わないベンダーやキャリアのアプリが頻繁に通知を送ってきます。

後付なおせっかい機能です。

Androidの煩わしさの原因に見えたりします。

以下、自己責任の不具合覚悟の方のみ。

OS OTAアップデート当たらないかもしれません。 キャリア依存。


// パッケージ名のリストをみる。
adb shell pm list packages -s

無効化できないアプリは、もう強制的に消してしまいます。


// パッケージを強制的に消す
adb shell pm uninstall -k --user 0 com.nttdocomo.android.applicationmanager

adb shell pm uninstall -k --user 0 com.nttdocomo.android.dhome

adb shell pm uninstall -k --user 0 com.nttdocomo.android.store

adb shell pm uninstall -k --user 0 jp.co.nttdocomo.lcsapp

adb shell pm uninstall -k --user 0 com.nttdocomo.android.voiceeditor (ドコモ文字編集)

adb shell pm uninstall -k --user 0 com.sec.android.inputmethod.iwnnime.japan

素のAndroid(Nexus/Pixelシリーズ)では表示されてた「パッケージ名」は、それ以外の端末では、表示できないようにされています。

ので、アンインストールしたい「アプリ名」が分かっていても、「パッケージ名」との紐づけができず困ったりします。

adb badge を使ってやるのも面倒なので、簡単にアプリ内から、「アプリ名」-「パッケージ名」のリストを見ましょう。


inline fun Context.listPackages() {
  val packages = packageManager
      .getInstalledApplications(PackageManager.GET_META_DATA)
      .sortedBy { it.packageName }

  packages.forEach {
    println(
        "%s %s %s".format(
            it.packageName,
            it.loadLabel(packageManager),
            it.uid
        )
    )
  }
}

OSアップデートや国内独自機能(NFC/トルカ?)など不具合が起こり始めるのだろうが、それを差し引いても快適で。

格安の素のAndroidを国内キャリアはなぜ出さないのかが謎。

Androidに関しては「付加価値を」とか「他社と違い」てなフレーズを使ったビジネスするしか?

いまどきのAndroid端末ってアプリのパッケージ名見れないのですか?
Package Info - Apps on Google Play


あなたの build.gradle バージョン記述、きもいです。

きもいですよ。

こう書いていたり、


minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion

こう書いてたり、


dependencies {
  implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
  implementation "com.android.support:support-v4:$rootProject.supportLibraryVersion"
  implementation "com.android.support:design:$rootProject.supportLibraryVersion"

「変数を使ってまとめました!」とか言ってるけど。

きもいですよ。

そもそも、定義の位置がヘボいのですよ。

 

書いてたのは私です。

以下のように書いてました。

root/build.gradle


ext {

  minSdkVersion = 24
  targetSdkVersion = 27
  compileSdkVersion = 27
  buildToolsVersion = '27.0.2'

  supportLibraryVersion = '27.1.0'
  firebaseVersion = '11.8.0'

}

これのせいで、「${rootProject.firebaseVersion」とか「rootProject.ext.***」とかダラダラ書く羽目になるようです。

stackoverflow も今やゴミのだらけでどれが正しいのか分かりづらいです。

 

神はこのように書いていた。

root/build.gradle


buildscript {

  ext.buildConfig = [
      'compileSdk': 27,
      'minSdk': 24,
      'targetSdk': 27
  ]

  ext.versions = [
      'supportLibrary': '27.1.0',
      'kotlin': '1.2.30',
      'okhttp': '3.10.0',
      'retrofit': '2.3.0',
      'kotshi': '1.0.1',
      'dagger': '2.15',
  ]

ブロック buildscript {} 内に map ですっきり記述しています。

module/build.gradle


android {

  compileSdkVersion buildConfig.compileSdk

  defaultConfig {

    minSdkVersion buildConfig.minSdk
    targetSdkVersion buildConfig.targetSdk

    versionCode buildConfig.versionCode
    versionName buildConfig.versionName

  }
}

// ....

dependencies {

  implementation "org.jetbrains.kotlin:kotlin-stdlib:${versions.kotlin}"
  implementation "com.android.support:appcompat-v7:${versions.supportLibrary}"
  implementation "com.android.support:support-v4:${versions.supportLibrary}"
  implementation "com.android.support:design:${versions.supportLibrary}"

  implementation "com.google.firebase:firebase-core:${versions.firebase}"
  implementation "com.google.firebase:firebase-auth:${versions.firebase}"

定形なテンプレートとして使えます。

参照する際は、「rootProject」とか「ext」の単語は不要です。

 

関連の以下も必須だろうと思います。

サポートライブラリのバージョンを揃える

👉 【Gradle Version Catalog】libs.versions.toml キー名の形式 camelCase vs kebab-case hatena-bookmark