Custom Apps

RSS for tag

Design and build customized apps that meet the unique needs of an organization.

Posts under Custom Apps tag

50 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

Deploying simple "Hello world" QT Python App to App Store
Good evening, I'm trying to deploy an extremely simple Python QT app to the app store: it's roughly ~10 lines of code that shows a window containing a"Hello, world!" message. This seemingly trivial task of deploying a "Hello World" app to the store has been extremely difficult, perhaps because of my lack of familiarity with the Apple ecosystem. I'd like to demonstrate all of the steps I've taken, my current understanding of deployments, and what the problems are. Project files Here's the code for the app (in a file located at src2/test_app/app.py). import os, sys from PySide2.QtWidgets import * class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setCentralWidget(QLabel("Hello, world!")) if __name__ == '__main__': os.environ["QT_MAC_WANTS_LAYER"] = "1" app = QApplication(sys.argv) window = MainWindow() window.show() app.exec_() Furthermore, I've created an assets folder which contains an icon.icns file and I also created a Pyinstaller config/test_app.spec file to bundle this app into a testapp.app package: block_cipher = None added_files = [ ('../assets', 'assets') ] a = Analysis( ['../src2/test_app/app.py'], pathex=[], binaries=[], datas=added_files, hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False ) pyz = PYZ( a.pure, a.zipped_data, cipher=block_cipher ) exe = EXE( pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='testapp', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, disable_windowed_traceback=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon='../assets/64.icns' ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name='app' ) app = BUNDLE( coll, name='testapp.app', icon='../assets/icon.icns', bundle_identifier='com.stormbyte.test-app.pkg', info_plist={ 'NSPrincipalClass': 'NSApplication', 'NSAppleScriptEnabled': False, 'LSBackgroundOnly': False, 'LSApplicationCategoryType': 'public.app-category.utilities', 'NSRequiresAquaSystemAppearance': 'No', 'CFBundlePackageType': 'APPL', 'CFBundleSupportedPlatforms': ['MacOSX'], 'CFBundleIdentifier': 'com.stormbyte.test-app.pkg', 'CFBundleVersion': '0.0.1', } ) In addition, I have an config/entitlements.plist file, containing all of the necessary information for binaries built by pyinstaller: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <!-- These are required for binaries built by PyInstaller --> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> <key>com.apple.security.cs.disable-library-validation</key> <true/> <key>com.apple.security.app-sandbox</key> <true/> </dict> </plist> This entitlements file is apparently necessary for pyinstaller to run things on Mac successfully, which is why I included it. Building the .APP I am able to build this app with: pyinstaller \ --noconfirm \ --log-level WARN \ --distpath '/Users/nikolay/Desktop/projects/cling_wrap/dist' \ --workpath '/Users/nikolay/Desktop/projects/cling_wrap/build' \ './config/test_app.spec' This creates a testapp.app file in my dist folder and the file icon I've designated appears just as I've intended. Codesigning the .APP binaries Next, I am able to use the codesign tool to sign all of the files that are part of the testapp.app I've just created. codesign \ -vvv \ --strict \ --deep \ --force \ --timestamp \ --options runtime \ --entitlements './config/entitlements.plist' \ --sign "Developer ID Application: Nikolay ***** (Z57YJ*****)" \ '/Users/nikolay/Desktop/projects/cling_wrap/dist/testapp.app' This successfully executes. Building the .PKG Installer Next, I am able to use productbuild to create a .PKG file, which will allow a user to install the app: productbuild \ --version '0.0.1' \ --sign "Developer ID Installer: Nikolay **** (Z57YJ*****)" \ --component '/Users/nikolay/Desktop/projects/cling_wrap/dist/testapp.app' \ /Applications testapp.pkg This successfully outputs: ... productbuild: Adding certificate "Developer ID Certification Authority" productbuild: Adding certificate "Apple Root CA" productbuild: Wrote product to testapp.pkg When I attempt to run this installer, everything works. I can even see the app installed in my Applications folder, and I can double-click and run it: With this confirmed, I am ready to run the notarization & stapling process prior to submitting my app to the App Store. I run notarization using the xcrun tool: xcrun altool \ --notarize-app \ --primary-bundle-id com.stormbyte.test-app.pkg \ --username=*****@gmail.com \ --password **** \ --file '/Users/nikolay/Desktop/projects/cling_wrap/testapp.pkg' Which outputs: No errors uploading '/Users/nikolay/Desktop/projects/cling_wrap/testapp.pkg'. RequestUUID = c40ebde4-dcd1-*********** I then receive an e-mail from Apple telling me that the notorization process has been successful: Next, I run the stapler tool: xcrun stapler staple '/Users/nikolay/Desktop/projects/cling_wrap/testapp.pkg' Which is also successful. Finally, I attempt to use Transporter to upload my app to the store but this happens: It says that the icon failed (when it clearly exists and is recognized by Mac?!!) and that the signature is invalid? Am I using the incorrect certificates for distribution to the App store? Thanks!
5
2
4.0k
Aug ’23
Fatal Error in ModelData at line 43
Failed to decode landmarksData.json from bundle because it appears to be invalid JSON. Full disclosure - Im extremely new to this and am playing around with the swift tutorials to see what it can do and see if I could build an app. Any advice is appreciated. I added a few locations to the SwiftUI Tutorial for Lanmarks and this is what happened. I have checked that JSON file and all commas are in the correct place everything is correct but im getting this error. Not sure what im doing incorrectly. Can anyone give me assistance on how to fix this. I can only preview favorite button, circle image and map. Everything else appears as Fatal Error in ModelData.
4
0
2.6k
Sep ’23
Upwork uploading App to App store
Hello so i have a few apps that im getting developed on upwork and i have practically 0 knowledge as far as how anything works as far as computer science type stuff. i just want to know what is the correct procedure as far as letting somebody upload the app to my apple developer account. do i give them my AppleID and password and let them do it and then change my password after they're done? any information would be greatly appreciated. thank you
1
0
846
Aug ’23
If user downloads a custom app to their own device using redemption code, is there a way to force remove it from the App Store purchased list?
We plan to get some redemption codes from ABM to our partners to download custom apps, and they will use their own devices. But there is a problem, if they are not involved in this business anymore. If user downloads a custom app to their own device using redemption code, is there a way to force remove it from the App Store purchased list? Is there a way to force remove it from the App Store purchased list? Or can only add permission verification to the application?
1
1
762
Jan ’24
alternate app icon & product page optimization
Hi, I'm considering trying the product page optimization with other app icons. The doc says that " If an app is downloaded from a product page with a test treatment, the test treatment app icon displays throughout the download process and on the user’s device." (https://developer.apple.com/help/app-store-connect/create-product-page-optimization-tests/configure-test-treatments). Do I understand correctly that no additional code is required when the app is downloaded from the test treatment ? No code required on app launch ? I appreciate any feedbacks, Thank you
0
0
818
Jul ’23
dSYM using xcodebuild
I am building my macOS app for distribution outside the Mac App store using a shell script as shown below. When a user reports a crash, all I get is offsets and I can’t tell what is going on, where: Thread 3 Crashed: 0 Meteorologist 0x1026da778 0x10268c000 + 321400 1 Meteorologist 0x1026d6354 0x10268c000 + 303956 2 Meteorologist 0x1026d0a8c 0x10268c000 + 281228 3 Meteorologist 0x1026e8ae4 0x10268c000 + 379620 4 Meteorologist 0x1026f7501 0x10268c000 + 439553 5 Meteorologist 0x1026f6621 0x10268c000 + 435745 6 Meteorologist 0x1026f74f9 0x10268c000 + 439545 7 Meteorologist 0x1026f7509 0x10268c000 + 439561 If I understand correctly, I need to include a dSYM file in my executable. I have DWARF with dSYM File in my Build Options, Release value. I can see the dSYM in my .xcarchive file. How do I get it into my .app executable? I do include uploadSymbols=TRUE in my exportOptionsPlist file. If I manually copy the dSYM file, prior to the notarytool step, notarytool throws an error. If I insert the dSYM file after I notarize then it gets flagged when I open the app because it doesn't match what was notarized. #!/bin/bash #set -e #set -x TEMPLATE_DMG=dist/template.dmg # "working copy" names for the intermediate dmgs WC_DMG=wc.dmg WC_DIR=/Volumes/Meteorologist VERSION=`cat ../website/VERSION2` SOURCE_FILES="./Build/Release/Meteorologist.app ./dist/Readme.rtf" MASTER_DMG="./Build/Meteorologist-${VERSION}.dmg" # .altoolid = abc@icloud.com aka Developer Email # .altoolpw = abcd-efgh-ijkl-mnop aka App-specific password # .altooltm = ABCD123456 aka Team ID dev_account=$(cat ~/.altoolid) dev_passwd=$(cat ~/.altoolpw) dev_teamid=$(cat ~/.altooltm) mkdir ./Build rm -rf ./Build/* echo echo ........................ echo "------------------------ Storing Credentials -----------------------" echo xcrun notarytool store-credentials --apple-id \"$dev_account\" --team-id \"$dev_teamid\" --password \"$dev_passwd\" notary-scriptingosx xcrun notarytool store-credentials --apple-id "$dev_account" --team-id="$dev_teamid" --password "$dev_passwd" notary-scriptingosx > xcodebuild.log exit_status=$? if [ "${exit_status}" != "0" ] then cat xcodebuild.log exit 1 fi rm xcodebuild.log echo echo ........................ echo "------------------------ Building Project as an Archive -----------------------" echo xcodebuild -project Meteorologist.xcodeproj -scheme Meteorologist -configuration Release -derivedDataPath ./Build -allowProvisioningUpdates --options=runtime clean archive -archivePath ./Build/Meteorologist.xcarchive xcodebuild -project Meteorologist.xcodeproj -scheme Meteorologist -configuration Release -derivedDataPath ./Build -allowProvisioningUpdates --options=runtime clean archive -archivePath ./Build/Meteorologist.xcarchive > xcodebuild.log exit_status=$? if [ "${exit_status}" != "0" ] then cat xcodebuild.log exit 1 fi rm xcodebuild.log echo echo ........................ echo "------------------------ Creating exportOptions.plist -----------------------" echo \<?xml version=\"1.0\" encoding=\"UTF-8\"?\> > exportOptions.plist echo \<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"\> >> exportOptions.plist echo \<plist version=\"1.0\"\> >> exportOptions.plist echo \<dict\> >> exportOptions.plist echo \<key\>destination\</key\> >> exportOptions.plist echo \<string\>export\</string\> >> exportOptions.plist echo \<key\>signingStyle\</key\> >> exportOptions.plist echo \<string\>automatic\</string\> >> exportOptions.plist echo \<key\>method\</key\> >> exportOptions.plist echo \<string\>developer-id\</string\> >> exportOptions.plist echo \<key\>uploadSymbols\</key\> >> exportOptions.plist echo \<true/\> >> exportOptions.plist echo \</dict\> >> exportOptions.plist echo \</plist\> >> exportOptions.plist echo echo ........................ echo "------------------------ Exporting the Archive -----------------------" echo xcodebuild -exportArchive -archivePath ./Build/Meteorologist.xcarchive -exportOptionsPlist exportOptions.plist -exportPath ./Build/Release xcodebuild -exportArchive -archivePath ./Build/Meteorologist.xcarchive -exportOptionsPlist exportOptions.plist -exportPath ./Build/Release > xcodebuild.log exit_status=$? if [ "${exit_status}" != "0" ] then cat xcodebuild.log exit 1 fi rm xcodebuild.log echo echo ........................ echo "------------------------ Compressing the app -----------------------" echo /usr/bin/ditto -c -k --keepParent ./Build/Release/Meteorologist.app ./Build/Release/Meteorologist.zip /usr/bin/ditto -c -k --keepParent ./Build/Release/Meteorologist.app ./Build/Release/Meteorologist.zip if [ "${exit_status}" != "0" ] then echo "Compress (ditto) failed" exit 1 fi echo echo ........................ echo "------------------------ Notarizing the app -----------------------" echo xcrun notarytool submit ./Build/Release/Meteorologist.zip --keychain-profile=notary-scriptingosx --wait xcrun notarytool submit ./Build/Release/Meteorologist.zip --keychain-profile=notary-scriptingosx --wait if [ "${exit_status}" != "0" ] then echo "xcrun notarytool failed" exit 1 fi echo echo ........................ echo "------------------------ Stapling the app -----------------------" echo xcrun stapler staple "./Build/Release/Meteorologist.app" xcrun stapler staple "./Build/Release/Meteorologist.app" if [ "${exit_status}" != "0" ] then echo "xcrun stapler failed" exit 1 fi echo rm ./Build/Release/Meteorologist.zip
2
0
1.8k
Aug ’23
Java classpath for my self contained MacOS java app does not work
In a nutshell, the classpath that I'm setting in Info.plist does not seem to work. I continue to get an error saying that jar files pointed to by the classpath cannot be found. Any ideas on what I could be doing wrong . I put the jar files in : MakinaCraftApp.app/Contents/Resources/Java I've even tried referencing the jar file directly with an absolute classpath but it still doesn't work. It is almost as if my app is prohibited from having access to jar file referenced by a classpath. Is there some type of permission I do not know about? Any suggestions are greatly appreciated. This is my Info.plist file: <dict> <key>CFBundleExecutable</key> <string>bin/MakinaCraftApp</string> <key>CFBundleGetInfoString</key> <string>MachinaWJavaApp (1)1.0, Copyright {user} 2004. All rights reserved.</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleIconFile</key> <string>MachinaWJavaApp (1).icns</string> <key>CFBundleIdentifier</key> <string>MakinaCraft</string> <key>CFBundleName</key> <string>MachinaWJavaApp2</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0.1</string> <key>Java</key> <dict> <key>MainClass</key> <string>com.noatechnologies.machinawjava.MachinaWJavaApp</string> <key>StartOnMainThread</key> <true/> <key>Arguments</key> <array/> <key>ClassPath</key> <string>$JAVAROOT/gluegen_rt:$JAVAROOT/gluegen_rt_natives_macosx_universal:$JAVAROOT/jogl_all:$JAVAROOT/jogl_all_natives_macosx_universal:$JAVAROOT/jogamp_fat.jar</string> </dict> </dict>
0
0
525
Aug ’23
Problems using a Mac as a headless build server
My team has a Mac desktop we use as a build server to do tests, packaging, codesigning, and notarization. The service was kicked off inside a cron job, but we started encountering issues with codesigning (codesign errSecInternalComponent). Eventually we tried turning the service into a LaunchAgent and codesigning now works, presumably because it now has access to the user's keychains. However, this means the service doesn't start until someone logs the user into the console, which is pretty inconvenient at times. We are also finding that the machine is now inaccessible remotely, over SSH and VNC, until there's a console login at the physical host. Our institutional security policies require the use of FileVault and disallow auto-login, and our IT folks haven't suggested any workarounds. What is the recommended way to configure a Mac desktop as a headless server that can reboot without user interaction? We don't, and can't, use XCode. We develop a multi-platform application written in Java.
2
0
1.3k
Sep ’23
What is the recommended way for Non App Store distribution to Client MDM ?
We currently have a Developer Account registered as an organisation and publish our app to App Store. One of our customers want our App to be part of their MDM, so that they can distribute it to their employees without App Store. Questions: What are the steps to make our App available to Client's MDM solutions like Microsoft Intune ? Will this be achieved by having Apple Developer Program (Account) or any other steps are involved ? Will the solution be applicable to multiple Clients using their own different MDM solutions ?
0
0
477
Sep ’23
Distribution Provisioning Profile isn't showing up in Xcode
I'm a newbie to deploying flutter apps to the iOS app store, so bare with me. Below is a screenshot of Xcode, and it says that it can't find any "iOS Development provisioning profiles." I don't understand why I need one. The strange thing is that I created a Distribution Profile, so I don't know why that's not showing up here. When I run the build command from the flutter CLI this is what I get: I find this all very confusing and frustrating. If anyone could help that would be great. Also if anyone needs more info about my setup just ask. I'm not sure what info is helpful and what isn't.
4
2
5.4k
Oct ’23
App getting updated without pushing changes to app store.
Hello, I am pushing changes to ad-hoc application via OutSystems. From here I usually have to change distribution settings to fit App store with certificates etc. I have different provisioning profile, app identifier etc on OutSystems, but when I push changes it now also gets updated on App Store, without me pushing any changes there since August. Even the testflight version get the newest changes. How is this possible? What could possibly be going on? Are there any changes in how you distribute apps to app store? We use apple business manager to distribute newest version from app store, so this is critical as we don't want it to push the same changes we push to Ad-Hoc prod application through outsystems distribution.
1
1
536
Oct ’23
App embedded in Java app
Hi folks I am struggling with following scenario: We have an app implemented in Java (Parent app). From this parent app I would like to call .app that is implemented in Swift (Child app). We are trying to build package that can be distributed in Appstore using Install4j, partially with success. The app can be validated and distributed in TestFlight, however when we are trying to open child app, nothing happens. The app does not open. I am not sure if we do correct signing BECAUSE, when we initially distributed the app outside AppStore, Child App was signed with Developer ID Application and it did work correctly. How should we sign all apps? Is there any other way that we can pack this scenario without using Install4j?
1
0
486
Oct ’23
Help - Cannot convert value of type 'String' to expected argument type 'OpenAISwift.Config'
Newbie coder here, using most recent Xcode and iOS 17 to build an app using Adam Rushy openaiswift tutorial. The app is entirely built and everything functions except this: Cannot convert value of type 'String' to expected argument type 'OpenAISwift.Config' So I cannot build the project, it refers to this line of code: func setup () { client = OpenAISwift(config: "removed api key for public view)") } func send(text: String, in the tutorial it said use authToken which Xcode said was wrong and must be config, so I changed it but it still doesn't work. Any help appreciated
1
0
1.3k
Oct ’23
Adding Custom App to iPhone
Hello, I'm not new to programming, but am new to developing for Apple products. I'm planning on developing an app for my iPhone exclusively for my use. My question is can I add my custom app to my phone without having to go through the App Store? If I can avoid the App Store, how do I go about getting the app onto my phone? I do have Xcode and have learned Swift, so I just need to understand how to get the app onto my phone. Thank you for your help!
0
0
542
Oct ’23