diff --git a/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp b/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp index 25a1fd2fe7..3f4abd9c16 100644 --- a/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp +++ b/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp @@ -85,7 +85,6 @@ namespace build_tools xml.createNewChildElement ("integer")->addTextElement (String (value)); } - //============================================================================== static void addArrayToPlist (XmlElement& dict, String arrayKey, const StringArray& arrayElements) { dict.createNewChildElement ("key")->addTextElement (arrayKey); @@ -95,6 +94,14 @@ namespace build_tools plistStringArray->createNewChildElement ("string")->addTextElement (e); } + static int getAUVersionAsHexInteger (const PlistOptions& opts) + { + const auto segments = getVersionSegments (opts.marketingVersion); + const StringArray trimmed (segments.strings.getRawDataPointer(), jmin (segments.size(), 3)); + return getVersionAsHexIntegerFromParts (trimmed); + } + + //============================================================================== void PlistOptions::write (const File& infoPlistFile) const { writeStreamToFile (infoPlistFile, [&] (MemoryOutputStream& mo) { write (mo); }); @@ -160,7 +167,7 @@ namespace build_tools addPlistDictionaryKey (*dict, "CFBundleShortVersionString", marketingVersion); addPlistDictionaryKey (*dict, "CFBundleVersion", currentProjectVersion); addPlistDictionaryKey (*dict, "NSHumanReadableCopyright", companyCopyright); - addPlistDictionaryKey (*dict, "NSHighResolutionCapable", true); + addPlistDictionaryKey (*dict, "NSHighResolutionCapable", true); if (applicationCategory.isNotEmpty()) addPlistDictionaryKey (*dict, "LSApplicationCategoryType", applicationCategory); @@ -229,7 +236,7 @@ namespace build_tools addPlistDictionaryKey (*audioComponentsDict, "manufacturer", pluginManufacturerCode.substring (0, 4)); addPlistDictionaryKey (*audioComponentsDict, "type", IAATypeCode); addPlistDictionaryKey (*audioComponentsDict, "subtype", pluginCode.substring (0, 4)); - addPlistDictionaryKey (*audioComponentsDict, "version", versionAsHex); + addPlistDictionaryKey (*audioComponentsDict, "version", getVersionAsHexInteger (marketingVersion)); dict->addChildElement (new XmlElement (audioComponentsPlistEntry)); } @@ -295,7 +302,7 @@ namespace build_tools addPlistDictionaryKey (*dict, "manufacturer", truncatedCode); addPlistDictionaryKey (*dict, "type", auMainType.removeCharacters ("'")); addPlistDictionaryKey (*dict, "subtype", pluginSubType); - addPlistDictionaryKey (*dict, "version", versionAsHex); + addPlistDictionaryKey (*dict, "version", getAUVersionAsHexInteger (*this)); if (isAuSandboxSafe) { @@ -336,7 +343,7 @@ namespace build_tools addPlistDictionaryKey (*componentDict, "manufacturer", pluginManufacturerCode.substring (0, 4)); addPlistDictionaryKey (*componentDict, "type", auMainType.removeCharacters ("'")); addPlistDictionaryKey (*componentDict, "subtype", pluginCode.substring (0, 4)); - addPlistDictionaryKey (*componentDict, "version", versionAsHex); + addPlistDictionaryKey (*componentDict, "version", getAUVersionAsHexInteger (*this)); addPlistDictionaryKey (*componentDict, "sandboxSafe", true); componentDict->createNewChildElement ("key")->addTextElement ("tags"); diff --git a/extras/Build/juce_build_tools/utils/juce_PlistOptions.h b/extras/Build/juce_build_tools/utils/juce_PlistOptions.h index a1a93cea7a..b38172c80f 100644 --- a/extras/Build/juce_build_tools/utils/juce_PlistOptions.h +++ b/extras/Build/juce_build_tools/utils/juce_PlistOptions.h @@ -81,7 +81,6 @@ namespace build_tools String pluginManufacturerCode; String IAATypeCode; String pluginCode; - int versionAsHex = 0; StringArray iPhoneScreenOrientations; StringArray iPadScreenOrientations; diff --git a/extras/Build/juce_build_tools/utils/juce_VersionNumbers.cpp b/extras/Build/juce_build_tools/utils/juce_VersionNumbers.cpp index 29f351d95c..83ccefe31b 100644 --- a/extras/Build/juce_build_tools/utils/juce_VersionNumbers.cpp +++ b/extras/Build/juce_build_tools/utils/juce_VersionNumbers.cpp @@ -35,13 +35,11 @@ namespace build_tools return segments; } - int getVersionAsHexInteger (juce::StringRef versionString) + int getVersionAsHexIntegerFromParts (const StringArray& segments) { - auto segments = getVersionSegments (versionString); - auto value = (segments[0].getIntValue() << 16) - + (segments[1].getIntValue() << 8) - + segments[2].getIntValue(); + + (segments[1].getIntValue() << 8) + + segments[2].getIntValue(); if (segments.size() > 3) value = (value << 8) + segments[3].getIntValue(); @@ -49,6 +47,11 @@ namespace build_tools return value; } + int getVersionAsHexInteger (juce::StringRef versionString) + { + return getVersionAsHexIntegerFromParts (getVersionSegments (versionString)); + } + String getVersionAsHex (juce::StringRef versionString) { return "0x" + String::toHexString (getVersionAsHexInteger (versionString)); diff --git a/extras/Build/juce_build_tools/utils/juce_VersionNumbers.h b/extras/Build/juce_build_tools/utils/juce_VersionNumbers.h index a8d81bec8b..c52c9500f9 100644 --- a/extras/Build/juce_build_tools/utils/juce_VersionNumbers.h +++ b/extras/Build/juce_build_tools/utils/juce_VersionNumbers.h @@ -29,6 +29,7 @@ namespace build_tools { StringArray getVersionSegments (juce::StringRef p); + int getVersionAsHexIntegerFromParts (const StringArray& versionString); int getVersionAsHexInteger (juce::StringRef versionString); String getVersionAsHex (juce::StringRef versionString); diff --git a/extras/Build/juceaide/Main.cpp b/extras/Build/juceaide/Main.cpp index 2a72602682..a3b9a9a428 100644 --- a/extras/Build/juceaide/Main.cpp +++ b/extras/Build/juceaide/Main.cpp @@ -275,7 +275,6 @@ juce::build_tools::PlistOptions parsePlistOptions (const juce::File& file, updateField ("ICON_FILE", result.iconFile); result.type = type; - result.versionAsHex = juce::build_tools::getVersionAsHexInteger (result.marketingVersion); if (result.storyboardName.isNotEmpty()) result.storyboardName = result.storyboardName.fromLastOccurrenceOf ("/", false, false) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 9db3f99f44..dfb56f320b 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -1814,7 +1814,6 @@ public: options.pluginManufacturerCode = owner.project.getPluginManufacturerCodeString(); options.IAATypeCode = owner.project.getIAATypeCode(); options.pluginCode = owner.project.getPluginCodeString(); - options.versionAsHex = owner.project.getVersionAsHexInteger(); options.iPhoneScreenOrientations = owner.getiPhoneScreenOrientations(); options.iPadScreenOrientations = owner.getiPadScreenOrientations();