From 0658370cce4459f0c7bf60264ab5042dab323a85 Mon Sep 17 00:00:00 2001 From: mauricecarrier Date: Thu, 30 Jan 2025 22:43:03 -0500 Subject: [PATCH] PP-2077, PP-2105, PP-2082 (#502) * Present user settings as popover on iPhone * remove old R2 references and clean up * Update adept-ios * Update AdobeContentProtectionService.swift * Update AdobeDRMContentProtection.swift * Update adept-ios * Update project.pbxproj --- .github/workflows/upload-on-merge.yml | 13 --- Palace.xcodeproj/project.pbxproj | 52 +++++------ .../xcshareddata/xcschemes/Palace.xcscheme | 14 ++- .../TPPRootTabBarController.h | 4 +- .../TPPRootTabBarController.m | 4 +- .../TPPRootTabBarController+R2.swift | 4 +- .../AdobeContentProtectionService.swift | 1 - .../AdobeDRM/AdobeDRMContentProtection.swift | 80 ++++------------- ...FetcherError.swift => AdobeDRMError.swift} | 4 +- .../AdobeDRM/AdobeDRMFetcher.swift | 88 ------------------- .../LibraryService.swift | 22 +---- .../{TPPR2Owner.swift => TPPR3Owner.swift} | 11 ++- Palace/Reader2/UI/TPPEPUBViewController.swift | 15 ++-- RDServices.xcodeproj/project.pbxproj | 2 + ios-audiobooktoolkit | 2 +- scripts/adobe-rmsdk-build.sh | 4 +- 16 files changed, 78 insertions(+), 242 deletions(-) rename Palace/Reader2/ReaderStackConfiguration/AdobeDRM/{AdobeDRMFetcherError.swift => AdobeDRMError.swift} (86%) delete mode 100644 Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMFetcher.swift rename Palace/Reader2/ReaderStackConfiguration/{TPPR2Owner.swift => TPPR3Owner.swift} (86%) diff --git a/.github/workflows/upload-on-merge.yml b/.github/workflows/upload-on-merge.yml index 18bfd9ac5..da3bef327 100644 --- a/.github/workflows/upload-on-merge.yml +++ b/.github/workflows/upload-on-merge.yml @@ -89,21 +89,8 @@ jobs: env: BUILD_CONTEXT: ci - # Set up Python environment and install requests - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - - name: Install Python dependencies - run: | - python3 -m venv .venv - source .venv/bin/activate - python3 -m pip install requests - - name: Create release notes run: | - source .venv/bin/activate ./scripts/create-release-notes.sh env: BUILD_CONTEXT: ci diff --git a/Palace.xcodeproj/project.pbxproj b/Palace.xcodeproj/project.pbxproj index d89c7540a..75f4b0b7c 100644 --- a/Palace.xcodeproj/project.pbxproj +++ b/Palace.xcodeproj/project.pbxproj @@ -149,8 +149,8 @@ 21C184DC27B12347008CC4F8 /* UINavigationBar+appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21C184DB27B12347008CC4F8 /* UINavigationBar+appearance.swift */; }; 21C184DD27B12347008CC4F8 /* UINavigationBar+appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21C184DB27B12347008CC4F8 /* UINavigationBar+appearance.swift */; }; 21C7B87E25AE1DBA000E8BF3 /* LibraryServiceError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21C7B87D25AE1DB9000E8BF3 /* LibraryServiceError.swift */; }; - 21D746E72718A4C000C0E1B4 /* AdobeDRMFetcherError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D746E62718A4C000C0E1B4 /* AdobeDRMFetcherError.swift */; }; - 21D746E82718A4C000C0E1B4 /* AdobeDRMFetcherError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D746E62718A4C000C0E1B4 /* AdobeDRMFetcherError.swift */; }; + 21D746E72718A4C000C0E1B4 /* AdobeDRMError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D746E62718A4C000C0E1B4 /* AdobeDRMError.swift */; }; + 21D746E82718A4C000C0E1B4 /* AdobeDRMError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D746E62718A4C000C0E1B4 /* AdobeDRMError.swift */; }; 21D746F42719AFD600C0E1B4 /* AdobeContentProtectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21E35FC2268CC8AC00066F9D /* AdobeContentProtectionService.swift */; }; 21DCC39C27BE4AF900064B37 /* TPPReaderFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DCC39B27BE4AF900064B37 /* TPPReaderFont.swift */; }; 21DCC39D27BE4AF900064B37 /* TPPReaderFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DCC39B27BE4AF900064B37 /* TPPReaderFont.swift */; }; @@ -164,8 +164,6 @@ 21DDE32625D2CECC002CBCE3 /* AdobeDRMContainer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 21F238C12499155E004DC0B1 /* AdobeDRMContainer.mm */; }; 21DDE32825D2CEFC002CBCE3 /* AdobeDRMContentProtection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DDE32725D2CEFC002CBCE3 /* AdobeDRMContentProtection.swift */; }; 21DDE32C25D2CEFC002CBCE3 /* AdobeDRMContentProtection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DDE32725D2CEFC002CBCE3 /* AdobeDRMContentProtection.swift */; }; - 21DDE32E25D31DB4002CBCE3 /* AdobeDRMFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DDE32D25D31DB4002CBCE3 /* AdobeDRMFetcher.swift */; }; - 21DDE33225D31DB4002CBCE3 /* AdobeDRMFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DDE32D25D31DB4002CBCE3 /* AdobeDRMFetcher.swift */; }; 21DF7F9325AF5E1E0090402A /* ReaderModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DF7F9225AF5E1E0090402A /* ReaderModule.swift */; }; 21E35FC3268CC8AC00066F9D /* AdobeContentProtectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21E35FC2268CC8AC00066F9D /* AdobeContentProtectionService.swift */; }; 21E4176E292810B800A78606 /* EmailAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = E551116D283C93BC0095E723 /* EmailAddress.swift */; }; @@ -299,7 +297,7 @@ 739062D225358CF900D0743D /* TPPSignInBusinessLogicUIDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 739062D125358CF900D0743D /* TPPSignInBusinessLogicUIDelegate.swift */; }; 739ECB2425101CCE00691A70 /* NSNotification+TPP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 739ECB2325101CCE00691A70 /* NSNotification+TPP.swift */; }; 739ECB2B25102A2B00691A70 /* TPPCatalogs+SE.swift in Sources */ = {isa = PBXBuildFile; fileRef = 739ECB2A25102A2B00691A70 /* TPPCatalogs+SE.swift */; }; - 73A2299B240F3B9B006B9EAD /* TPPR2Owner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299A240F3B9B006B9EAD /* TPPR2Owner.swift */; }; + 73A2299B240F3B9B006B9EAD /* TPPR3Owner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299A240F3B9B006B9EAD /* TPPR3Owner.swift */; }; 73A229A2240F3BEB006B9EAD /* LibraryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299E240F3BEA006B9EAD /* LibraryService.swift */; }; 73A229AD2410221E006B9EAD /* EPUBModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A229AC2410221E006B9EAD /* EPUBModule.swift */; }; 73A794A625477D8F00C59CC1 /* TPPSignInBusinessLogic+UI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A794A525477D8F00C59CC1 /* TPPSignInBusinessLogic+UI.swift */; }; @@ -315,7 +313,7 @@ 73C3CF5825C8EB6B00CA8166 /* TPPUserAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CE5304243C020800315E63 /* TPPUserAccount.swift */; }; 73C3CF5A25CB8D6100CA8166 /* NYPLNetworkExecutorMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73C3CF5925CB8D6100CA8166 /* NYPLNetworkExecutorMock.swift */; }; 73CDA121243EDAD8009CC6A6 /* URLRequest+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73CDA120243EDAD8009CC6A6 /* URLRequest+Logging.swift */; }; - 73D8D26825A68C6500DF5F69 /* TPPR2Owner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299A240F3B9B006B9EAD /* TPPR2Owner.swift */; }; + 73D8D26825A68C6500DF5F69 /* TPPR3Owner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299A240F3B9B006B9EAD /* TPPR3Owner.swift */; }; 73D8D26E25A68CA900DF5F69 /* LibraryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299E240F3BEA006B9EAD /* LibraryService.swift */; }; 73D8D27525A68D2C00DF5F69 /* TPPBaseReaderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73F713552417200F00C63B81 /* TPPBaseReaderViewController.swift */; }; 73D8D27725A68D3B00DF5F69 /* UIViewController+TPP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73F713672417240100C63B81 /* UIViewController+TPP.swift */; }; @@ -654,7 +652,7 @@ D570B5A02BA20139003FE991 /* AdobeDRMLibraryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21F238C724991A2A004DC0B1 /* AdobeDRMLibraryService.swift */; }; D570B5A12BA20139003FE991 /* UIButton+NYPLAppearanceAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 081387591BC5767F003DEA6A /* UIButton+NYPLAppearanceAdditions.m */; }; D570B5A22BA20139003FE991 /* TPPPDFReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E704804D2859253900019B31 /* TPPPDFReaderView.swift */; }; - D570B5A32BA20139003FE991 /* AdobeDRMFetcherError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D746E62718A4C000C0E1B4 /* AdobeDRMFetcherError.swift */; }; + D570B5A32BA20139003FE991 /* AdobeDRMError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D746E62718A4C000C0E1B4 /* AdobeDRMError.swift */; }; D570B5A42BA20139003FE991 /* TPPEPUBViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73F713502417200F00C63B81 /* TPPEPUBViewController.swift */; }; D570B5A52BA20139003FE991 /* SEMigrations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73085E3425030D27008F6244 /* SEMigrations.swift */; }; D570B5A62BA20139003FE991 /* MyBooksSimplifiedBearerToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = E544C4EE2A395E8C00B2DC9D /* MyBooksSimplifiedBearerToken.swift */; }; @@ -772,7 +770,6 @@ D570B6182BA20139003FE991 /* TPPProblemReportViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 085D31D61BE29E38007F7672 /* TPPProblemReportViewController.m */; }; D570B61A2BA20139003FE991 /* Dictionary+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E544C4F62A3C1E4A00B2DC9D /* Dictionary+Extensions.swift */; }; D570B61B2BA20139003FE991 /* TPPLCPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 219747F626D9218400FA25DF /* TPPLCPClient.swift */; }; - D570B61C2BA20139003FE991 /* AdobeDRMFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DDE32D25D31DB4002CBCE3 /* AdobeDRMFetcher.swift */; }; D570B61D2BA20139003FE991 /* TPPHoldsNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11C5DCF11976D1E0005A9945 /* TPPHoldsNavigationController.m */; }; D570B61E2BA20139003FE991 /* TPPLastReadPositionPoster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73DB56CB25F7F684003788EE /* TPPLastReadPositionPoster.swift */; }; D570B61F2BA20139003FE991 /* TPPRemoteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A42E0DF01B3F5A490095EBAE /* TPPRemoteViewController.m */; }; @@ -872,7 +869,7 @@ D570B67E2BA20139003FE991 /* ReaderFormatModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21DF7F9725AF5E560090402A /* ReaderFormatModule.swift */; }; D570B67F2BA20139003FE991 /* TPPBookDetailsProblemDocumentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CE9C470237F84820072E964 /* TPPBookDetailsProblemDocumentViewController.swift */; }; D570B6802BA20139003FE991 /* UIViewControllerWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E54DD4C6275C60E70013C200 /* UIViewControllerWrapper.swift */; }; - D570B6812BA20139003FE991 /* TPPR2Owner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299A240F3B9B006B9EAD /* TPPR2Owner.swift */; }; + D570B6812BA20139003FE991 /* TPPR3Owner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A2299A240F3B9B006B9EAD /* TPPR3Owner.swift */; }; D570B6822BA20139003FE991 /* TPPCatalogGroupedFeed.m in Sources */ = {isa = PBXBuildFile; fileRef = A4BA1D121B43046B006F83DF /* TPPCatalogGroupedFeed.m */; }; D570B6832BA20139003FE991 /* TPPPDFDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7CBF976285CA41400F00C02 /* TPPPDFDocument.swift */; }; D570B6842BA20139003FE991 /* TPPCatalogFacet.m in Sources */ = {isa = PBXBuildFile; fileRef = 11F3773219E0876F00487769 /* TPPCatalogFacet.m */; }; @@ -1674,12 +1671,11 @@ 2199020724FD35DC001BC727 /* JWKResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JWKResponse.swift; sourceTree = ""; }; 21C184DB27B12347008CC4F8 /* UINavigationBar+appearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationBar+appearance.swift"; sourceTree = ""; }; 21C7B87D25AE1DB9000E8BF3 /* LibraryServiceError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibraryServiceError.swift; sourceTree = ""; }; - 21D746E62718A4C000C0E1B4 /* AdobeDRMFetcherError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdobeDRMFetcherError.swift; sourceTree = ""; }; + 21D746E62718A4C000C0E1B4 /* AdobeDRMError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdobeDRMError.swift; sourceTree = ""; }; 21DCC39B27BE4AF900064B37 /* TPPReaderFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TPPReaderFont.swift; sourceTree = ""; }; 21DCC3AA27BEC38F00064B37 /* TPPAssociatedColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TPPAssociatedColors.swift; sourceTree = ""; }; 21DCC3AD27BEDB5A00064B37 /* TPPReaderAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TPPReaderAppearance.swift; sourceTree = ""; }; 21DDE32725D2CEFC002CBCE3 /* AdobeDRMContentProtection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdobeDRMContentProtection.swift; sourceTree = ""; }; - 21DDE32D25D31DB4002CBCE3 /* AdobeDRMFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdobeDRMFetcher.swift; sourceTree = ""; }; 21DE2A8025B1FF5A00BCC9E0 /* R2Shared.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = R2Shared.framework; path = "../r2-lcp-swift/Carthage/Build/iOS/R2Shared.framework"; sourceTree = ""; }; 21DF7F9225AF5E1E0090402A /* ReaderModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderModule.swift; sourceTree = ""; }; 21DF7F9725AF5E560090402A /* ReaderFormatModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderFormatModule.swift; sourceTree = ""; }; @@ -1833,7 +1829,7 @@ 739ECB2D25108EE800691A70 /* TPPRootTabBarController+SE.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TPPRootTabBarController+SE.swift"; sourceTree = ""; }; 73A1DAD02592AD0F00712B5F /* Appfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Appfile; sourceTree = ""; }; 73A1DAD12592AD0F00712B5F /* Fastfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Fastfile; sourceTree = ""; }; - 73A2299A240F3B9B006B9EAD /* TPPR2Owner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TPPR2Owner.swift; sourceTree = ""; }; + 73A2299A240F3B9B006B9EAD /* TPPR3Owner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TPPR3Owner.swift; sourceTree = ""; }; 73A2299E240F3BEA006B9EAD /* LibraryService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibraryService.swift; sourceTree = ""; }; 73A229AC2410221E006B9EAD /* EPUBModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EPUBModule.swift; sourceTree = ""; }; 73A794A525477D8F00C59CC1 /* TPPSignInBusinessLogic+UI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TPPSignInBusinessLogic+UI.swift"; sourceTree = ""; }; @@ -2410,8 +2406,7 @@ 21F238C12499155E004DC0B1 /* AdobeDRMContainer.mm */, 21F238C724991A2A004DC0B1 /* AdobeDRMLibraryService.swift */, 21DDE32725D2CEFC002CBCE3 /* AdobeDRMContentProtection.swift */, - 21DDE32D25D31DB4002CBCE3 /* AdobeDRMFetcher.swift */, - 21D746E62718A4C000C0E1B4 /* AdobeDRMFetcherError.swift */, + 21D746E62718A4C000C0E1B4 /* AdobeDRMError.swift */, 21E35FC2268CC8AC00066F9D /* AdobeContentProtectionService.swift */, 21F4BF3926BC62D4000CF592 /* AdobeCertificate.swift */, 21562CC2276BB52700C03372 /* AdobeDRMAlerts.swift */, @@ -2649,7 +2644,7 @@ 7361615425F706D600395337 /* ReaderStackConfiguration */ = { isa = PBXGroup; children = ( - 73A2299A240F3B9B006B9EAD /* TPPR2Owner.swift */, + 73A2299A240F3B9B006B9EAD /* TPPR3Owner.swift */, 73A2299E240F3BEA006B9EAD /* LibraryService.swift */, 733DEC8B24108D8D008C74BC /* DRMLibraryService.swift */, 21C7B87D25AE1DB9000E8BF3 /* LibraryServiceError.swift */, @@ -4325,7 +4320,7 @@ buildActionMask = 2147483647; files = ( 73D8D26E25A68CA900DF5F69 /* LibraryService.swift in Sources */, - 73D8D26825A68C6500DF5F69 /* TPPR2Owner.swift in Sources */, + 73D8D26825A68C6500DF5F69 /* TPPR3Owner.swift in Sources */, 73EB0A6525821DF4006BC997 /* TPPLibraryDescriptionCell.swift in Sources */, 73D8D28125A68D4F00DF5F69 /* EPUBModule.swift in Sources */, 21F4BF3B26BC62D4000CF592 /* AdobeCertificate.swift in Sources */, @@ -4413,7 +4408,7 @@ 73DB56C925F769FF003788EE /* TPPLastReadPositionSynchronizer.swift in Sources */, E708F721284781D50028405B /* TPPEncryptedPDFViewController.swift in Sources */, 73D8D27925A68D3B00DF5F69 /* TPPReaderPositionsVC.swift in Sources */, - 21D746E82718A4C000C0E1B4 /* AdobeDRMFetcherError.swift in Sources */, + 21D746E82718A4C000C0E1B4 /* AdobeDRMError.swift in Sources */, 73EB0A9425821DF4006BC997 /* UIButton+NYPLAppearanceAdditions.m in Sources */, E5E2F8D52CB631C700A95840 /* TPPSAMLHelper.swift in Sources */, 73EB0A9625821DF4006BC997 /* SEMigrations.swift in Sources */, @@ -4464,7 +4459,6 @@ 73EB0AAD25821DF4006BC997 /* UIView+TPPViewAdditions.m in Sources */, E53573D0295612BA008BDCA4 /* MyBooksView.swift in Sources */, E7862A232773924900BE8AB8 /* UIViewControllerWrapper.swift in Sources */, - 21DDE33225D31DB4002CBCE3 /* AdobeDRMFetcher.swift in Sources */, 21E4177A292810E000A78606 /* TPPPDFPage.swift in Sources */, E795A7682A74074300314EC8 /* AudiobookTimeEntry.swift in Sources */, 73EB0AB025821DF4006BC997 /* JWKResponse.swift in Sources */, @@ -4751,7 +4745,7 @@ 21DDE31325D2CE9A002CBCE3 /* AdobeDRMLibraryService.swift in Sources */, 0813875A1BC5767F003DEA6A /* UIButton+NYPLAppearanceAdditions.m in Sources */, E704804E2859253900019B31 /* TPPPDFReaderView.swift in Sources */, - 21D746E72718A4C000C0E1B4 /* AdobeDRMFetcherError.swift in Sources */, + 21D746E72718A4C000C0E1B4 /* AdobeDRMError.swift in Sources */, E5515EBE2AD8E13E000BDFE9 /* TPPEPUBViewController.swift in Sources */, 73085E3525030D27008F6244 /* SEMigrations.swift in Sources */, E544C4EF2A395E8C00B2DC9D /* MyBooksSimplifiedBearerToken.swift in Sources */, @@ -4873,7 +4867,6 @@ 085D31D71BE29E38007F7672 /* TPPProblemReportViewController.m in Sources */, E544C4F72A3C1E4A00B2DC9D /* Dictionary+Extensions.swift in Sources */, 219747FC26D9218400FA25DF /* TPPLCPClient.swift in Sources */, - 21DDE32E25D31DB4002CBCE3 /* AdobeDRMFetcher.swift in Sources */, 11C5DCF21976D1E0005A9945 /* TPPHoldsNavigationController.m in Sources */, 73DB56CC25F7F739003788EE /* TPPLastReadPositionPoster.swift in Sources */, A42E0DF11B3F5A490095EBAE /* TPPRemoteViewController.m in Sources */, @@ -4974,7 +4967,7 @@ 2126FE6225C0890E0095C45C /* ReaderFormatModule.swift in Sources */, 8CE9C471237F84820072E964 /* TPPBookDetailsProblemDocumentViewController.swift in Sources */, E54DD4F9275D9E7F0013C200 /* UIViewControllerWrapper.swift in Sources */, - 73A2299B240F3B9B006B9EAD /* TPPR2Owner.swift in Sources */, + 73A2299B240F3B9B006B9EAD /* TPPR3Owner.swift in Sources */, A4BA1D131B43046B006F83DF /* TPPCatalogGroupedFeed.m in Sources */, E7CBF977285CA41400F00C02 /* TPPPDFDocument.swift in Sources */, 11F3773319E0876F00487769 /* TPPCatalogFacet.m in Sources */, @@ -5098,7 +5091,7 @@ D570B5A02BA20139003FE991 /* AdobeDRMLibraryService.swift in Sources */, D570B5A12BA20139003FE991 /* UIButton+NYPLAppearanceAdditions.m in Sources */, D570B5A22BA20139003FE991 /* TPPPDFReaderView.swift in Sources */, - D570B5A32BA20139003FE991 /* AdobeDRMFetcherError.swift in Sources */, + D570B5A32BA20139003FE991 /* AdobeDRMError.swift in Sources */, D570B5A42BA20139003FE991 /* TPPEPUBViewController.swift in Sources */, D570B5A52BA20139003FE991 /* SEMigrations.swift in Sources */, D570B5A62BA20139003FE991 /* MyBooksSimplifiedBearerToken.swift in Sources */, @@ -5221,7 +5214,6 @@ D570B6182BA20139003FE991 /* TPPProblemReportViewController.m in Sources */, D570B61A2BA20139003FE991 /* Dictionary+Extensions.swift in Sources */, D570B61B2BA20139003FE991 /* TPPLCPClient.swift in Sources */, - D570B61C2BA20139003FE991 /* AdobeDRMFetcher.swift in Sources */, D570B61D2BA20139003FE991 /* TPPHoldsNavigationController.m in Sources */, D570B61E2BA20139003FE991 /* TPPLastReadPositionPoster.swift in Sources */, D570B61F2BA20139003FE991 /* TPPRemoteViewController.m in Sources */, @@ -5323,7 +5315,7 @@ D570B67E2BA20139003FE991 /* ReaderFormatModule.swift in Sources */, D570B67F2BA20139003FE991 /* TPPBookDetailsProblemDocumentViewController.swift in Sources */, D570B6802BA20139003FE991 /* UIViewControllerWrapper.swift in Sources */, - D570B6812BA20139003FE991 /* TPPR2Owner.swift in Sources */, + D570B6812BA20139003FE991 /* TPPR3Owner.swift in Sources */, D570B6822BA20139003FE991 /* TPPCatalogGroupedFeed.m in Sources */, D570B6832BA20139003FE991 /* TPPPDFDocument.swift in Sources */, D570B6842BA20139003FE991 /* TPPCatalogFacet.m in Sources */, @@ -5607,7 +5599,7 @@ CODE_SIGN_IDENTITY = "Apple Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 309; DEVELOPMENT_TEAM = 88CBA74T8K; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K; ENABLE_BITCODE = NO; @@ -5666,7 +5658,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR; CODE_SIGN_ENTITLEMENTS = Palace/SimplyE.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 309; DEVELOPMENT_TEAM = 88CBA74T8K; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K; ENABLE_BITCODE = NO; @@ -5851,7 +5843,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 309; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K; ENABLE_BITCODE = NO; @@ -5912,7 +5904,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR; CODE_SIGN_ENTITLEMENTS = Palace/SimplyE.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 309; DEVELOPMENT_TEAM = 88CBA74T8K; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K; ENABLE_BITCODE = NO; @@ -5974,7 +5966,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 309; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K; ENABLE_BITCODE = NO; @@ -6035,7 +6027,7 @@ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR; CODE_SIGN_ENTITLEMENTS = Palace/SimplyE.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 309; DEVELOPMENT_TEAM = 88CBA74T8K; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K; ENABLE_BITCODE = NO; diff --git a/Palace.xcodeproj/xcshareddata/xcschemes/Palace.xcscheme b/Palace.xcodeproj/xcshareddata/xcschemes/Palace.xcscheme index 54cd2418b..f4d92e394 100644 --- a/Palace.xcodeproj/xcshareddata/xcschemes/Palace.xcscheme +++ b/Palace.xcodeproj/xcshareddata/xcschemes/Palace.xcscheme @@ -27,7 +27,7 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" - disableMainThreadChecker = "YES" + systemAttachmentLifetime = "keepNever" codeCoverageEnabled = "YES" onlyGenerateCoverageForSpecifiedTargets = "YES"> @@ -39,6 +39,18 @@ ReferencedContainer = "container:Palace.xcodeproj"> + + + + + + @property (nonatomic) TPPMyBooksViewController *myBooksNavigationController; @property (nonatomic) TPPHoldsNavigationController *holdsNavigationController; @property (nonatomic) TPPSettingsViewController *settingsViewController; -@property (readwrite) TPPR2Owner *r2Owner; +@property (readwrite) TPPR3Owner *r3Owner; @end @@ -55,7 +55,7 @@ - (instancetype)init name:NSNotification.TPPCurrentAccountDidChange object:nil]; - self.r2Owner = [[TPPR2Owner alloc] init]; + self.r3Owner = [[TPPR3Owner alloc] init]; return self; } diff --git a/Palace/Reader2/ReaderPresentation/TPPRootTabBarController+R2.swift b/Palace/Reader2/ReaderPresentation/TPPRootTabBarController+R2.swift index f20b5f77f..875406454 100644 --- a/Palace/Reader2/ReaderPresentation/TPPRootTabBarController+R2.swift +++ b/Palace/Reader2/ReaderPresentation/TPPRootTabBarController+R2.swift @@ -10,7 +10,7 @@ import Foundation @objc extension TPPRootTabBarController { func presentBook(_ book: TPPBook) { - guard let libraryService = r2Owner?.libraryService, let readerModule = r2Owner?.readerModule else { + guard let libraryService = r3Owner?.libraryService, let readerModule = r3Owner?.readerModule else { return } @@ -44,7 +44,7 @@ import Foundation isPresentingSample = false } - guard let libraryService = r2Owner?.libraryService, let readerModule = r2Owner?.readerModule else { + guard let libraryService = r3Owner?.libraryService, let readerModule = r3Owner?.readerModule else { return } diff --git a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeContentProtectionService.swift b/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeContentProtectionService.swift index c678f0a44..ba49d91c1 100644 --- a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeContentProtectionService.swift +++ b/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeContentProtectionService.swift @@ -48,7 +48,6 @@ final class AdobeContentProtectionService: ContentProtectionService { LocalizedString.nonlocalized("Adobe DRM") } - /// Known technology for this type of Content Protection (Adobe DRM). var scheme: ContentProtectionScheme { .adept } diff --git a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMContentProtection.swift b/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMContentProtection.swift index 577792c23..e3c8f2cdb 100644 --- a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMContentProtection.swift +++ b/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMContentProtection.swift @@ -36,52 +36,25 @@ final class AdobeDRMContentProtection: ContentProtection, Loggable { return .failure(.assetNotSupported(DebugError("Invalid source URL"))) } - do { - let decryptor = try AdobeDRMDecryptor(url: sourceURL, encryptionData: encryptionData) - let decryptedContainer = decryptor.drmContainer - - guard validateDecryptedContainer(decryptedContainer) else { - return .failure(.assetNotSupported(DebugError("Decrypted container is missing required files."))) - } - - let newContainerAsset = ContainerAsset(container: decryptedContainer, format: container.format) - let cpAsset = ContentProtectionAsset(asset: .container(newContainerAsset)) { manifest, _, services in - let copyManifest = manifest - - services.setContentProtectionServiceFactory { factory in - AdobeContentProtectionService( - context: PublicationServiceContext( - publication: factory.publication, - manifest: copyManifest, - container: decryptedContainer - ) + let decryptedContainer = AdobeDRMContainer(url: sourceURL, encryptionData: encryptionData) + + let newContainerAsset = ContainerAsset(container: decryptedContainer, format: container.format) + let cpAsset = ContentProtectionAsset(asset: .container(newContainerAsset)) { manifest, _, services in + let copyManifest = manifest + + services.setContentProtectionServiceFactory { factory in + AdobeContentProtectionService( + context: PublicationServiceContext( + publication: factory.publication, + manifest: copyManifest, + container: decryptedContainer ) - } + ) } - - return .success(cpAsset) - } catch { - return .failure(.assetNotSupported(error)) } - } - } - private func validateDecryptedContainer(_ container: Container) -> Bool { - let requiredFiles = ["META-INF/container.xml"] - - for path in requiredFiles { - guard let urlPath = AnyURL(string: path) else { - log(.error, "Invalid URL for required file path: \(path)") - return false - } - - if container[urlPath] == nil { - log(.error, "Missing required file in decrypted container: \(path)") - return false + return .success(cpAsset) } - } - - return true } } @@ -111,29 +84,6 @@ private extension AdobeDRMContentProtection { return .failure(DebugError("Invalid encryption.xml path")) } - - final class AdobeDRMDecryptor { - let drmContainer: AdobeDRMContainer - - init(url: URL, encryptionData: Data) throws { - self.drmContainer = AdobeDRMContainer(url: url, encryptionData: encryptionData) - - if let displayUntilDate = drmContainer.displayUntilDate, displayUntilDate < Date() { - throw AdobeDRMFetcherError.expiredDisplayUntilDate - } - } - - func decrypt(_ data: Data, at path: String) -> Data { - let decryptedData = drmContainer.decode(data, at: path) - - if let error = drmContainer.epubDecodingError { - Log.debug(#file, "Decryption failed for path \(path): \(error)") - return Data() - } - - return decryptedData - } - } } @@ -174,7 +124,7 @@ extension AdobeDRMContainer: Container { } private func readDataFromArchive(at path: String) -> Data? { - guard let archive = Archive(url: self.fileURL!, accessMode: .read) else { + guard let fileURL, let archive = try? Archive(url: fileURL, accessMode: .read, pathEncoding: nil) else { return nil } diff --git a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMFetcherError.swift b/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMError.swift similarity index 86% rename from Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMFetcherError.swift rename to Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMError.swift index 122aa7adc..8d1625c6f 100644 --- a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMFetcherError.swift +++ b/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMError.swift @@ -1,5 +1,5 @@ // -// AdobeDRMFetcherError.swift +// AdobeDRMError.swift // Palace // // Created by Vladimir Fedorov on 14.10.2021. @@ -10,7 +10,7 @@ import Foundation #if FEATURE_DRM_CONNECTOR -enum AdobeDRMFetcherError: LocalizedError { +enum AdobeDRMError: LocalizedError { /// Indicates the item license has expired case expiredDisplayUntilDate diff --git a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMFetcher.swift b/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMFetcher.swift deleted file mode 100644 index dbdc140e6..000000000 --- a/Palace/Reader2/ReaderStackConfiguration/AdobeDRM/AdobeDRMFetcher.swift +++ /dev/null @@ -1,88 +0,0 @@ -// -// AdobeDRMFetcher.swift -// The Palace Project -// -// Created by Vladimir Fedorov on 10.02.2021. -// Copyright © 2021 NYPL Labs. All rights reserved. -// - -import Foundation -import ReadiumShared - -#if FEATURE_DRM_CONNECTOR - -/// Adobe DRM container fetcher. -/// This fetcher decrypts .epub contents data by using an Adobe DRM container. -class AdobeDRMFetcher: Container { - - /// Adobe DRM Container to interact with Adobe DRM software - let drmContainer: AdobeDRMContainer - - /// Original container that holds the publication data - let container: Container - - /// Adobe DRM Fetcher initializer - /// - Parameters: - /// - url: The URL of the publication - /// - container: The original container (replacing `fetcher`) - /// - encryptionData: The contents of the `META-INF/encryption.xml` file - init(url: URL, container: Container, encryptionData: Data) throws { - self.drmContainer = AdobeDRMContainer(url: url, encryptionData: encryptionData) - // Check if the book can still be displayed - if let displayUntilDate = drmContainer.displayUntilDate, displayUntilDate < Date() { - throw AdobeDRMFetcherError.expiredDisplayUntilDate - } - self.container = container - } - - /// The source URL for the container - var sourceURL: AbsoluteURL? { - return container.sourceURL - } - - /// List of all the container entries - var entries: Set { - return container.entries - } - - /// Fetches the resource by decrypting it using Adobe DRM. - /// - Parameter url: The resource URL - /// - Returns: A decrypted `Resource` or a failure in case of error - subscript(url: any URLConvertible) -> Resource? { - guard let resource = container[url] else { - return FailureResource(error: .access(.fileSystem(.fileNotFound(nil)))) - } - - // Create a placeholder resource to return for now - let failureResource = FailureResource(error: .access(.fileSystem(.forbidden(AdobeDRMFetcherError.expiredDisplayUntilDate)))) - - // Launch a task to handle the DRM decryption asynchronously - Task { - let drmResult = await resource.read() - - // Handle the DRM result - switch drmResult { - case .success(let decryptedData): - // Check if any DRM error occurred (e.g., expired license) - if let error = drmContainer.epubDecodingError, error == AdobeDRMContainerExpiredLicenseError { - return FailureResource(error: .access(.fileSystem(.forbidden(AdobeDRMFetcherError.expiredDisplayUntilDate)))) as Resource - } - // Return the decrypted data as a DataResource - return DataResource(data: decryptedData) - case .failure(let readError): - // Handle DRM decryption failure - return FailureResource(error: .access(.fileSystem(.io(readError)))) - } - } - - // Return a placeholder failure resource for now, while the Task executes - return failureResource - } - - /// Close the fetcher and all resources - func close() { - container.close() - } -} - -#endif diff --git a/Palace/Reader2/ReaderStackConfiguration/LibraryService.swift b/Palace/Reader2/ReaderStackConfiguration/LibraryService.swift index ddba03d8e..a88a6c274 100644 --- a/Palace/Reader2/ReaderStackConfiguration/LibraryService.swift +++ b/Palace/Reader2/ReaderStackConfiguration/LibraryService.swift @@ -17,29 +17,9 @@ final class LibraryService: Loggable { let httpServer: GCDHTTPServer - private lazy var documentDirectory = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) - init() { let httpClient = DefaultHTTPClient() - - let resourceFactory = CompositeResourceFactory([ - DefaultResourceFactory(httpClient: httpClient) - ]) - - let archiveOpener = CompositeArchiveOpener([ - DefaultArchiveOpener() - ]) - - let formatSniffer = CompositeFormatSniffer([ - DefaultFormatSniffer() - ]) - - assetRetriever = AssetRetriever( - formatSniffer: formatSniffer, - resourceFactory: resourceFactory, - archiveOpener: archiveOpener - ) - + assetRetriever = AssetRetriever(httpClient: httpClient) httpServer = GCDHTTPServer(assetRetriever: assetRetriever) // DRM configurations diff --git a/Palace/Reader2/ReaderStackConfiguration/TPPR2Owner.swift b/Palace/Reader2/ReaderStackConfiguration/TPPR3Owner.swift similarity index 86% rename from Palace/Reader2/ReaderStackConfiguration/TPPR2Owner.swift rename to Palace/Reader2/ReaderStackConfiguration/TPPR3Owner.swift index f4bea83c7..946232a95 100644 --- a/Palace/Reader2/ReaderStackConfiguration/TPPR2Owner.swift +++ b/Palace/Reader2/ReaderStackConfiguration/TPPR3Owner.swift @@ -1,5 +1,5 @@ // -// TPPR2Owner.swift +// TPPR3Owner.swift // // Created by Mickaël Menu on 20.02.19. // @@ -14,11 +14,11 @@ import UIKit import ReadiumShared import ReadiumStreamer -/// This class is the main root of R2 objects. It: +/// This class is the main root of R3 objects. It: /// - owns the sub-modules (library, reader, etc.) /// - orchestrates the communication between its sub-modules, through the /// modules' delegates. -@objc public final class TPPR2Owner: NSObject { +@objc public final class TPPR3Owner: NSObject { var libraryService: LibraryService! = nil var readerModule: ReaderModuleAPI! = nil @@ -30,16 +30,15 @@ import ReadiumStreamer resourcesServer: libraryService.httpServer, bookRegistry: TPPBookRegistry.shared) - // Set Readium 2's logging minimum level. ReadiumEnableLog(withMinimumSeverityLevel: .debug) } deinit { - Log.warn(#file, "TPPR2Owner being dealloced") + Log.warn(#file, "TPPR3Owner being dealloced") } } -extension TPPR2Owner: ModuleDelegate { +extension TPPR3Owner: ModuleDelegate { func presentAlert(_ title: String, message: String, from viewController: UIViewController) { diff --git a/Palace/Reader2/UI/TPPEPUBViewController.swift b/Palace/Reader2/UI/TPPEPUBViewController.swift index 357ae1ffe..7f4478758 100644 --- a/Palace/Reader2/UI/TPPEPUBViewController.swift +++ b/Palace/Reader2/UI/TPPEPUBViewController.swift @@ -34,10 +34,10 @@ class TPPEPUBViewController: TPPBaseReaderViewController { self.preferences = preferences self.searchButton = UIBarButtonItem(barButtonSystemItem: .search, target: nil, action: #selector(presentEPUBSearch)) - let overlayLabelInset = TPPBaseReaderViewController.overlayLabelMargin * 2 + let overlayLabelInset = 80.0 let contentInset: [UIUserInterfaceSizeClass: EPUBContentInsets] = [ - .compact: (top: safeAreaInsets.top + TPPBaseReaderViewController.overlayLabelMargin * 2, bottom: safeAreaInsets.bottom + TPPBaseReaderViewController.overlayLabelMargin * 2), - .regular: (top: safeAreaInsets.top + TPPBaseReaderViewController.overlayLabelMargin * 2, bottom: safeAreaInsets.bottom + TPPBaseReaderViewController.overlayLabelMargin * 2) + .compact: (top: safeAreaInsets.top + overlayLabelInset, bottom: safeAreaInsets.bottom + overlayLabelInset), + .regular: (top: safeAreaInsets.top + overlayLabelInset, bottom: safeAreaInsets.bottom + overlayLabelInset) ] let config = EPUBNavigatorViewController.Configuration( @@ -46,8 +46,6 @@ class TPPEPUBViewController: TPPBaseReaderViewController { title: "Highlight", action: #selector(highlightSelection))), contentInset: contentInset, - preloadPreviousPositionCount: 2, - preloadNextPositionCount: 2, decorationTemplates: HTMLDecorationTemplate.defaultTemplates(), debugState: false ) @@ -184,7 +182,11 @@ extension TPPEPUBViewController: EPUBNavigatorDelegate { } } -extension TPPEPUBViewController: UIPopoverPresentationControllerDelegate {} +extension TPPEPUBViewController: UIPopoverPresentationControllerDelegate { + func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { + return .none + } +} extension TPPEPUBViewController: DecorableNavigator { func apply(decorations: [Decoration], in group: String) { @@ -242,3 +244,4 @@ public extension DecorableNavigator { } } } + diff --git a/RDServices.xcodeproj/project.pbxproj b/RDServices.xcodeproj/project.pbxproj index cbcbe07db..174cbc49b 100644 --- a/RDServices.xcodeproj/project.pbxproj +++ b/RDServices.xcodeproj/project.pbxproj @@ -656,6 +656,7 @@ buildSettings = { DSTROOT = /tmp/RDServices.dst; HEADER_SEARCH_PATHS = "$(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 16.6; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -667,6 +668,7 @@ buildSettings = { DSTROOT = /tmp/RDServices.dst; HEADER_SEARCH_PATHS = "$(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 16.6; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/ios-audiobooktoolkit b/ios-audiobooktoolkit index d1871b320..a02002a14 160000 --- a/ios-audiobooktoolkit +++ b/ios-audiobooktoolkit @@ -1 +1 @@ -Subproject commit d1871b32005d638217dda7f671e64a4e23451441 +Subproject commit a02002a14fcff0000bd8605d10a7ead8623b5e8f diff --git a/scripts/adobe-rmsdk-build.sh b/scripts/adobe-rmsdk-build.sh index fc2d4086b..bfc6c5fc7 100755 --- a/scripts/adobe-rmsdk-build.sh +++ b/scripts/adobe-rmsdk-build.sh @@ -23,9 +23,9 @@ SDKS=(iphoneos iphonesimulator) for SDK in ${SDKS[@]}; do if [ $SDK == "iphoneos" ]; then - ARCHS="arm64 armv7 armv7s" + ARCHS="arm64" else - ARCHS="i386 x86_64" + ARCHS="x86_64 arm64" fi for CONFIGURATION in ${CONFIGURATIONS[@]}; do cd "$ADOBE_RMSDK/dp/build/xc5"