anchor.diff:          if target = ktLinux then
             AddNewPair('linux', 'full');
   
  -        // FPackageKMXFileInfos can contain target information for web/mobile targets.
  -        // This is a current limitation of FPackageJSFileInfos if there's no kmx files
  -        if (target = ktMobile) then
  +        if packageContainsKeyboardJs(TKeyboardUtils.KeyboardFileNameToId(keyboardFile.Filename)) then
           begin
  -          AddNewPair('android', 'full');
  -          AddNewPair('ios', 'full');
  -        end;
  -        if (target = ktIphone) or (target = ktIpad) then
  -        begin
  -          AddNewPair('ios', 'full');
  -        end;
  -        if (target = ktAndroidphone) or (target = ktAndroidtablet) then
  -        begin
  -          AddNewPair('android', 'full');
  +          // FPackageKMXFileInfos can contain target information for web/mobile targets.
  +          // This is a current limitation of FPackageJSFileInfos if there's no kmx files
  +          if (target = ktMobile) then
  +          begin
  +            AddNewPair('android', 'full');
  +            AddNewPair('ios', 'full');
  +          end;
  +          if (target = ktIphone) or (target = ktIpad) then
  +          begin
  +            AddNewPair('ios', 'full');
  +          end;
  +          if (target = ktAndroidphone) or (target = ktAndroidtablet) then
  +          begin
  +            AddNewPair('android', 'full');
  +          end;
           end;
         end;
       end;
  
positive.code:   BCP47Tag,
    JsonUtil,
    Keyman.System.KeyboardInfoFile,
    Keyman.System.LanguageCodeUtils,
    utilfiletypes,
    VersionInfo;
  
negative.code:     end;
    end;
  
    function packageContainsKeyboardJs(const id: string): Boolean;
    var
      kf: TKeyboardInfoMap;
    begin
      for kf in FPackageJSFileInfos do
        if SameText(TKeyboardUtils.KeyboardFileNameToID(kf.Filename), id) then
          Exit(True);
  
      Result := False;
    end;
  
  begin
    try
      // Validate pre-existing platformSupport
  