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

環境

  • 操作端末(普段遣い)
    • Galaxy S20(SC-51A)
      • Android12
      • 非root
  • 被操作端末(LINE専用端末)
    • LG-H930DS
      • Android8
      • rooted

試行錯誤

インストールしたい

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

1
2
3
$ 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端末で、こちらは普通にインストールできるので、ここからデータを抜き出して移植してみる。

1
2
3
4
$ 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を読み取り専用チェックボックスを外した状態で選ぶ…選べない。
ログを見ると、

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

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

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

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

com.samsung.deviceを移植

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

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

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

1
2
3
4
5
6
$ 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インストールしてリベンジ

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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みたいなメッセージがあるので、これも入れてあげないとかな〜?

1
2
3
4
5
6
7
8
〜〜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があれば良いけれども、無ければ自分で作ることになるのか…?