googleplay/blog/2023-02-27-checkin/readme.md

3.6 KiB

Checkin

where do these names come from?

req_body := protobuf.Message{
   4: protobuf.Message{ // checkin
      1: protobuf.Message{ // build
         // sdkVersion
         // multiple APK valid range 14 - 0x7FFF_FFFF
         // single APK valid range 14 - 28
         10: protobuf.Varint(28),
      },
      18: protobuf.Varint(1), // voiceCapable
   },
   // version
   // valid range 2 - 3
   14: protobuf.Varint(3),
   18: protobuf.Message{ // deviceConfiguration
      1: protobuf.Varint(c.Touch_Screen),
      2: protobuf.Varint(c.Keyboard),
      3: protobuf.Varint(c.Navigation),
      4: protobuf.Varint(c.Screen_Layout),
      5: protobuf.Varint(c.Has_Hard_Keyboard),
      6: protobuf.Varint(c.Has_Five_Way_Navigation),
      7: protobuf.Varint(c.Screen_Density),
      8: protobuf.Varint(c.GL_ES_Version),
      11: protobuf.String(native_platform),
   },
}
for _, library := range c.System_Shared_Library {
   // .deviceConfiguration.systemSharedLibrary
   req_body.Get(18).Add_String(9, library)
}
for _, extension := range c.GL_Extension {
   // .deviceConfiguration.glExtension
   req_body.Get(18).Add_String(15, extension)
}
for _, name := range c.New_System_Available_Feature {
   // .deviceConfiguration.newSystemAvailableFeature
   req_body.Get(18).Add(26, protobuf.Message{
      1: protobuf.String(name),
   })
}
req, err := http.NewRequest(
   "POST", "https://android.googleapis.com/checkin",
   bytes.NewReader(req_body.Marshal()),
)

one of these:

> adb shell pm list packages
android
com.android.backupconfirm
com.android.browser
com.android.calculator2
com.android.camera
com.android.captiveportallogin
com.android.certinstaller
com.android.contacts
com.android.customlocale2
com.android.defcontainer
com.android.deskclock
com.android.development
com.android.development_settings
com.android.dialer
com.android.documentsui
com.android.dreams.basic
com.android.emulator.smoketests
com.android.exchange
com.android.externalstorage
com.android.fallback
com.android.gallery
com.android.gesture.builder
com.android.htmlviewer
com.android.inputdevices
com.android.inputmethod.latin
com.android.keychain
com.android.location.fused
com.android.managedprovisioning
com.android.mms
com.android.mms.service
com.android.music
com.android.netspeed
com.android.packageinstaller
com.android.pacprocessor
com.android.phone
com.android.printspooler
com.android.protips
com.android.providers.calendar
com.android.providers.contacts
com.android.providers.downloads
com.android.providers.downloads.ui
com.android.providers.media
com.android.providers.settings
com.android.providers.telephony
com.android.providers.userdictionary
com.android.proxyhandler
com.android.sdksetup
com.android.server.telecom
com.android.settings
com.android.sharedstoragebackup
com.android.shell
com.android.smoketest
com.android.smoketest.tests
com.android.soundrecorder
com.android.speechrecorder
com.android.systemui
com.android.vpndialogs
com.android.wallpaper.livepicker
com.android.webview
com.android.widgetpreview
com.example.android.apis
com.example.android.livecubes
com.example.android.softkeyboard
com.google.android.apps.maps
com.google.android.calendar
com.google.android.googlequicksearchbox
com.google.android.launcher
com.google.android.play.games
com.google.android.street
com.google.android.syncadapters.contacts
com.svox.pico
jp.co.omronsoft.openwnn

com.google.android.gms
com.google.android.gsf
com.google.android.gm
com.google.android.gsf.login

not this:

package:com.android.vending

here it is:

com.google.android.gsf_7.1.2> rg 10.+sdkvers
sources\com\google\android\gsf\checkin\proto\Logs$AndroidBuildProto.java
265:            output.writeInt32(10, getSdkVersion());