答:使用 file 命令
# file /system/bin/dalvikvm64
/system/bin/dalvikvm64: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 28, BuildID=17f49e4a4ec8b7f4ace738c1146fe0a6, stripped
注:file /system/bin/dalvikvm 是个符号链接,用来兼容之前32位
/system/bin/dalvikvm: symbolic link
file libchrome.so
libchrome.so: ELF shared object, 32-bit LSB arm, for Android 28, BuildID=7b0eff684ce95745e2b2a3a2e0ad4398, stripped
答:
(1)通过看父进程是zygote还是zygote64
(2) cat /proc/4215/maps |grep lib64
查看加载的.so库
# ps -A|grep zygote
root 935 1 4312904 155112 poll_schedule_timeout 0 S zygote64 启动64位apk
root 936 1 1632628 139536 poll_schedule_timeout 0 S zygote
u0_a11 1433 935 4483840 186160 SyS_epoll_wait 0 S com.android.systemui
u0_a7 2178 935 4412148 105000 SyS_epoll_wait 0 S android.process.media
bluetooth 2423 935 4400136 89040 SyS_epoll_wait 0 S com.android.bluetooth
system 2983 935 4389644 79828 SyS_epoll_wait 0 S com.android.keychain
u0_a8 3013 935 4395316 81680 SyS_epoll_wait 0 S android.ext.services
u0_a1 15796 935 4396308 104332 SyS_epoll_wait 0 S android.process.acore
答:删除 /data/dalvik-cache/arm64 或 /data/dalvik-cache/armlib 目录下对应的文件。
4、报错 java.lang.ClassNotFoundExceptionjava.lang.ClassNotFoundException: Didn't find class "com.target." on path: DexPathList[[zip file "/system/priv-app
zygote64 Rejecting re-init on previously-failed class java.lang.Class
答:查看SDK版本问题、缓存问题、.so库路径。
在Android 8.1 由于seLinux权限管理很严格,默认app 修改属性会报 avc denied 错误.
6.android.uid.system 同一个uid的应用不能32位和64位混着用。解决方法:
1.在apk对应的android.mk中
LOCAL_DEX_PREOPT := nostripping
2. /device/qcom/msmxxxx/BoardConfig.mk,
DEX_PREOPT_DEFAULT := nostripping
上传apk到目录 /system/app 或 /system/priv-app。
把apk中的.so库上传到 /system/lib或/system/lib64



