So I recently tried running my app which had been working fine until facebook updated their sdk which caused problems with different variations of android.support v7:25.
The dependency that caused the issue was 'com.facebook.android:facebook-android-sdk:4+'. To fix the issue i just specified a version that I wanted.
My question is, will this cause my apps that have already been published with the 4+ dependency to crash and should I immediately update my app with the specific version?
Yes, you should always define any dependencies with specific version ( As per experience I do have).
You should not define dependencies like this with any of i.e. with Facebook or Google etc.
If you use dependencies like defining 4+, then it upgrades automatically when required.
Related
After publishing the app I got the following error in Play Console.
For the solution, it is said that it is necessary to choose a version above the "implementation 'com.google.firebase:firebase-crashlytics:18.3.0' version, for example 18.3.1, but I had never added it anyway.
Would it be enough to upgrade firebase packages in package.json to solve this problem? Or what else should I do?
the reason you don't see the implementations on the React Native side is because adding implementations should be handled under the hood by the package you added in package.json.
So in theory updating it should be enough.
However since this is Firebase update also all firebase packages to an equivalent version
I'm developing an android game with cordova 7.1.0 and I would love to know the meaning of the "+" symbol used on the "cordova_project\platforms\android\project.properties" file. So, what would be the difference between this:
cordova.system.library.1=com.google.android.gms:play-services-games:11.0.4
cordova.system.library.2=com.google.android.gms:play-services-plus:11.0.4
cordova.system.library.3=com.google.android.gms:play-services-ads:11.0.4
And this:
cordova.system.library.1=com.google.android.gms:play-services-games:11.0.4+
cordova.system.library.2=com.google.android.gms:play-services-plus:11.0.4+
cordova.system.library.3=com.google.android.gms:play-services-ads:11.0.4+
I really want to understand the use of the "+" symbol because after 1st of November I'll not be able to update older versions of my app because they don't target API 26. I don't want my old versions of the app being unable to login to Google Play Games or to stop showing ads.
Thanks a lot in advance
In Gradle, the "+" is for dynamic version of your dependencies.
Ideally, your builds should be predictable and consistent.
Based from this blog, here are the problems you will encounter if you don't specify your dependency explicitly:
Dependencies can unexpectedly introduce behavior changes to your app.
The same source built on two different machines can differ.
Similarly, builds built on the same machine but at different times can differ.
Past builds cannot be reproduced perfectly. This makes it difficult to revert safely.
There are security implications if a bad actor introduces a malicious version of a dependency.
I have already tried crashlytics but it is not supported.
this is the reply i got from their team
Thanks for reaching out on this and Crashlytics, or any part of Fabric, cannot be included in any SDK that is distributed to external apps. As you mentioned, this will cause conflicts for both the SDK and app. With that said, we do hope to support this in the future and if you'd like, I can keep you updated on that.
I have tried to set my own UncaughtExceptionHandler for this but the problem with that is my library also starts to catch error of the client's application module.
I was running into problems with how many methods I have in my project, and have finally fixed it.
However, I noticed that the Localytics documentation says to include the dependency com.google.android.gms:play-services-ads. It is never used anywhere in my project, and I can't find anything on their website as to why its a required dependency.
My app runs perfectly fine without it as far as I can tell, but I have only tried building the project as a debug build.
play-services-ads used to be the only way of gaining access to the Advertising ID and it seems that functionality was added back in version 2.60 as per the SDK Changelog. The only mention of it appears to be in the testing attribution section, although that doesn't mean it is only used for attribution.
As of Google Play services 9.0, it has been moved to the play-services-basement dependency, which is much smaller. You should be able to use that dependency in place of play-services-ads without issue.
My application uses an old google play version that contains a class that I need,
unfortunately it's not possible to upgrade right now (due to time limitations)
A library that my application depends on, requires a newer version of google play, that does not longer hold that class.
My question is:
Is there a way to compile the library with a newer version, while compiling my application with the older one?
the current behaviour by gradle is to compile both of them with the newer google play version.
You can try to force use your google play version for library by excluding transitive dependency.
But is might not work. If so you can use hack way - changes package names in your version of google play as well use these "changed" classes in your app.