I have an apk and ipa, I was wondering if it is possible to inject Firebase analytics to them. Similar to other wrapper applications that allow to inject their code into an apk or ipa. Is this possible with Firebase? I have not been able to find information regarding Firebase injection.
I won't tell you that it's impossible to add Analytics to an existing APK, but what you're trying to do definitely isn't supported by Firebase. The only supported course of action is to add the SDK at compile and build time.
If you wanted to add the SDK after the app is built, you would have to go through the trouble of decompiling the APK, modifying the decompiled app components to include the SDK, then rebuild the APK altogether. There is no way to easily "inject" the SDK into an existing app.
Related
I am developing a single android application. I am using Firebase services(notifications, database etc) to back this android app functionality. Generally we have debug and release environments for android app. I don't have any flavours as of now. I want to make android app use separate Firebase project for debug & release environment to keep data separation. How to achieve this ? How to create separate firebase projects and integrate in Android app ? How to manage google services.json file for release and debug
Finally got it. Follow this article for detailed explanation on how to achieve this use case
Link for above describes use-case
Recently I've been working on integrating a GRPC API in a size sensitive android app. The API only had a couple of Unary calls. I noticed that the resulting APK had io.grpc (613KB) & io.opencensus (178.9KB) which was further reduced to 387.2KB and 39.4KB respectively using Proguard. I noticed that Proguard was able to remove many streaming call related classes/methods from the APK. However, I noticed that the app already had com.google.protobuf package, which I suspect is from something like Firebase SDK.
If Firebase SDK imported com.google.protobuf, why didn't it need io.grpc for transport? Does it use something else?
The protobuf protocol is used by some Firebase SDKs as part of their internal communications. The first one that comes to mind is Firebase Analytics, but there are others too.
The Cloud Firestore SDK in Firebase uses grpc as part of its transport protocol. If you're not using Cloud Firestore then the grpc library will not be included as far as I know.
To ensure that unused methods are removed, be sure to use ProGuard as part of your release build.
I am new to react-native app development. I wanted to know how can a developed app be shared between other developers without having a local dependency. Is an apple developer account needed for a test build to be shared in ios as well? How can the test build be created?. I wanted the build to be created and downloaded on any ios device or android for testing purpose and without having depending any of the local code changes.So the build downloaded should not get updated after any code change done after that.
Is there an easy way to do it?
To share a release build for Android please follow this guide Generating Signed APK.
But for iOS you gonna need a Apple Developer account, I don't know the whole process exactly.
I am building an android library that I plan to integrate into many 3rd party apps(which do not belong to me).
So, I am trying to figure out a way to find out if any of those 3rd party apps crashes due to the code in my library. Is there any way to find that out?
I was looking at Crashlytics to achieve the same. But, as I understand, Crashlytics will be able to give the Crash analytics to only the app owner, right? Is there any way to collect the crash info without the intervention of the 3rd party app?
Thanks.
EDIT: This isn't a duplicate of Integrating Crashlytics to library project because I want Crashlytics to be part of an android library which will sit on multiple android apps, but I want to be notified separately - not from the app which is installing my android library.
Mike from Fabric here. Adding Fabric or Crashlytics into a library that will be used by external developers is not supported and should not be done.
No, you cannot, at least without some hacking. Crashlytics should only be user in applications or library subproject (https://docs.fabric.io/android/crashlytics/build-tools.html#set-up-a-library-subproject). And you shouldn't, crashlytics group all the crashes by package name. Even if you with some hacking were able to include the crashlytics in your library you will probably receive also crashes from the application (not related with your library), and you will need to include and expose your API keys in your library... So you should not include crashlytics in a library.
I am working on an Android project that needs three versions of the same application (for example: Admin version, User version, Custom version). I have already created a Google-App-Engine endpoints backend in the User version of the app. I have to start working on the other two versions now and I want to connect these two versions to the backend I created in the User version. I have tried finding the answer to this on the internet but I haven't been successful in doing so. I believe it is possible to connect the other versions of the app to the backend by importing the endpoint libraries from the cloud into the android projects somehow but I haven't been able to find a way to do so yet.
I did come across a way to import an existing module in the Android project but if I do that, then any time when I make changes to the backend in the "User" version, I will have to re-import the module in other versions of the app. I am so lost and confused.
Any help will be deeply appreciated.
Thank you!
After you build your cloud module there is a YOUR_CLOUD_MODULE_NAME-android-endpoints.jar under YOUR_CLOUD_MODULE_NAME/build/libs.
You can copy this jar into libs directory of all your android projects that need to interact with your back-end.
This approach makes it really easy to get out of sync though. After every change to back-end you would need to update the .jar in all dependent modules.
Are all of your Android applications in the same Android Studio project? If so I think you might be able to just add
compile project(path: ':{yourBackendModuleGoesHere}', configuration: 'android-endpoints')
to each of your Android apps build.gradle.
You could probably also make it work even if your backend is in a separate AndroidStudio project as long as they're part of the same gradle build.