Publish Android Application does not work - xamarin.android

Just created an .apk with the Publish Android Application option, created a keystore with key and uploaded to the Google Play app store. Everything worked, but when I tried to download the app from the app store i got an error message resembling "The application has an incorrect signature". I thought the "Publish Android Application" part of Xamarin.Studio was supposed to fix everything?
I ran the following command on the .apk afterwards: jarsigner -verify -verbose -certs app.apk At the bottom it said the following: This jar contains entries whose certificate chain is not validated.
Please help, would love to have the app out today :)

My problem was simple. XamarinStudio was setup to use Java1.7, setting it to use Java1.6 fixed it :)

Related

How to test the purpose string of NSPhotoLibraryUsageDescription in iOS using Expo?

I've been struggling to verify if the purpose string for photo library access really is working as expected. It started with the application got rejected because it wasn't set.
Using expo-image-picker, it says in the docs that adding this into the plugins section in app.json should set the NSPhotoLibraryUsageDescription:
[
"expo-image-picker",
{
"photosPermission": "This allows you to upload a photo to your Appname profile."
}
]
Before I added this, I basically added NSPhotoLibraryUsageDescription to the plist key inside ios section in app.json. What I can see, both do exactly the same thing.
After building ios using expo build:ios I was able to verify that that the string existed in the Info.plist file:
<key>NSPhotoLibraryUsageDescription</key>
<string>This allows you to upload a photo to your Appname profile.</string>
Using Expo Go doesn't really help since when requesting permissions, it says "Expo Go" in the alert.
Also, I only have experience working with Expo / React Native, and have no access to a mac (or xcode).
When apple test this, it looks like this (according to their screenshot):
While the expected text should be:
This allows you to upload a photo to your Appname profile.
How can I verify that the purpose string is really set (and works) before submitting an application to App store?
My solution:
First I set up my app for an EAS build. If you're not familiar with that you should check out the docs: https://docs.expo.dev/build/introduction/
Basically you do this:
install eas-cli: npm install -g eas-cli
run eas build:configure to initialize an eas.config file.
configure your eas build profiles. Mine look like this:
I collapsed the submit block to hide my credentials. Sorry for the photo instead of code/text. The formatter kept messing it up.
Any way, trigger a build using eas build -p ios --profile development. Notice the simulator flag set to true. This will allow you to run this as a stand-alone binary in your simulator.
When your build completes, go to expo.io and log into your account. Click on your project and download the binary for your ios build (under the builds tab). Unzip the binary and drag it into your simulator. You may be prompted with a message that says that you need to start up your development server. Just follow those simple instructions and there you go. You'll be able to see if your NSPhotoLibraryUsageDescription string updated.
Admittedly, this can be a pain in the (insert donkey emoji here - still don't have one yet Apple....😡) and you're kind of executing outside of the expo environment, but it solves the problem of wondering if your string has updated before posting to the store again.
Best of luck. Hope that helps.

React native IOS app web-services works on simulator but not real IOS device

I have done with all the settings of my react native project and trying to run on the IOS simulator, it's working fine. Means all the api working properly.
So now I have to share my .ipa file to team members for testing, so creating .ipa file I am using procedure defined on react nativeRunning On Device documentation.
For creating .ipa file using Xcode following below process:-
In Edit Scheme option, change Build Configuration to release.
Clean Build Folder
Create Build.
Archive build.
After that exporting .ipa file using valid certificate.
Solutions I have tried:-
Checked with this solution, because the domain I am using to hit web service is not secured.(It's http)
Enable Transport security flag.
Added main.jbundle (created using command line) to Copy Bundle Resource option in Build Phases.
While adding Alert in api call, getting below error (check image)
Still No luck.
Please let me know, what I am doing wrong?
Please check api server live link is working or not. In my case, I am testing whole api's on local network (In LAN). But when trying with live url, I am also facing this issue.
So that time I made one mistake, that my url should contain http:// but in actual it was https://.
It's pointing to main.jsbundle file, that means it's having issue
related with your code.
So check it once.

This bundle is invalid - The Info.plist file for PersonalizedAdConsent.framework is missing or could not be read

The title error is what gets emailed after uploading the ipa via the application loader and below is the error that occurs in debug mode:
ERROR: "The framework
APPNAME.app/Frameworks/PersonalizedAdConsent.framework does not
contain a binary named PersonalizedAdConsent"
I've been getting this error in debug mode when trying to build the project. However, when I build it in Ad-Hoc mode, it builds fine and uploads on the application loader without any issues but then I get the following mail
"This bundle is invalid - The Info.plist file for
PersonalizedAdConsent.framework is missing or could not be read."
I've looked in the Info.plist file as well as .csproj file for this reference and I cannot find it anywhere.
Also searched online, can't find much about the PersonalizedAdConsent.
Any ideas?
So it seems like the issue was because of the following packages:
Xamarin.Google.iOS.MobileAds
&
Xamarin.Firebase.Ads
As far as I can tell, the app needs permissions to request consent to display ads or personalized ads (not too sure exactly) and it build correctly after removing these packages.
These were in a build that I've done on Windows for a different app which did not actually use them but VS for MAC gave me the issues and it turned out to be these packages that were causing it.
Hope it helps!

Crashlytics asks for provisioned device's UDID when using submit

When I use the below command specifying the path to the IPA, upon upload success and checking the download page from Mobile Safari I get a message that seems to say that my device wasn't provisioned to download the app when it fact it was.
PATH_TO_CRASHLYTICS/Crashlytics.framework/submit ${API_KEY} ${API_SECRET} -ipaPath ${IPA_PATH}
If I omit the -ipaPath parameter (which presumes that there's an xcarchive file generated) but not only will the upload succeed, I can get the build to be downloaded to my device without the above error message.
Fabric/Firebaser here!
For visibility for other members of the Fabric community, I believe adding the UDID should be the correct resolution path here.
Also, following this link would provide you the correct run script build phase to have your dSYM uploaded without needing to add the -ipaPath parameter.

iOS OTA Distribution "unable to download" immediately upon clicking the link

I have an iPad app that we are distributing over the air for QA and Beta testers; we have both a debug and and a release config that we are building. Our build process puts together the website and the PLIST manifest file that that iOS needs to install the app. The release build downloads correctly, but the debug build does not. The only difference between the two manifest files is the application that it's pointing to. I've checked server permissions, signing issues (the same app that won't install OTA can be pushed via iTunes) all to no avail.
Most of the other articles out here deal with the file nearly installing and then choking (that's typically the wrong provisioning file).
Thanks for any help you can provide.
I've gotten this error before when the device has a version of iOS below the supported version of the application.
Check the url on plist file. Make sure it has correct path with http://
It turns out the problem was two-fold. One of the iPads had too old of iOS, and the other was there was a hidden character in the URL
It's also possible that the bundle ID is incorrect. We have multiple bundle IDs so we used to get them mixed up. In addition the icon URL is incorrect. Had that problem too

Resources