お茶漬けぶろぐ

Samsung Flowを他のデバイスにインストールしたい(軌跡その1)

普段遣い端末とLINE専用端末(rooted)の2台持ちをしている。原因はLINEのトーク履歴のフルバックアップにはrootedであることが最低条件である、というクソ設計なのだが…それは置いとくとして。
2台持ちしているけれど、ズボンのポケットに2台必ず入れとくのも面倒なので、トイレに籠るときとかコンビニにちょっと行くときは、普段遣い端末のみ持っていったりするのだ。通知の同期についてはIFTTTで対応して、操作についてはAnyDeskというのを使っている。それなりに快適だったのだが、ちょっと動きのカクカクがしんどいのもあり、何か代替はないかな〜と思っていた。
すまほんにて、Samsung Flowというのが紹介されていた。
LINE Lite難民に朗報!Galaxy Tab S8+でスマホアプリが起動できる「Samsung Flow」
これはSamsungのタブレットからSamsungスマホを操作するためのアプリなので、別メーカーとか別端末で使えたら嬉しいのう、今の自分の需要にマッチするのう、と思ったわけ。
なので、今回は手元のLINE専用端末にSamsung Flowを導入したい、というお話。
結論としては、次回持ち越しという感じ…試行錯誤の軌跡である。

環境

試行錯誤

インストールしたい

被操作端末でPlayストアを開くと、非対応端末ということでインストールできない。
しょうがないのでApkpureを使ってSamsung Flowのapkをダウンロード。
取り敢えず何も考えずadb installすると、

$ adb install ./Samsung\ Flow_v4.8.07.4_apkpure.com.apk 
Performing Streamed Install
adb: failed to install ./Samsung Flow_v4.8.07.4_apkpure.com.apk: Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY: Package couldn't be installed in /data/app/com.samsung.android.galaxycontinuity-ka_8-Jhi5299MOONkEgP-w==: Package com.samsung.android.galaxycontinuity requires unavailable shared library com.samsung.device; failing!]

必要なライブラリが無いぜ、という感じ。

com.samsung.deviceを移植したい

ぐぐってると、10年前の記事だが似た話を発見
[DEV] Samsung Smart View (Welcoming more help) | XDA Forums

操作端末はSamsung端末で、こちらは普通にインストールできるので、ここからデータを抜き出して移植してみる。

$ adb pull /system/framework/com.samsung.device.jar ./
$ adb pull /etc/permissions/com.samsung.device.xml ./
$ adb push ./com.samsung.device.jar /storage/emulated/0/
$ adb push ./com.samsung.device.xml /storage/emulated/0/

/systemを読み書きでマウントしたい

TWRPを起こしてマウントメニューからsystemを読み取り専用チェックボックスを外した状態で選ぶ…選べない。
ログを見ると、

\'/system\'をマウントできませんでした (Structure needs cleaning)

と言われる…かなしい。
ぐぐって見つけた以下によると、systemを一旦Wipeして入れ直せば良いとのこと。
failed to mount /system structure needs cleaning

TWRPで、
消去→高度な消去→Systemを選んでスワイプ!
restore→てきとうなバックアップ→systemのみチェックして実施

死んでたら嫌なので一旦普通に起動して動作確認。
うまくいった気配があるので、ここでもう一度念の為のフルバックアップをとっておく。

com.samsung.deviceを移植

TWRPで、マウント→Systemにチェック

$ adb shell mount | grep system
/dev/block/sda18 on /system type ext4 (rw, seclabel,relatime,data=ordered)

読み書きでマウントいけてそう。
データねじ込み。

$ adb shell
$ cp /sdcard/com.samsung.device.jar /system/framework/
$ cp /sdcard/com.samsung.device.xml /system/etc/permissions/
$ chmod 644 /system/framework/com.samsung.device.jar
$ chmod 644 /system/etc/permissions/com.samsung.device.xml
$ reboot

apkインストールしてリベンジ

$ adb install ./Samsung\ Flow_v4.8.07.4_apkpure.com.apk

ほんでアプリを起動してみるとダメでした状態…
まずrootedだよという警告が出たので、Magisk ManagerでHideしてみたところ、エラー落ち。
logcatを眺めていると、

05-07 02:33:54.698 10571 10571 I FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT]
05-07 02:33:54.708 10571 10571 I FirebaseInitProvider: FirebaseApp initialization successful
05-07 02:33:54.721 10571 10571 D SamsungFlow: [getSystemProperty] property : persist.omc.sales_code result :  (FeatureUtil.java:112)
05-07 02:33:54.722 10571 10571 D SamsungFlow: [getSystemProperty] property : ro.csc.sales_code result :  (FeatureUtil.java:112)
05-07 02:33:54.722 10571 10571 D SamsungFlow: [getSystemProperty] property : ro.build.characteristics result : default (FeatureUtil.java:112)
05-07 02:33:54.724 10571 10571 D SamsungAnalytics201008: DMA not foundcom.sec.android.diagmonagent
05-07 02:33:54.725 10571 10571 D SamsungAnalytics201008: Floating feature is not supported (non-samsung device)
05-07 02:33:54.725 10571 10571 W SamsungAnalytics201008: [Validation] ClassNotFoundException com.samsung.android.feature.SemFloatingFeature
05-07 02:33:54.725 10571 10571 W SamsungAnalytics201008: [SamsungAnalytics] NullPointerException Attempt to invoke virtual method 'void com.samsung.context.sdk.samsunganalytics.internal.Tracker.enableUncaughtExceptionLogging(java.lang.String, boolean, boolean)' on a null object reference
05-07 02:33:54.725 10571 10571 W SamsungAnalytics201008: [SamsungAnalytics] NullPointerException Attempt to invoke virtual method 'boolean com.samsung.context.sdk.samsunganalytics.internal.Tracker.isEnableUncaughtExceptionLogging()' on a null object reference
05-07 02:33:54.725 10571 10571 D SamsungFlow: [init] init: setSAConfiguration ExceptionLogging: false (SamsungAnalyticsUtils.java:296)
05-07 02:33:54.725 10571 10571 D SamsungFlow: [init] init: setSAConfiguration (SamsungAnalyticsUtils.java:298)
05-07 02:33:54.730 10571 10571 E ResourceType: Style contains key with bad entry: 0x0101056c
05-07 02:33:54.730 10571 10571 E ResourceType: Style contains key with bad entry: 0x01010586
05-07 02:33:54.737 10571 10571 D SamsungFlow: [onCreate] SamsungFlow version : 4.8.07.4 (SplashActivity.java:58)
05-07 02:33:54.739 10571 10571 E ResourceType: Style contains key with bad entry: 0x0101056c
05-07 02:33:54.739 10571 10571 E ResourceType: Style contains key with bad entry: 0x01010586
05-07 02:33:54.746  2627  3182 I SystemServicesProxy: RecentApps has 28 item(s).
05-07 02:33:54.749 10571 10571 I SamsungFlow: [initializePass] initializePass() start (SamsungPassServiceManager.java:56)
05-07 02:33:54.749  1270  3927 V LGSettingsProvider: call_put(secure:overview_last_stack_active_time=1651852253103)  calling package = com.android.systemui  callingUserId : 0
05-07 02:33:54.749 10571 10571 I AuthFW_PS_SDK_Pass: IINIT
05-07 02:33:54.750 10571 10571 E AuthFW_PS_SDK_PassConnector: This is not samsung device!
05-07 02:33:54.750  2627  3182 I SystemServicesProxy: Task.thumbnail loading failed for 21581
05-07 02:33:54.750 10571 10571 E AuthFW_PS_SDK_ProcessPass: Exception(Not Supported Pass on this device.)
05-07 02:33:54.750 10571 10571 I AuthFW_PS_SDK_Pass: INIT
05-07 02:33:54.750 10571 10571 E AuthFW_PS_SDK_PassConnector: This is not samsung device!
05-07 02:33:54.751 10571 10571 E SamsungFlow: [initializePass] PassUnsupportedException : Not Supported Pass on this device. (SamsungPassServiceManager.java:66)
05-07 02:33:54.757 10571 10571 I SamsungFlow: [setClientMode] setClientMode : Host (SettingsManager.java:606)
05-07 02:33:54.757 10571 10571 D SamsungFlow: [onPostExecuteConnected] onPostExecuteConnected (FlowServiceManager.java:198)
05-07 02:33:54.758 10571 10571 D SamsungFlow: [onPostExecuteConnected] Service not connected yet, execute later, action : com.samsung.android.galaxycontinuity.SplashActivity$2@657a290 (FlowServiceManager.java:204)
05-07 02:33:54.759 10571 10571 I SamsungFlow: [startService] bind SamsungFlowPhoneService (FlowServiceManager.java:89)
05-07 02:33:54.764  1270  2620 I ActivityManager: START u0 {flg=0x14000000 cmp=com.samsung.android.galaxycontinuity/.activities.phone.SetupEnrollmentActivity} from uid 10239
05-07 02:33:54.765  2800  4737 D VideoActivityMonitor: VE prop enable: false
05-07 02:33:54.767  1270  2620 D ActivityTrigger: activityStartTrigger: Activity is Triggerred in full screen ApplicationInfo{6bb2394 com.samsung.android.galaxycontinuity}
05-07 02:33:54.767  1270  2620 E ActivityTrigger: activityStartTrigger: not whiteListedcom.samsung.android.galaxycontinuity/com.samsung.android.galaxycontinuity.activities.phone.SetupEnrollmentActivity/480704000
05-07 02:33:54.767  2800  2830 D VideoActivityMonitor: VE prop enable: false
05-07 02:33:54.767  1270  2620 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{6bb2394 com.samsung.android.galaxycontinuity} is now in focus and seems to be in full-screen mode
05-07 02:33:54.767  1270  2620 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.samsung.android.galaxycontinuity/com.samsung.android.galaxycontinuity.activities.phone.SetupEnrollmentActivity/480704000
05-07 02:33:54.767  1270  2620 D ActivityTrigger: ActivityTrigger activityPauseTrigger 
05-07 02:33:54.771 10571 10571 V SamsungFlow: [<init>] ClavisService created
05-07 02:33:54.772 10571 10571 V SamsungFlow: [onCreate] SamsungFlowService onCreate
05-07 02:33:54.772 10571 10571 I SamsungFlow: [restoreSettings] restoreSettings in (SamsungFlowPhoneService.java:128)
05-07 02:33:54.782 10571 10571 D skia    : --- SkAndroidCodec::NewFromStream returned null
05-07 02:33:54.783 10571 10571 D AndroidRuntime: Shutting down VM
05-07 02:33:54.783 10571 10571 E AndroidRuntime: FATAL EXCEPTION: main
05-07 02:33:54.783 10571 10571 E AndroidRuntime: Process: com.samsung.android.galaxycontinuity, PID: 10571
05-07 02:33:54.783 10571 10571 E AndroidRuntime: java.lang.RuntimeException: Unable to create service com.samsung.android.galaxycontinuity.services.SamsungFlowPhoneService: android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class android.widget.ImageView
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.handleCreateService(ActivityThread.java:3479)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.-wrap4(Unknown Source:0)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:105)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6691)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class android.widget.ImageView
05-07 02:33:54.783 10571 10571 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #41: Error inflating class android.widget.ImageView
05-07 02:33:54.783 10571 10571 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at java.lang.reflect.Constructor.newInstance0(Native Method)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.createView(LayoutInflater.java:647)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.blackscreen.smartview.BlackScreenViewImpl.<init>(BlackScreenViewImpl.java:165)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.blackscreen.SmartViewBlackScreen.<init>(SmartViewBlackScreen.java:13)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.blackscreen.BlackScreenSelector.getProperBlackScreen(BlackScreenSelector.java:12)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.MirroringSource.<init>(MirroringSource.java:191)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.MirroringSource.getInstance(MirroringSource.java:184)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.manager.ExportedMirroringStateProvider.restoreMirroringState(ExportedMirroringStateProvider.java:73)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.services.SamsungFlowPhoneService.restoreSettings(SamsungFlowPhoneService.java:130)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.services.SamsungFlowPhoneService.onCreate(SamsungFlowPhoneService.java:78)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.handleCreateService(ActivityThread.java:3469)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.-wrap4(Unknown Source:0)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:105)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6691)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
05-07 02:33:54.783 10571 10571 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: Caused by: android.content.res.Resources$NotFoundException: Drawable com.samsung.android.galaxycontinuity:drawable/ic_smart_view with resource ID #0x7f070095
05-07 02:33:54.784 10571 10571 E AndroidRuntime: Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_smart_view.xml from drawable resource ID #0x7f070095
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:816)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:633)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.content.res.Resources.loadDrawable(Resources.java:894)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:953)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.widget.ImageView.<init>(ImageView.java:189)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.widget.ImageView.<init>(ImageView.java:172)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.widget.ImageView.<init>(ImageView.java:168)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at java.lang.reflect.Constructor.newInstance0(Native Method)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.createView(LayoutInflater.java:647)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.blackscreen.smartview.BlackScreenViewImpl.<init>(BlackScreenViewImpl.java:165)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.blackscreen.SmartViewBlackScreen.<init>(SmartViewBlackScreen.java:13)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.blackscreen.BlackScreenSelector.getProperBlackScreen(BlackScreenSelector.java:12)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.MirroringSource.<init>(MirroringSource.java:191)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.mirroring.MirroringSource.getInstance(MirroringSource.java:184)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.manager.ExportedMirroringStateProvider.restoreMirroringState(ExportedMirroringStateProvider.java:73)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.services.SamsungFlowPhoneService.restoreSettings(SamsungFlowPhoneService.java:130)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.samsung.android.galaxycontinuity.services.SamsungFlowPhoneService.onCreate(SamsungFlowPhoneService.java:78)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.handleCreateService(ActivityThread.java:3469)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.-wrap4(Unknown Source:0)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:105)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6691)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: <bitmap> requires a valid 'src' attribute
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.graphics.drawable.BitmapDrawable.updateStateFromTypedArray(BitmapDrawable.java:823)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:754)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:142)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1295)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1254)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:798)
05-07 02:33:54.784 10571 10571 E AndroidRuntime: 	... 42 more

てな感じで落ちる。データが見つかんねーよという落ち方だが…

順番に見ていこう

先頭の方でDMA not foundcom.sec.android.diagmonagent, non-samsung deviceみたいなメッセージがあるので、これも入れてあげないとかな〜?

〜〜SC-51A〜〜
$ adb shell pm list packages -f | grep diagmonagent
package:/system/priv-app/DiagMonAgent8/DiagMonAgent8.apk=com.sec.android.diagmonagent
$ adb pull /system/priv-app/DiagMonAgent8/DiagMonAgent8.apk ./

〜〜LG-H930DS〜〜
$ adb install DiagMonAgent8.apk
adb: failed to install DiagMonAgent8.apk: Failure [INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl1411168067.tmp/base.apk (at Binary XML file line #8): Requires newer sdk version #28 (current version is #26)]

オイッス〜そういやGalaxy S20はAndroid12、移植先はAndroid8なので、さすがにこれ離れすぎだなという…

一旦おわり

午前2時を超えるともう眠い。
このままじゃダメなので、移植先のAndroidバージョンを上げるのが良さそう。
稼働しているLINEインスタンスがいるので、これのバックアップやデータ移行の手順を確立してから実施しないといけないね。ていうかLG-H930DS用の新しいバージョンのROMがあれば良いけれども、無ければ自分で作ることになるのか…?

< MacBook Proをクラムシェルモードで使いたい

archLinuxの上でLeft 4 Dead 2サーバを立ててみる >