react-native 调用Settings.Secure.getstring获取了android_id / app上架违规获取android_id被拒

华为上架时,被违规获取android_id原因拒绝上架, 使用HookLoginDemo检测结果如下

2022-06-08 10:36:49.956 28518-28550/? D/HookLogin: 调用Settings.Secure.getstring获取了android_id
2022-06-08 10:36:49.957 28518-28550/? E/HookLogin: java.io.IOException
        at com.example.hooklogin.HookLogin.getMethodStack(HookLogin.java:213)
        at com.example.hooklogin.HookLogin.access$000(HookLogin.java:23)
        at com.example.hooklogin.HookLogin$6.afterHookedMethod(HookLogin.java:184)
        at de.robv.android.xposed.DexposedBridge.handleHookedArtMethod(DexposedBridge.java:265)
        at me.weishu.epic.art.entry.Entry64.onHookObject(Entry64.java:64)
        at me.weishu.epic.art.entry.Entry64.referenceBridge(Entry64.java:239)
        at com.learnium.RNDeviceInfo.RNDeviceModule.getUniqueIdSync(RNDeviceModule.java:658)
        at com.learnium.RNDeviceInfo.RNDeviceModule.getConstants(RNDeviceModule.java:162)
        at com.facebook.react.bridge.JavaModuleWrapper.getConstants(JavaModuleWrapper.java:128)
        at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:26)
        at android.os.Looper.loop(Looper.java:227)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:225)
        at java.lang.Thread.run(Thread.java:919)

HookLoginDemo使用方式百度一下

经过排查at com.learnium.RNDeviceInfo.RNDeviceModule.getUniqueIdSync(RNDeviceModule.java:658)确定是第三方依赖react-native-device-info导致的问题

解决方案 : 将import导入改为内联应用

import DeviceInfo from 'react-native-device-info';
const getDevicesId = () => {
	return DeviceInfo.getUniqueId()
}

修改为

const getDevicesId = () => {
	const DeviceInfo = require('react-native-device-info').default;
	return DeviceInfo.getUniqueId()
}

补充:该方法还是会获取android_id,,,此处理的原因是,调用该组件的方法前,用户已经同意隐私政策,即:用户首次启动并同意隐私政策,后续使用该组件库的时候再获取android_id,不会被商店视为违规

原文: http://t.csdn.cn/jswba

你可能感兴趣的:(android,react.js,react,native)