我们有一个有几个32位的APP。因为我们的APP只有32位而且没有64位,所以可以在64位Android系统上运行它,比如Android 6.0。
然而,最近我们在特殊设备上遇到崩溃,其中崩溃日志表明32位的公开故障,而不是64位。奇怪的是,如果我们不在清单文件中使用sharedUserId=" android.uid.system"
,那么在此设备中加载32位就可以了。但问题是我们必须使用系统UserID因为我们需要权限来操作串口。
正如我之前所说,在其他设备中,没有这样的问题。我们可以使用系统UersID并同时加载32位。在看构建时。 ROM的prop文件,我们发现特殊设备设置了CPU_ABI=arm64-v8a
,而其他设备设置了CPU_ABI=armeabi-v7a
。
众所周知,如果APK只有32位,Android会将APP视为32位。但是如何解释APP被视为64位的问题,即使只有32位,如果1)CPU_ABI=arm64-v8
和2)系统UserId?