Xamarin Forms Library adds extra permissions even though I remove them - xaml

I'm about to publish an Android app but Xamarin automatically adds the following permissions to my apk file:
READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE
How can I remove ?
Thanks

It's coming from AssemblyInfo.cs, you can remove it from there.
To remove further permissions added automatically by third-party libraries you can specify:
tools:node="remove"
at the permission "incriminated"

Related

ITMS-90424: Invalid Swift Support

I am trying to upload my app to the app store. I can archive my app and successfully upload to App Store Connect, however, it keeps getting rejected with the following error message:
Dear Developer,
We identified one or more issues with a recent delivery for your app, "Retainer Tracker" 1.0 >>(8). Please correct the following issues, then upload again.
ITMS-90424: Invalid Swift Support - The SwiftSupport folder is empty. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
Best regards,
The App Store Team
I've tried a bunch of diffrent fixes I've found online but still can't get it to work. Can anyone help?
The basic reason is your application using swift and your swiftsupport folder is empty. Let's move in detail
If your application using Xcode to make .ipa file and there is no third-party IDE involve to create Xcode project, you can fix this issue by upgrading your Xcode
If you are using some other IDE to make the Xcode project then please follow that link. I already give the answer to this question. Invalid Swift Support - The SwiftSupport folder is empty
The problem occurred right after I added a specific Swift Library
Doing the following fixed the issue in my case
Go to Targets > YourApp > Build Settings
Under Packaging:
Defines Module: Yes
Under Assets:
Always Embed Swift Standard Libraries: Yes
ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
For us, our CICD pipeline was using an Ad-Hoc Provisioning Profile to distribute the ipa build to Testflight/AppStore.
We fixed this by using an App-Store Provisioning Profile instead.

Fabric.io: new app does not show up in the dashboard

For some reason we needed to change the package-id of our existing android application. We already use Fabric for Crashlytics.
I'm trying to bring that new app up in the Fabric dashboard, but it's not showing there, despite the device log showing no issues (as fas as I can see): device log
Any ideas why the new package-id isn't visible in our dashboard?
Best,
Sven
I experienced a very similar issue to this when building an app with multiple flavours. The solution is to manually specify the package name, and not let Fabric try to automatically grab it, as it tries very hard to "stick" your old package name.
There is a full post available (disclaimer: my site), but essentially you need to use:
Fabric.with(
Fabric.Builder(this)
.kits(Crashlytics())
.appIdentifier(BuildConfig.APPLICATION_ID)
.build()
)
Make sure to include all dependencies on their dedicated gradle.build and meta in manifest file. Next is to throw a force runtime error on your device with internet connection also do not forget to initialize it first with Fabric.with(this,new Crashlytics()). If this doesn't work try to download and install Fabric for Android plugin in Android Studio, restart the IDE and you will see a fabric icon above. Start it and select your package name.
I had the exact same problem, in the log I clearly see that the Crashlytics is in use.
I/CrashlyticsCore: Crashlytics report upload complete: <ID>
But I cannot see my project on the dashboard, and always redirect to the tutorial.
After a Build-Clean and an Android studio restart, build and run the app again to my phone, and voilá, it finds itself. Now working, without any change.
I have the same problem. After hours of researches I resolve this for my application.
First: After adding new flavour, I make changes in Firebase console (added new app in existing project, with production SHA1, changed google-services.json).
After that app does not show in fabric dashboard and fabric plugin in Android Studio. Problem was resolved after linking new app in crashlitycs in firebase console. And after that check your roles, must have Owner role (on Firebase Console Project).

How do you remove the required SYSTEM_ALERT_WINDOW permission for release version of a React Native Android app?

From what I've read, React Native requires the permission android.permission.SYSTEM_ALERT_WINDOW to enable its developer interface in debug mode. However, when publishing a release, this permission is still included, which causes users to freak out (since it says "permission to draw over other apps").
I can manually remove the permission in AndroidManifest.xml, but that will break the app when I'm in development mode -- and that's not something I want to do every time I release a new version.
Is there a way to disable the permission for only release versions of the app?
There is a solution for Android Studio, I hope react-native have the same functions:
You can have two separate AndroidManifest.xml for release and debug versions.
Debug manifest should be located in ${projectPath}\src\debug\AndroidManifest.xml
Release manifest in ${projectPath}\src\main\AndroidManifest.xml
You can put android.permission.SYSTEM_ALERT_WINDOW only in debug manifest and don't add this into release.
Go to
android ->app ->src
create a folder named release and add a AndroidManifest file with the following
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.flexycabsdrivers"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission tools:node="remove" android:name="android.permission.SYSTEM_ALERT_WINDOW" />
</manifest>
On build the release AndroidManifest should remove the permission, you can add other permissions you want to remove.

Can't remove today view extension from iOS

I tried to remove an iOS8 today view extension from my iOS App in Xcode6, but somehow the extension is still built and always appearing on the device. I removed both the extensions files from the project as well as the build target. I also removed the application multiple times but the widget is still always copied whenever I build the application.
If you want to keep the sourcecode and only remove the today widget:
go to your app target into your project file
select General -> Embedded binaries
remove the TodayWidgetName.appex file with the minus button
do a clean
If you compile or archive you should not see any longer the today widget appearing in the iOS notification center.
I finally found a solution: in the menu go to Product > Clean and the extensions that are not used or built anymore are gone!
Apparently, there is a way of removing embedded binaries from compiled IPA package if you don't want to recompile. Obviously, after altering the package you'll have to resign it.
This is where embedded binaries are placed:
Payload > .app > PlugIns > .appex
I've tried removing the PlugIns and resigning the whole bundle - seems to be working well.

Can I use zxing library without unwanted permissions?

I am using barcode scanner module on my Titanium Android app to scan barcode. However, because of this library my app is requesting too many permissions from users which include READ_HISTORY_BOOKMARKS and WRITE_CONTACT. Obviously this is unnecessary and too intrusive for end-users.
Is there any way that I can remove some of the permissions?
I have already tried editing custom AndroidManifest file. But it always adds back those permissions in the .gen file.
You are working with Titanium to build the app. Androidmanifest is not used by Titanium. It perhaps is generated by Titanium, but not used.
You need to edit the Tiapp.xml file, and remove the permissions you don't need from there. This way, it should not come back.
But as Sean Owen suggested, don't copy-paste an app, and use it for own purposses. If you just need a module, implement the module yourself, and use it from there.
You can maintain a custom Manifest file in Titanium, by taking the generated Manifest file and paste it into the tiapp.xml. Titanium will use that one everytime instead of the generated one. Read more on how this works here http://developer.appcelerator.com/doc/mobile/android-custom-androidmanifest