Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit 34138d7

Browse files
Israel SotoSotoiGhost
Israel Soto
authored andcommitted
[Source] Adding workaround to support xcframeworks within a NuGet used by a Legacy apps
1 parent b9da270 commit 34138d7

File tree

79 files changed

+3793
-3608
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+3793
-3608
lines changed
+15-20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Sdk="Xamarin.Legacy.Sdk">
1+
<Project Sdk="Xamarin.Legacy.Sdk">
32
<PropertyGroup>
43
<TargetFrameworks>xamarin.ios10;net6.0-ios</TargetFrameworks>
54
<NoNFloatUsing Condition="'$(TargetFramework)' == 'xamarin.ios10'">true</NoNFloatUsing>
@@ -15,7 +14,6 @@
1514
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
1615
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1716
</PropertyGroup>
18-
1917
<PropertyGroup>
2018
<PackageId>Xamarin.Firebase.iOS.ABTesting</PackageId>
2119
<Title>Firebase APIs A/B Testing iOS Library</Title>
@@ -30,50 +28,47 @@
3028
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
3129
<PackageVersion>8.10.0</PackageVersion>
3230
</PropertyGroup>
33-
3431
<ItemGroup>
3532
<Compile Include="..\AssemblyInfo.cs" />
3633
</ItemGroup>
37-
3834
<ItemGroup>
3935
<Folder Include="Resources\" />
4036
</ItemGroup>
41-
4237
<ItemGroup>
38+
<None Include="ABTesting.targets" Pack="True" PackagePath="build/Xamarin.Firebase.iOS.ABTesting.targets" />
39+
<None Include="ABTesting.targets" Pack="True" PackagePath="buildTransitive/Xamarin.Firebase.iOS.ABTesting.targets" />
4340
<None Include="External-Dependency-Info.txt" Pack="True" PackagePath="THIRD-PARTY-NOTICES.txt" />
4441
<None Include="License.md" Pack="True" PackagePath="License.md" />
4542
<None Include="../../../icons/firebaseiosabtesting_128x128.png" Pack="True" PackagePath="firebaseiosabtesting_128x128.png" />
4643
</ItemGroup>
47-
44+
<!-- An iOS app project cannot find Xcframeworks within a NuGet if a TFM
45+
previous than net6.0-ios is used.
46+
https://github.com/xamarin/xamarin-macios/issues/13693
47+
You must include the Xcframework's NativeReference tag into the iOS app
48+
project so sidecar can work properly. -->
49+
<!-- This workaround was designed like this to have the same
50+
the NativeReference tag for the iOS binding and for the .targets file -->
51+
<Import Project="ABTesting.targets" />
4852
<ItemGroup>
49-
<NativeReference Include="..\..\..\externals\FirebaseABTesting.framework">
50-
<Kind>Framework</Kind>
51-
<SmartLink>True</SmartLink>
52-
<ForceLoad>True</ForceLoad>
53-
<LinkerFlags>-ObjC -lz</LinkerFlags>
54-
<Frameworks>Security SystemConfiguration</Frameworks>
55-
</NativeReference>
53+
<_NativeReference Include="..\..\..\externals\FirebaseABTesting.xcframework">
54+
<_Id>$(_FirebaseABTestingId)</_Id>
55+
</_NativeReference>
5656
</ItemGroup>
57-
57+
<!-- End of workaround -->
5858
<ItemGroup Condition="'$(TargetFramework)' == 'xamarin.ios10'">
5959
<Compile Remove="ApiDefinition.cs" />
6060
<Compile Remove="Enums.cs" />
6161
</ItemGroup>
62-
6362
<ItemGroup>
6463
<ObjcBindingCoreSource Include="Enums.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
6564
</ItemGroup>
66-
6765
<ItemGroup>
6866
<ObjcBindingApiDefinition Include="ApiDefinition.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
6967
</ItemGroup>
70-
7168
<ItemGroup>
7269
<PackageReference Include="Xamarin.Build.Download" Version="0.11.0" PrivateAssets="None" />
7370
</ItemGroup>
74-
7571
<ItemGroup>
7672
<ProjectReference Include="..\Core\Core.csproj" PrivateAssets="None" />
7773
</ItemGroup>
78-
7974
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Project>
2+
<PropertyGroup>
3+
<_FirebaseABTestingId>FirebaseABTesting</_FirebaseABTestingId>
4+
</PropertyGroup>
5+
<ItemGroup Condition="('$(OutputType)' != 'Library' OR '$(IsAppExtension)' == 'True') AND ('$(TargetFrameworks)' == '' AND '$(TargetFramework)' == '')">
6+
<_NativeReference Include="$(MSBuildThisFileDirectory)..\lib\xamarinios10\Firebase.ABTesting.resources\FirebaseABTesting.xcframework">
7+
<_Id>$(_FirebaseABTestingId)</_Id>
8+
</_NativeReference>
9+
</ItemGroup>
10+
<Target Name="_ResolveNativeReferencesForFirebaseABTesting"
11+
BeforeTargets="ResolveNativeReferences"
12+
Condition="('$(TargetFrameworks)' == '' AND '$(TargetFramework)' == '') OR '$(IsBindingProject)' == 'true'">
13+
<ItemGroup>
14+
<_NativeReference Update="@(_NativeReference)" Condition="'%(_NativeReference._Id)' == '$(_FirebaseABTestingId)'">
15+
<Kind>Framework</Kind>
16+
<SmartLink>True</SmartLink>
17+
<ForceLoad>True</ForceLoad>
18+
<LinkerFlags>-ObjC -lz</LinkerFlags>
19+
<Frameworks>Security SystemConfiguration</Frameworks>
20+
</_NativeReference>
21+
<NativeReference Include="@(_NativeReference)" />
22+
</ItemGroup>
23+
</Target>
24+
</Project>

source/Firebase/AdMob/AdMob.csproj

+1-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Sdk="Xamarin.Legacy.Sdk">
1+
<Project Sdk="Xamarin.Legacy.Sdk">
32
<PropertyGroup>
43
<TargetFrameworks>xamarin.ios10;net6.0-ios</TargetFrameworks>
54
<NoNFloatUsing Condition="'$(TargetFramework)' == 'xamarin.ios10'">true</NoNFloatUsing>
@@ -16,7 +15,6 @@
1615
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1716
<IncludeBuildOutput>false</IncludeBuildOutput>
1817
</PropertyGroup>
19-
2018
<PropertyGroup>
2119
<PackageId>Xamarin.Firebase.iOS.AdMob</PackageId>
2220
<Title>Firebase APIs AdMob iOS Library</Title>
@@ -31,40 +29,31 @@
3129
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
3230
<PackageVersion>8.13.0</PackageVersion>
3331
</PropertyGroup>
34-
3532
<ItemGroup>
3633
<Compile Include="..\AssemblyInfo.cs" />
3734
</ItemGroup>
38-
3935
<ItemGroup>
4036
<Folder Include="Resources\" />
4137
</ItemGroup>
42-
4338
<ItemGroup>
4439
<None Include="License.md" Pack="True" PackagePath="License.md" />
4540
<None Include="../../../icons/firebaseiosadmob_128x128.png" Pack="True" PackagePath="firebaseiosadmob_128x128.png" />
4641
</ItemGroup>
47-
4842
<ItemGroup Condition="'$(TargetFramework)' == 'xamarin.ios10'">
4943
<Compile Remove="ApiDefinition.cs" />
5044
<Compile Remove="Enums.cs" />
5145
</ItemGroup>
52-
5346
<ItemGroup>
5447
<ObjcBindingCoreSource Include="Enums.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
5548
</ItemGroup>
56-
5749
<ItemGroup>
5850
<ObjcBindingApiDefinition Include="ApiDefinition.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
5951
</ItemGroup>
60-
6152
<ItemGroup>
6253
<PackageReference Include="Xamarin.Build.Download" Version="0.11.0" PrivateAssets="None" />
6354
</ItemGroup>
64-
6555
<ItemGroup>
6656
<ProjectReference Include="..\Core\Core.csproj" PrivateAssets="None" />
6757
<ProjectReference Include="..\..\Google\MobileAds\MobileAds.csproj" PrivateAssets="None" />
6858
</ItemGroup>
69-
7059
</Project>

source/Firebase/Analytics/Analytics.csproj

+1-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Sdk="Xamarin.Legacy.Sdk">
1+
<Project Sdk="Xamarin.Legacy.Sdk">
32
<PropertyGroup>
43
<TargetFrameworks>xamarin.ios10;net6.0-ios</TargetFrameworks>
54
<NoNFloatUsing Condition="'$(TargetFramework)' == 'xamarin.ios10'">true</NoNFloatUsing>
@@ -16,7 +15,6 @@
1615
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1716
<ProcessEnums>true</ProcessEnums>
1817
</PropertyGroup>
19-
2018
<PropertyGroup>
2119
<PackageId>Xamarin.Firebase.iOS.Analytics</PackageId>
2220
<Title>Firebase APIs Analytics iOS Library</Title>
@@ -31,39 +29,31 @@
3129
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
3230
<PackageVersion>8.10.0</PackageVersion>
3331
</PropertyGroup>
34-
3532
<ItemGroup>
3633
<Compile Include="..\AssemblyInfo.cs" />
3734
</ItemGroup>
38-
3935
<ItemGroup>
4036
<Folder Include="Resources\" />
4137
</ItemGroup>
42-
4338
<ItemGroup>
4439
<None Include="Analytics.targets" Pack="True" PackagePath="build/Xamarin.Firebase.iOS.Analytics.targets" />
4540
<None Include="Analytics.targets" Pack="True" PackagePath="buildTransitive/Xamarin.Firebase.iOS.Analytics.targets" />
4641
<None Include="License.md" Pack="True" PackagePath="License.md" />
4742
<None Include="../../../icons/firebaseiosanalytics_128x128.png" Pack="True" PackagePath="firebaseiosanalytics_128x128.png" />
4843
</ItemGroup>
49-
5044
<ItemGroup Condition="'$(TargetFramework)' == 'xamarin.ios10'">
5145
<Compile Remove="ApiDefinition.cs" />
5246
<Compile Remove="Enums.cs" />
5347
</ItemGroup>
54-
5548
<ItemGroup>
5649
<ObjcBindingApiDefinition Include="ApiDefinition.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
5750
<ObjcBindingApiDefinition Include="Enums.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
5851
</ItemGroup>
59-
6052
<ItemGroup>
6153
<PackageReference Include="Xamarin.Build.Download" Version="0.11.0" PrivateAssets="None" />
6254
</ItemGroup>
63-
6455
<ItemGroup>
6556
<ProjectReference Include="..\Core\Core.csproj" PrivateAssets="None" />
6657
<ProjectReference Include="..\Installations\Installations.csproj" PrivateAssets="None" />
6758
</ItemGroup>
68-
6959
</Project>
+25-28
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,26 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
4-
<PropertyGroup>
5-
<_FirebaseAnalyticsAssemblyName>Firebase.Analytics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</_FirebaseAnalyticsAssemblyName>
6-
<_FirebaseAnalyticsItemsFolder>FAnlytcs-8.9.1</_FirebaseAnalyticsItemsFolder>
7-
<_FirebaseAnalyticsSDKBaseFolder>$(XamarinBuildDownloadDir)$(_FirebaseAnalyticsItemsFolder)\FirebaseAnalytics-8.9.1\Frameworks\</_FirebaseAnalyticsSDKBaseFolder>
8-
</PropertyGroup>
9-
10-
<ItemGroup Condition="('$(OutputType)'!='Library' OR '$(IsAppExtension)'=='True')">
11-
<XamarinBuildDownload Include="$(_FirebaseAnalyticsItemsFolder)">
12-
<Url>https://dl.google.com/firebase/ios/analytics/66ce3623aa8037ff/FirebaseAnalytics-8.9.1.tar.gz</Url>
13-
<Kind>Tgz</Kind>
14-
</XamarinBuildDownload>
15-
<XamarinBuildRestoreResources Include="_FAnlytcsDownloadedItems" />
16-
</ItemGroup>
17-
<Target Name="_FAnlytcsDownloadedItems">
18-
<ItemGroup>
19-
<!-- From https://dl.google.com/firebase/ios/analytics/66ce3623aa8037ff/FirebaseAnalytics-8.9.1.tar.gz -->
20-
<NativeReference Include="$(_FirebaseAnalyticsSDKBaseFolder)FirebaseAnalytics.xcframework">
21-
<Kind>Framework</Kind>
22-
<SmartLink>True</SmartLink>
23-
<ForceLoad>True</ForceLoad>
24-
<LinkerFlags>-ObjC -lc++ -lsqlite3 -lz</LinkerFlags>
25-
<Frameworks>StoreKit</Frameworks>
26-
</NativeReference>
27-
</ItemGroup>
28-
</Target>
1+
<Project>
2+
<PropertyGroup>
3+
<_FirebaseAnalyticsAssemblyName>Firebase.Analytics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</_FirebaseAnalyticsAssemblyName>
4+
<_FirebaseAnalyticsItemsFolder>FAnlytcs-8.9.1</_FirebaseAnalyticsItemsFolder>
5+
<_FirebaseAnalyticsSDKBaseFolder>$(XamarinBuildDownloadDir)$(_FirebaseAnalyticsItemsFolder)\FirebaseAnalytics-8.9.1\Frameworks\</_FirebaseAnalyticsSDKBaseFolder>
6+
</PropertyGroup>
7+
<ItemGroup Condition="('$(OutputType)'!='Library' OR '$(IsAppExtension)'=='True')">
8+
<XamarinBuildDownload Include="$(_FirebaseAnalyticsItemsFolder)">
9+
<Url>https://dl.google.com/firebase/ios/analytics/66ce3623aa8037ff/FirebaseAnalytics-8.9.1.tar.gz</Url>
10+
<Kind>Tgz</Kind>
11+
</XamarinBuildDownload>
12+
<XamarinBuildRestoreResources Include="_FAnlytcsDownloadedItems" />
13+
</ItemGroup>
14+
<Target Name="_FAnlytcsDownloadedItems">
15+
<ItemGroup>
16+
<!-- From https://dl.google.com/firebase/ios/analytics/66ce3623aa8037ff/FirebaseAnalytics-8.9.1.tar.gz -->
17+
<NativeReference Include="$(_FirebaseAnalyticsSDKBaseFolder)FirebaseAnalytics.xcframework">
18+
<Kind>Framework</Kind>
19+
<SmartLink>True</SmartLink>
20+
<ForceLoad>True</ForceLoad>
21+
<LinkerFlags>-ObjC -lc++ -lsqlite3 -lz</LinkerFlags>
22+
<Frameworks>StoreKit</Frameworks>
23+
</NativeReference>
24+
</ItemGroup>
25+
</Target>
2926
</Project>
+15-19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Sdk="Xamarin.Legacy.Sdk">
1+
<Project Sdk="Xamarin.Legacy.Sdk">
32
<PropertyGroup>
43
<TargetFrameworks>xamarin.ios10;net6.0-ios</TargetFrameworks>
54
<NoNFloatUsing Condition="'$(TargetFramework)' == 'xamarin.ios10'">true</NoNFloatUsing>
@@ -15,7 +14,6 @@
1514
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
1615
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1716
</PropertyGroup>
18-
1917
<PropertyGroup>
2018
<PackageId>Xamarin.Firebase.iOS.AppCheck</PackageId>
2119
<Title>Firebase APIs App Check iOS Library</Title>
@@ -30,48 +28,46 @@
3028
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
3129
<PackageVersion>8.10.0</PackageVersion>
3230
</PropertyGroup>
33-
3431
<ItemGroup>
3532
<Compile Include="..\AssemblyInfo.cs" />
3633
</ItemGroup>
37-
3834
<ItemGroup>
3935
<Folder Include="Resources\" />
4036
</ItemGroup>
41-
4237
<ItemGroup>
38+
<None Include="AppCheck.targets" Pack="True" PackagePath="build/Xamarin.Firebase.iOS.AppCheck.targets" />
39+
<None Include="AppCheck.targets" Pack="True" PackagePath="buildTransitive/Xamarin.Firebase.iOS.AppCheck.targets" />
4340
<None Include="License.md" Pack="True" PackagePath="License.md" />
4441
<None Include="../../../icons/firebaseiosappcheck_128x128.png" Pack="True" PackagePath="firebaseiosappcheck_128x128.png" />
4542
</ItemGroup>
46-
43+
<!-- An iOS app project cannot find Xcframeworks within a NuGet if a TFM
44+
previous than net6.0-ios is used.
45+
https://github.com/xamarin/xamarin-macios/issues/13693
46+
You must include the Xcframework's NativeReference tag into the iOS app
47+
project so sidecar can work properly. -->
48+
<!-- This workaround was designed like this to have the same
49+
the NativeReference tag for the iOS binding and for the .targets file -->
50+
<Import Project="AppCheck.targets" />
4751
<ItemGroup>
48-
<NativeReference Include="..\..\..\externals\FirebaseAppCheck.framework">
49-
<Kind>Framework</Kind>
50-
<SmartLink>True</SmartLink>
51-
<ForceLoad>True</ForceLoad>
52-
<LinkerFlags>-ObjC</LinkerFlags>
53-
</NativeReference>
52+
<_NativeReference Include="..\..\..\externals\FirebaseAppCheck.xcframework">
53+
<_Id>$(_FirebaseAppCheckId)</_Id>
54+
</_NativeReference>
5455
</ItemGroup>
55-
56+
<!-- End of workaround -->
5657
<ItemGroup Condition="'$(TargetFramework)' == 'xamarin.ios10'">
5758
<Compile Remove="ApiDefinition.cs" />
5859
<Compile Remove="Enums.cs" />
5960
</ItemGroup>
60-
6161
<ItemGroup>
6262
<ObjcBindingCoreSource Include="Enums.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
6363
</ItemGroup>
64-
6564
<ItemGroup>
6665
<ObjcBindingApiDefinition Include="ApiDefinition.cs" Condition=" '$(EnableDefaultCompileItems)' == 'true'" />
6766
</ItemGroup>
68-
6967
<ItemGroup>
7068
<PackageReference Include="Xamarin.Build.Download" Version="0.11.0" PrivateAssets="None" />
7169
</ItemGroup>
72-
7370
<ItemGroup>
7471
<ProjectReference Include="..\Core\Core.csproj" PrivateAssets="None" />
7572
</ItemGroup>
76-
7773
</Project>
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<Project>
2+
<PropertyGroup>
3+
<_FirebaseAppCheckId>FirebaseAppCheck</_FirebaseAppCheckId>
4+
</PropertyGroup>
5+
<ItemGroup Condition="('$(OutputType)' != 'Library' OR '$(IsAppExtension)' == 'True') AND ('$(TargetFrameworks)' == '' AND '$(TargetFramework)' == '')">
6+
<_NativeReference Include="$(MSBuildThisFileDirectory)..\lib\xamarinios10\Firebase.AppCheck.resources\FirebaseAppCheck.xcframework">
7+
<_Id>$(_FirebaseAppCheckId)</_Id>
8+
</_NativeReference>
9+
</ItemGroup>
10+
<Target Name="_ResolveNativeReferencesForFirebaseAppCheck"
11+
BeforeTargets="ResolveNativeReferences"
12+
Condition="('$(TargetFrameworks)' == '' AND '$(TargetFramework)' == '') OR '$(IsBindingProject)' == 'true'">
13+
<ItemGroup>
14+
<_NativeReference Update="@(_NativeReference)" Condition="'%(_NativeReference._Id)' == '$(_FirebaseAppCheckId)'">
15+
<Kind>Framework</Kind>
16+
<SmartLink>True</SmartLink>
17+
<ForceLoad>True</ForceLoad>
18+
<LinkerFlags>-ObjC</LinkerFlags>
19+
</_NativeReference>
20+
<NativeReference Include="@(_NativeReference)" />
21+
</ItemGroup>
22+
</Target>
23+
</Project>

0 commit comments

Comments
 (0)