Resigning modded APK (Snapchat) breaks app login/register - authentication

So I extracted the latest Snapchat version using APKLab (VSC Extension), which initially makes use of APKTool. I'm signing the modified APK, installing it on an emulator, and run the app. Working fine. But:
Signing in does not appear to work and trying to register a new account crashes the app. I've also tried just extracting it and resigning the app without making any changes at all, same results. Any advice?

Related

Expo: Remove iPad support on non published app

I'm completely new to React Native, Expo and App development in general.
I'm building a React Native app solely for iOS using Expo. I've finally managed to finish a version I'm happy with, tested with users etc. I've now been spending time adding all the required screenshots, text, info etc to App Store Connect in order to submit the app. While doing that, I learned that iPad app screenshots was mandatory, which I found weird.
I later found that I had "supportsTablet: true" in my App.json file, so it makes sense that it's expecting iPad pictures. After changing this and making a new build and submitting that, it's still a requirement.
After Google a bit I can see that it has been impossible to change this:
Removing iPad support from app
iOS App Submission : remove iPad support
iOS App Submission want to remove iPad support
This led me down the road of trying to upload the app as a new submission. I can't get this to work though. According to this documentation:
https://developer.apple.com/library/archive/qa/qa1623/_index.html
I should change bundle identifier and upload again. Changing this in app.json under expo.ios.bundleIdentifier doesn't work though, as I just get an error that I've already uploaded this app previously.
What are the steps I should do to reupload the app as a new submission, so that I can not support iPad?
In order to upload a new version, you must increase the version and the build number. You can find this if you open the project in Xcode under the General tab and the Identity section. In the same tab, you will see the Deployment Info section where you can untick the iPad. Check the picture attached.

Expo uses old code even though new code has been deployed

I have a react-native app that is using Expo.
In the beginning of the project I pushed some code to the default publishing channel that was never intended to be used in production.
Since then I have released dozens of versions to production and mostly all works as expected. (New installs gets the latest JS code)
However, a few users still gets old versions of the code, even though they literally just downloaded the app from App Store / Google Play.
This is extremely frustrating. How can I make sure that fresh downloads of the app will download the correct/latest version och my JS?
Note that this is not related to the app detecting new code that might be available for download. It is the fact that the wrong code is downloaded and used to begin with. Is there any way to remove all JS-code except the very last version that I published? I imagine that would solve my issue
Turns out, expo don’t always do this successfully. You need to rebuild the react native bundle before publishing.https://proandroiddev.com/bundling-react-native-during-android-release-builds-ec52c24e200d
This is what expo gives as a feature known as Over the Air updates (OTA). Whenever a new version is built with expo channel, it automatically updates even in the app store and play store. But there is a way to disable the updates. the expo documentation for disabling:
It is possible to entirely disable OTA JavaScript updates in a standalone app, by setting updates.enabled to false in app.json. This will ignore all code paths that fetch app bundles from Expo's servers. In this case, all updates to your app will need to be routed through the iOS App Store and/or Google Play Store.
This setting is ignored in the Expo client.
And I do recommend you to read the documents of OTA, which is a good feature when you get to know all of it.
The expo link is expo OTA

React-Native Expo Built App Doesn't Get the Latest Javascript

Ok, I have a problem with expo build. Please let me know if you need more details. Basically, the project I am working on is NOT detached. It is just using Expo.
So I publish it. Let's say the javascript bundle version is 0.17, and I am publishing a breaking change to 0.18.
When I load the app from Hockey App, the javascript bundle is clearly not 0.18 because I don't see my breaking changes. Then, I close the app and re-open it, and the JS bundle is updated.
The build script is:
exp build:android
[exp] Android:
[exp] APK: [AWS LINK] apk has been generated, it took 0 seconds
Then, I get an AWS link to the APK, which I download and upload to Hockey Apps.
How should I diagnose this problem?
Exp version is 44.0.0
It is the way it works in Android. First time you open your app after you publish, the code is downloaded in background. Next time it will run the new code.
Quoting the documentation:
Updates are handled differently on iOS and Android. On Android, updates are downloaded in the background. This means that the first time a user opens your app after an update they will get the old version while the new version is downloaded in the background. The second time they open the app they’ll get the new version. On iOS, updates are downloaded synchronously, so users will get the new version the first time they open your app after an update.

How can I force my app into the Applications/ folder?

I am currently developing a desktop app in OS X which has a requirement for Autostart on Boot. I have implemented autostart and it works well when I install my app and put it in the Applications/ folder, but I can't expect users to move the file. I am distributing the app using HockeyApp.
So I've started building .pkg files with Packages. This works great and was really easy, but fails to update when used in HockeyApp. After downloading the update, I get a message saying An error occurred while trying to extract the archive. Please try again later. [Cancel Update]
Things I have tried:
Signing the update
Not signing the update
Downloading the most recent version instead of updating (works perfectly fine)
Zipping the .pkg (Fails to upload to HockeyApp)
How can I force my app into the user's Applications/ folder? Should I just ask my handful of (technologically challenged) beta testers to delete their app and download the new version? Can I make a change to my .pkg method to make it work? Should I add code into the app which moves itself (Sounds hacky and painful)?
You cannot force the user to install into /Applications, however if you get the app to arrange the auto-start itself (for example via the App Preferences) then it should use the current location of the app (probably obtained from [[NSBundle mainBundle] bundlePath]) and that will work fine.
You might want to periodically check if the app has moved after this has been turned-on.

Testflight not installing completely

I'm currently beta testing one of my apps via testflight but im having problems with the installation process.
Everything works fine up to the point, when one of my testers tries to install the app. After you tap install the downloading process stops at about 80%.
If you minimize Testflight the app appears to be installed and can be used but the UX is poor.
In Testflight the app remains in the 80% install state:
If i install my app via xcode everything runs fine under iOS8.
In my case, I discovered on a hunch that the CFBundleVersion should not contain leading zeros after a period.
15.06011812 should be 15.6011812
Once we fixed that, the installs completed in the UI of TestFlight (then the switch for the watch app showed up and worked).
Afterward, I found this answer searching for 'testflight progress'.
TestFlight thinks that it never finished installing because the CFBundleVersion in the installed app's Info.plist contains the leading zero which makes it an older version of the app. When I quit TestFlight and relaunched, it thought that there was an update available.
Until I tried installing the Watch App this was just an annoyance in the UI, but then it was preventing me from seeing the switch to install the Watch App.