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

Commit

Permalink
[Firebase][Crashlytics] Updated to version 3.14.0
Browse files Browse the repository at this point in the history
* Added a flag that handles the upload dSYM process, so the user can now decide if wants to execute the process
* Added a flag that handles the error, if any, of the upload process as a warning or as an error
* This closes issue #210
* This closes issue #275
  • Loading branch information
SotoiGhost authored and SotoiGhost committed Oct 10, 2019
1 parent b476668 commit c3ae085
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 23 deletions.
2 changes: 1 addition & 1 deletion Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Xamarin creates and maintains Xamarin.iOS bindings for the Google APIs for iOS L
| [Xamarin.Firebase.iOS.CloudFirestore][F.CloudFirestore.Name] | [1.4.2.0][F.CloudFirestore.Package] |
| [Xamarin.Firebase.iOS.CloudMessaging][F.CloudMessaging.Name] | [4.1.1.0][F.CloudMessaging.Package] |
| [Xamarin.Firebase.iOS.Core][F.Core.Name] | [6.1.0.0][F.Core.Package] |
| [Xamarin.Firebase.iOS.Crashlytics][F.Crashlytics.Name] | [3.10.3.1][F.Crashlytics.Package] |
| [Xamarin.Firebase.iOS.Crashlytics][F.Crashlytics.Name] | [3.14.0.0][F.Crashlytics.Package] |
| [Xamarin.Firebase.iOS.Database][F.Database.Name] | [6.0.0.0][F.Database.Package] |
| [Xamarin.Firebase.iOS.DynamicLinks][F.DynamicLinks.Name] | [4.0.1.0][F.DynamicLinks.Package] |
| [Xamarin.Firebase.iOS.InstanceID][F.InstanceID.Name] | [3.4.0.0][F.InstanceID.Package] |
Expand Down
12 changes: 6 additions & 6 deletions components.cake
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Artifact FIREBASE_AUTH_ARTIFACT = new Artifact ("Firebase.Aut
Artifact FIREBASE_CLOUD_FIRESTORE_ARTIFACT = new Artifact ("Firebase.CloudFirestore", "1.4.2", "8.0", ComponentGroup.Firebase, csprojName: "CloudFirestore");
Artifact FIREBASE_CLOUD_MESSAGING_ARTIFACT = new Artifact ("Firebase.CloudMessaging", "4.1.1", "8.0", ComponentGroup.Firebase, csprojName: "CloudMessaging");
Artifact FIREBASE_CORE_ARTIFACT = new Artifact ("Firebase.Core", "6.1.0", "8.0", ComponentGroup.Firebase, csprojName: "Core");
Artifact FIREBASE_CRASHLYTICS_ARTIFACT = new Artifact ("Firebase.Crashlytics", "3.10.9", "8.0", ComponentGroup.Firebase, csprojName: "Crashlytics");
Artifact FIREBASE_CRASHLYTICS_ARTIFACT = new Artifact ("Firebase.Crashlytics", "3.14.0", "8.0", ComponentGroup.Firebase, csprojName: "Crashlytics");
Artifact FIREBASE_DATABASE_ARTIFACT = new Artifact ("Firebase.Database", "6.0.0", "8.0", ComponentGroup.Firebase, csprojName: "Database");
Artifact FIREBASE_DYNAMIC_LINKS_ARTIFACT = new Artifact ("Firebase.DynamicLinks", "4.0.1", "8.0", ComponentGroup.Firebase, csprojName: "DynamicLinks");
Artifact FIREBASE_INSTANCE_ID_ARTIFACT = new Artifact ("Firebase.InstanceID", "4.2.1", "8.0", ComponentGroup.Firebase, csprojName: "InstanceID");
Expand Down Expand Up @@ -69,16 +69,16 @@ void SetArtifactsDependencies ()
FIREBASE_CLOUD_FIRESTORE_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_AUTH_ARTIFACT };
FIREBASE_CLOUD_MESSAGING_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_INSTANCE_ID_ARTIFACT };
FIREBASE_CORE_ARTIFACT.Dependencies = null;
FIREBASE_CRASHLYTICS_ARTIFACT.Dependencies = null;
FIREBASE_DATABASE_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_AUTH_ARTIFACT };
FIREBASE_CRASHLYTICS_ARTIFACT.Dependencies = new [] { /* Needed for sample */ FIREBASE_CORE_ARTIFACT };
FIREBASE_DATABASE_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, /* Needed for sample */ FIREBASE_AUTH_ARTIFACT };
FIREBASE_DYNAMIC_LINKS_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT };
FIREBASE_INSTANCE_ID_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT };
FIREBASE_MLKIT_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_MLKIT_COMMON_ARTIFACT };
FIREBASE_MLKIT_COMMON_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT };
FIREBASE_MLKIT_MODEL_INTERPRETER_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_INSTANCE_ID_ARTIFACT, FIREBASE_MLKIT_COMMON_ARTIFACT };
FIREBASE_PERFORMANCE_MONITORING_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_INSTANCE_ID_ARTIFACT, FIREBASE_AB_TESTING_ARTIFACT, FIREBASE_REMOTE_CONFIG_ARTIFACT };
FIREBASE_REMOTE_CONFIG_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_INSTANCE_ID_ARTIFACT, FIREBASE_AB_TESTING_ARTIFACT };
FIREBASE_STORAGE_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_DATABASE_ARTIFACT, FIREBASE_AUTH_ARTIFACT };
FIREBASE_STORAGE_ARTIFACT.Dependencies = new [] { FIREBASE_CORE_ARTIFACT, FIREBASE_DATABASE_ARTIFACT, /* Needed for sample */ FIREBASE_AUTH_ARTIFACT };

GOOGLE_ANALYTICS_ARTIFACT.Dependencies = null;
GOOGLE_APP_INDEXING_ARTIFACT.Dependencies = null;
Expand Down Expand Up @@ -130,8 +130,8 @@ void SetArtifactsPodSpecs ()
PodSpec.Create ("GoogleAppMeasurement", "6.0.4")
};
FIREBASE_CRASHLYTICS_ARTIFACT.PodSpecs = new [] {
PodSpec.Create ("Crashlytics", "3.10.9"),
PodSpec.Create ("Fabric", "1.7.13")
PodSpec.Create ("Crashlytics", "3.14.0"),
PodSpec.Create ("Fabric", "1.10.2")
};
FIREBASE_DATABASE_ARTIFACT.PodSpecs = new [] {
PodSpec.Create ("Firebase", "6.5.0", frameworkSource: FrameworkSource.Pods, frameworkName: "FirebaseDatabase", targetName: "FirebaseDatabase", subSpecs: new [] { "Database" })
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\packages\Xamarin.Build.Download.0.4.11\build\Xamarin.Build.Download.props" Condition="Exists('..\..\..\..\packages\Xamarin.Build.Download.0.4.11\build\Xamarin.Build.Download.props')" />
<Import Project="$(MSBuildThisFileDirectory)..\..\..\..\source\Firebase\Crashlytics\Crashlytics.props" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
Expand Down
6 changes: 4 additions & 2 deletions source/Firebase/Crashlytics/Crashlytics.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<RootNamespace>Firebase.Crashlytics</RootNamespace>
<AssemblyName>Firebase.Crashlytics</AssemblyName>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>3.10.9</FileVersion>
<FileVersion>3.14.0</FileVersion>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
Expand All @@ -23,7 +23,7 @@
<PackageProjectUrl>https://go.microsoft.com/fwlink/?linkid=873305</PackageProjectUrl>
<PackageLicenseUrl>https://go.microsoft.com/fwlink/?linkid=873306</PackageLicenseUrl>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageVersion>3.10.9</PackageVersion>
<PackageVersion>3.14.0</PackageVersion>
</PropertyGroup>

<ItemGroup>
Expand All @@ -36,6 +36,8 @@

<ItemGroup>
<None Include="Crashlytics.targets" Pack="True" PackagePath="build/Xamarin.Firebase.iOS.Crashlytics.targets" />
<None Include="Crashlytics.props" Pack="True" PackagePath="build/Xamarin.Firebase.iOS.Crashlytics.props" />
<None Include="readme.txt" Pack="True" PackagePath="readme.txt" />
</ItemGroup>

<ItemGroup>
Expand Down
16 changes: 16 additions & 0 deletions source/Firebase/Crashlytics/Crashlytics.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--
This value defines if we should upload the dSYM of your app to Firebase console.
The default value is to upload symbols only when building on Release.
-->
<FirebaseCrashlyticsUploadSymbolsEnabled Condition="'$(FirebaseCrashlyticsUploadSymbolsEnabledEnabled)'=='' AND '$(Configuration)'=='Release'">True</FirebaseCrashlyticsUploadSymbolsEnabled>

<!--
This value defines if the build should continue if the dSYM upload fails.
The default value is true.
-->
<FirebaseCrashlyticsUploadSymbolsContinueOnError Condition="'$(FirebaseCrashlyticsUploadSymbolsContinueOnError)'==''">True</FirebaseCrashlyticsUploadSymbolsContinueOnError>
</PropertyGroup>
</Project>
32 changes: 18 additions & 14 deletions source/Firebase/Crashlytics/Crashlytics.targets
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_FirebaseCrashlyticsAssemblyName>Firebase.Crashlytics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</_FirebaseCrashlyticsAssemblyName>
<_FirebaseCrashlyticsItemsFolder>FCrshlytcs-3.10.9</_FirebaseCrashlyticsItemsFolder>
<_FirebaseCrashlyticsItemsFolder>FCrshlytcs-3.14.0</_FirebaseCrashlyticsItemsFolder>
<_FirebaseCrashlyticsSDKBaseFolder>$(XamarinBuildDownloadDir)$(_FirebaseCrashlyticsItemsFolder)\iOS\</_FirebaseCrashlyticsSDKBaseFolder>
<_FabricItemsFolder>Fbrc-1.7.13</_FabricItemsFolder>
<_FabricItemsFolder>Fbrc-1.10.2</_FabricItemsFolder>
<_FabricSDKBaseFolder>$(XamarinBuildDownloadDir)$(_FabricItemsFolder)\iOS\</_FabricSDKBaseFolder>
<_FabricScriptName>upload-symbols</_FabricScriptName>

<_FirebaseCrashlyticsUploadSymbolsContinueOnError Condition="'$(FirebaseCrashlyticsUploadSymbolsContinueOnError)'=='True'">True</_FirebaseCrashlyticsUploadSymbolsContinueOnError>
<_FirebaseCrashlyticsUploadSymbolsContinueOnError Condition="'$(FirebaseCrashlyticsUploadSymbolsContinueOnError)'!='True'">False</_FirebaseCrashlyticsUploadSymbolsContinueOnError>

<!-- Properties used to upload dSYM symbols to Firebase when using Visual Studio for Mac -->
<_FirebaseCrashlyticsUploadDSymToFirebaseMasterAfterTargets Condition="'$(OS)'=='Unix'">Build</_FirebaseCrashlyticsUploadDSymToFirebaseMasterAfterTargets>
Expand All @@ -20,11 +23,7 @@
</PropertyGroup>
<ItemGroup Condition="('$(OutputType)'!='Library' OR '$(IsAppExtension)'=='True')">
<XamarinBuildDownload Include="$(_FirebaseCrashlyticsItemsFolder)">
<Url>https://kit-downloads.fabric.io/cocoapods/crashlytics/3.10.9/crashlytics.zip</Url>
<Kind>Zip</Kind>
</XamarinBuildDownload>
<XamarinBuildDownload Include="$(_FabricItemsFolder)">
<Url>https://kit-downloads.fabric.io/cocoapods/fabric/1.7.13/fabric.zip</Url>
<Url>https://kit-downloads.fabric.io/cocoapods/crashlytics/3.14.0/crashlytics.zip</Url>
<Kind>Zip</Kind>
</XamarinBuildDownload>
<NativeReference Include="$(_FirebaseCrashlyticsSDKBaseFolder)Crashlytics.framework">
Expand All @@ -33,6 +32,11 @@
<LinkerFlags>-ObjC -lc++ -lz</LinkerFlags>
<Frameworks>Security SystemConfiguration</Frameworks>
</NativeReference>

<XamarinBuildDownload Include="$(_FabricItemsFolder)">
<Url>https://kit-downloads.fabric.io/cocoapods/fabric/1.10.2/fabric.zip</Url>
<Kind>Zip</Kind>
</XamarinBuildDownload>
<NativeReference Include="$(_FabricSDKBaseFolder)Fabric.framework">
<Kind>Framework</Kind>
<ForceLoad>True</ForceLoad>
Expand All @@ -42,20 +46,20 @@
</ItemGroup>

<Target Name="_FirebaseCrashlyticsUploadDSymToFirebaseMasterTarget"
Condition="'$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterDependsOnTargets)'!='' AND '$(_SdkIsSimulator)'=='False'"
AfterTargets="$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterAfterTargets)"
BeforeTargets="$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterBeforeTargets)"
DependsOnTargets="$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterDependsOnTargets)" />
Condition="'$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterDependsOnTargets)'!='' AND '$(_SdkIsSimulator)'=='False' AND '$(FirebaseCrashlyticsUploadSymbolsEnabled)'=='True'"
AfterTargets="$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterAfterTargets)"
BeforeTargets="$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterBeforeTargets)"
DependsOnTargets="$(_FirebaseCrashlyticsUploadDSymToFirebaseMasterDependsOnTargets)" />

<!-- Target to upload dSYM symbols to Firebase when using Visual Studio for Mac -->
<Target Name="_FirebaseCrashlyticsUploadDSymToFirebaseOnMac" >
<Message Text="Uploading dSYM to Firebase using Fabric $(_FabricScriptName) script located at $(XamarinBuildDownloadDir)$(_FabricItemsFolder)" />
<Exec Command="'$(XamarinBuildDownloadDir)$(_FabricItemsFolder)\$(_FabricScriptName)' -gsp '$(MSBuildProjectDirectory)\GoogleService-Info.plist' -p ios '$(DeviceSpecificOutputPath)\$(AssemblyName).app.dSYM'"/>
<Exec Command="'$(XamarinBuildDownloadDir)$(_FabricItemsFolder)\$(_FabricScriptName)' -gsp '$(MSBuildProjectDirectory)\GoogleService-Info.plist' -p ios '$(DeviceSpecificOutputPath)\$(AssemblyName).app.dSYM'"
ContinueOnError="$(_FirebaseCrashlyticsUploadSymbolsContinueOnError)" />
</Target>

<!-- Target to upload dSYM symbols to Firebase when using Visual Studio for Windows -->
<Target Name="_FirebaseCrashlyticsUploadDSymToFirebaseOnWindows" Condition="'$(IsMacEnabled)'=='true'" >

<ItemGroup>
<_CopyFilesToMacOutput Include="$(XamarinBuildDownloadDir)$(_FabricItemsFolder)\$(_FabricScriptName)">
<TargetPath>$(_FabricScriptName)</TargetPath>
Expand All @@ -67,6 +71,6 @@
<Exec SessionId="$(BuildSessionId)" Command="chmod +x $(_FabricScriptName)" ContinueOnError="true" />

<Message Text="Uploading dSYM to Firebase using Fabric $(_FabricScriptName) script" />
<Exec SessionId="$(BuildSessionId)" Command="'./$(_FabricScriptName)' -gsp './GoogleService-Info.plist' -p ios './$(DeviceSpecificOutputPath)\$(AssemblyName).app.dSYM'" ContinueOnError="true" />
<Exec SessionId="$(BuildSessionId)" Command="'./$(_FabricScriptName)' -gsp './GoogleService-Info.plist' -p ios './$(DeviceSpecificOutputPath)\$(AssemblyName).app.dSYM'" ContinueOnError="$(_FirebaseCrashlyticsUploadSymbolsContinueOnError)" />
</Target>
</Project>
34 changes: 34 additions & 0 deletions source/Firebase/Crashlytics/readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//////////////////////////////////////
// Xamarin.Firebase.iOS.Crashlytics //
//////////////////////////////////////

Xamarin.Firebase.iOS.Crashlytics NuGet has an MSBuild task that uploads the
dSYM symbols of your app to Firebase Console at build time.

This upload process happens only when building on Release and if a device is
selected. If you want to upload the dSYM regardless of the configuration,
define the following property anywhere in your .csproj but before of the
Xamarin.Firebase.iOS.Crashlytics.targets import:

```
<PropertyGroup>
<FirebaseCrashlyticsUploadSymbolsEnabled>True</FirebaseCrashlyticsUploadSymbolsEnabled>
</PropertyGroup>
```

If you want to disable the upload dSYM process, regardless of the configuration,
change the value from 'True' to 'False'.

The upload process is disabled for simulators.

Also, there's a property that helps you to keep building your app even if the
upload process fails. This is 'True' by default and the error will be treated as
a warning, but if you want it to be treated as an error, define the following
property anywhere in your .csproj but before of the
Xamarin.Firebase.iOS.Crashlytics.targets import:

```
<PropertyGroup>
<FirebaseCrashlyticsUploadSymbolsContinueOnError>False</FirebaseCrashlyticsUploadSymbolsContinueOnError>
</PropertyGroup>
```

0 comments on commit c3ae085

Please sign in to comment.