@Override
    public void properties(SAPropertiesFetcher saPropertiesFetcher) {
        try {
            JSONObject jsonObject = getPresetProperties();
            // 防止覆盖客户自己传递的，SDK 内部有补发的 $AppEnd 场景
            if (saPropertiesFetcher.getProperties().has("$lib_version")) {
                jsonObject.remove("$lib_version");
            }
            if (saPropertiesFetcher.getProperties().has("$lib")) {
                jsonObject.remove("$lib");
            }
            if (saPropertiesFetcher.getProperties().has("$app_version")) {
                jsonObject.remove("$app_version");
            }
            JSONUtils.mergeJSONObject(jsonObject, saPropertiesFetcher.getProperties());
        } catch (Exception e) {
            SALog.printStackTrace(e);
        }
    }
@Test
    public void properties() {
        SensorsDataAPI sensorsDataAPI = SAHelper.initSensors(mApplication);
        SAPresetPropertyPlugin presetPropertyPlugin = new SAPresetPropertyPlugin(sensorsDataAPI.getSAContextManager());
        SAPropertiesFetcher saPropertiesFetcher = new SAPropertiesFetcher();
        JSONObject jsonObject = new JSONObject();
        saPropertiesFetcher.setProperties(jsonObject);
        presetPropertyPlugin.properties(saPropertiesFetcher);
        SAHelper.checkPresetProperty(jsonObject, sensorsDataAPI);
    }