编辑
4、手动认证可以,代码如何自动认证呢?方法如下就是需要修改fingerprint相关属性。首先修改build/make/core/Makefile文件中的BUILD_FINGERPRINT,BUILD_FINGERPRINT的格式是组合起来的。相关文件:build\make\core\version_defaults.mk
........
........
........
# The string used to uniquely identify the combined build and product; used by the OTA server.
ifeq (,$(strip $(BUILD_FINGERPRINT)))
ifeq ($(strip $(HAS_BUILD_NUMBER)),false)
BF_BUILD_NUMBER := $(BUILD_USERNAME)$$($(DATE_FROM_FILE) %m%d%H%M)
else
BF_BUILD_NUMBER := $(file <$(BUILD_NUMBER_FILE))
endif
#add by jude for google play
_BRAND := MediaTek
_PRODUCT := m7332_eu
_DEVICE := m7332_eu
#_BUILD_NUMBER := eng.$(shell echo $${BUILD_USERNAME:0:6}).$(shell $(DATE) %Y%m%d.%H%M%S)
BUILD_FINGERPRINT := $(_BRAND)/$(_PRODUCT)/$(_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)
#BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BF_BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS)
#add end
endif
# unset it for safety.
BF_BUILD_NUMBER :=
........
........
........
然后还得修改system\core\init\property_service.cpp文件中的property_derive_build_fingerprint函数,ro.build.fingerprint前面的内容需要跟BUILD_FINGERPRINT中的保持一致。
// If the ro.build.fingerprint property has not been set, derive it from constituent pieces
static void property_derive_build_fingerprint() {
std::string build_fingerprint = GetProperty("ro.build.fingerprint", "");
if (!build_fingerprint.empty()) {
return;
}
const std::string UNKNOWN = "unknown";
build_fingerprint = "MediaTek";//GetProperty("ro.product.brand", UNKNOWN);//add by jude
build_fingerprint = '/';
build_fingerprint = "m7332_eu";//GetProperty("ro.product.name", UNKNOWN);
build_fingerprint = '/';
build_fingerprint = "m7332_eu";//GetProperty("ro.product.device", UNKNOWN);
build_fingerprint = ':';
build_fingerprint = GetProperty("ro.build.version.release", UNKNOWN);
build_fingerprint = '/';
build_fingerprint = GetProperty("ro.build.id", UNKNOWN);
build_fingerprint = '/';
build_fingerprint = GetProperty("ro.build.version.incremental", UNKNOWN);
build_fingerprint = ':';
build_fingerprint = GetProperty("ro.build.type", UNKNOWN);
build_fingerprint = '/';
build_fingerprint = GetProperty("ro.build.tags", UNKNOWN);
LOG(INFO) << "Setting property 'ro.build.fingerprint' to '" << build_fingerprint << "'";
std::string error;
uint32_t res = PropertySet("ro.build.fingerprint", build_fingerprint, &error);
if (res != PROP_SUCCESS) {
LOG(ERROR) << "Error setting property 'ro.build.fingerprint': err=" << res << " (" << error
<< ")";
}
}
通过以上修改,问题得到最终解决。