The devs really hate this things, but as a project manager I need to know the time estimates. So in development favour I really want to know the time estimate to setup and XCode project, considering project as an average case (includes complexity).
So I can really know hpow much time do they actually take or they are just giving over estimates.
General
RSS for tagDive into the vast array of tools and services available to developers.
Post
Replies
Boosts
Views
Activity
In statistical objects In MXMetricPayload histogrammedTimeToFirstDrawKey start times not equal applicationExitMetrics exit:
case1:
"applicationExitMetrics": {
"backgroundExitData": {
"cumulativeNormalAppExitCount": 3,
"cumulativeMemoryPressureExitCount": 4
},
"foregroundExitData": {
"cumulativeMemoryResourceLimitExitCount": 3
}
},
"applicationLaunchMetrics": {
"histogrammedTimeToFirstDrawKey": {
"histogramNumBuckets": 14,
"histogramValue": {
"10": {
"bucketCount": 1,
"bucketStart": "1740 ms",
"bucketEnd": "1749 ms"
},
"2": {
"bucketCount": 1,
"bucketStart": "1440 ms",
"bucketEnd": "1449 ms"
},
"3": {
"bucketCount": 2,
"bucketStart": "1490 ms",
"bucketEnd": "1499 ms"
},
"11": {
"bucketCount": 1,
"bucketStart": "1780 ms",
"bucketEnd": "1789 ms"
},
"4": {
"bucketCount": 1,
"bucketStart": "1500 ms",
"bucketEnd": "1509 ms"
},
"5": {
"bucketCount": 1,
"bucketStart": "1580 ms",
"bucketEnd": "1589 ms"
},
"12": {
"bucketCount": 1,
"bucketStart": "1860 ms",
"bucketEnd": "1869 ms"
},
"6": {
"bucketCount": 1,
"bucketStart": "1620 ms",
"bucketEnd": "1629 ms"
},
"13": {
"bucketCount": 1,
"bucketStart": "1990 ms",
"bucketEnd": "1999 ms"
},
"7": {
"bucketCount": 1,
"bucketStart": "1650 ms",
"bucketEnd": "1659 ms"
},
"0": {
"bucketCount": 1,
"bucketStart": "1400 ms",
"bucketEnd": "1409 ms"
},
"8": {
"bucketCount": 1,
"bucketStart": "1660 ms",
"bucketEnd": "1669 ms"
},
"1": {
"bucketCount": 1,
"bucketStart": "1430 ms",
"bucketEnd": "1439 ms"
},
"9": {
"bucketCount": 1,
"bucketStart": "1730 ms",
"bucketEnd": "1739 ms"
}
}
},
In this Case the app cold started 15 times, but quit only 10 times, why??
case2:
"applicationExitMetrics": {
"backgroundExitData": {
"cumulativeMemoryPressureExitCount": 1
},
"foregroundExitData": {
"cumulativeMemoryResourceLimitExitCount": 3,
"cumulativeNormalAppExitCount": 1
}
},
"applicationLaunchMetrics": {
"histogrammedTimeToFirstDrawKey": {
"histogramNumBuckets": 3,
"histogramValue": {
"0": {
"bucketCount": 1,
"bucketStart": "1490 ms",
"bucketEnd": "1499 ms"
},
"1": {
"bucketCount": 1,
"bucketStart": "1680 ms",
"bucketEnd": "1689 ms"
},
"2": {
"bucketCount": 1,
"bucketStart": "1880 ms",
"bucketEnd": "1889 ms"
}
}
},
The app cold started 3 times, but quit unexpectedly reached 5 times, why???
Hello Apple Developer Community,
I am writing to request urgent support to re-enable our developer account which seems to have been disabled as a result of a credit card issue.
We have attempted to reach out via email since phone support is not available in my region but received no response for the past 8 days.
This issue is hampering our ability to deploy new updates to appstore for critical updates.
Thank you for your attention.
Looking forward to your support.
For some time now XCode Cloud build keep failing with:
The step invocation hit a user timeout. The xcodebuild archive invocation timed out. No activity has been detected on stdout, stderr or the result bundle in 30 minutes.
This happens specifically on Asset catalogs processing. In my case the app has like 8K images, with most of them tagged via Apple's ODR system so only the assets user needs are loaded, but the associated build step still takes a lot of time, usually 90+ minutes.
It was fine before the timeout got implemented. Is there any whay to raise the timeout for a specific project? As it stands now the XCode Cloud is useless for this project as it can't do what it was intended for.
I'm doing the python dynamic module loading dance.
As you likely know, this is not the typical shared library scenario described on all the docs, where an executable is linked against an existing shared lib. Instead cythonized python modules need to call back to the interpreter that loaded them for various functions. Thus, when creating the interpreter, some manner of symbol export must happen, which can then later be linked into a module's dynamic lib to resolve interpreter symbols.
With GNU/GCC this is all magic with the -shared flag (perhaps GNU's weak symbol feature, unsupported on macOS, helps out?). With a MingW GCC variant on Windows -Wl,--output-def python.def is required, followed by dlltool -d python.def -l python.dll.a, which creates some object thingy that can be linked into the subsequent module .so files. I played with lipo python -create -output libpython.dylib on macOS, but saw that no one else uses this and abandoned it.
The python3 on Darwin uses clang -bundle -undefined dynamic_lookup, but when I roll my own custom interpreter, building a module by hand with the above gives: ld: warning: -undefined dynamic_lookup may not work with chained fixups ... whatever that means.
Link args of -bundle -bundle_loader ../python result in NO errors or warnings, but my interpreter cannot load these module .so files either, probably due to some error I have not yet unmasked.
I am hoping to find a solution that works for both Xcode and Homebrew, and that will last for a decade or so, but for now would be happy getting something to work today.
I have requested for enrollment like month ago but still have not received any answer, I have wrote 2 email to support, but there is not any response too. Does anybody faced this kind of issue?
Can I enroll in the developer program if I had deleted my previous apple account that I applied with
I had tried to enroll 7 years ago with an account that has been deleted meanwhile. I used my id and and went through all the procedures. The fact that after 1 week of trying to pay for the program didn't go through I just deleted the account.
Now I really need to have a developer account associated with my company. What can I do to get make it?
Shouldn't deleting my account result also in deleting my information about the government issued id?
Never mention BETA, because when you revert to shipping, it's a disaster and the docs aren't correct. The carrier, T-Mobile is not technically astute. So, how do I get heard and acknowledged by a REAL person?
Hello, I've been trying to get my org approved but Apple keeps asking me for documents. I have uploaded certificates of incorporations and that still doesn't work. I wish they were more clear on what type of documentation I need to provide.
[Edited by Moderator]
Hi Team,
If we release our app for Phase release after 2 days we have pause the app. What will happen if we not resume the app for more than 30 days?
Hi Team,
If we release our app for Phase release after 2 days we have paused the app. What will happen if we not resume the app for more than 30 days?
The documentation about the Disable Library Validation Entitlement mentioned that the macOS dynamic linker (dyld) provides a detailed error message when the system prevents code from loading due to library validation.
You can find more information here: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation
I need assistance in locating the dynamic linker (dyld) on macOS Ventura 13.0.
What are the various methods available to locate it?
How can I access or open it for reading?
Additionally, do I need any external tools to facilitate this process?
My ultimate goal is to examine the detailed error message to identify any issues I am encountering with my application.
Additionally, I have found one at /usr/lib/dyld, but it's not human-readable, nor does it have timestamps for whatever is logged. Based on my findings, I should be able to locate dyld at System/Library, but I can't find it there either.
I'm trying to complete my Apple Developer Program Order. I'm unable to enter the CVV field of my VISA Card. There are no field for this. You can see the screenshot. I can just enter the card number. So that cause my payment failed every time I try.
I try to complete my apple developper program order with my visa card. I expected to be able to enter both the VISA card number and the CVV code for order completion.
Hi,for the past 2 days i ve been going crazy over this problem i am having with my mackbook air, i recntly got a 2019 13 inch model and i basically factory reset it wyping the disk and reinstalling os,it booted in mac os mohave 10.14.6 and ive been trying evr since to update it to sonoma but each time the download is doneand it says the mac is about to reboot to install it screen may turn off up to a min it does not ,it just goes black for a second and then boots back into mojave without even a failed to install promt,it just acts like nothing happened and then ask to install it again.
At this point i ve checke for evrything, i dont have antivirus or storage problems since essentially it s a blank mackbook without any apps ,i tried to install a combo update after realising that i have a security update for 10.14.6 that does almost the same thing but this time i do get a promt that an error occured and it sends me to disk startup to boot it again but it didnt work,i tried updating to a previous version like big sur hoping it was too big of a leap and that even tho evrywere i checked it said its compatible maybe it was not but nope exact same thing as sonoma i cnt boot it from a usb cuz i only have usb c ports(idiotic design from apple) i dont know what else to do it seems like no one had on the entire the same prob so i am here after the 12 th try hoping somebody has a fix.
I am looking forward to develop an ecommerce IOS application. When I conducted my research for the same I found that offshore developers are offering solutions in quite less price compare to onshore developers. At the same time I also have some doubts over offshore development such as reliability, quality, collaboration and more.. Anyone can suggest me what would be the best in long term.
Recently a bunch of folks have asked about why a specific symbol is being referenced by their app. This is my attempt to address that question.
If you have questions or comments, please start a new thread. Tag it with Linker so that I see it.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Determining Why a Symbol is Referenced
In some situations you might want to know why a symbol is referenced by your app. For example:
You might be working with a security auditing tool that flags uses of malloc.
You might be creating a privacy manifest and want to track down where your app is calling stat.
This post is my attempt at explaining a general process for tracking down the origin of these symbol references. This process works from ‘below’. That is, it works ‘up’ from you app’s binary rather than ‘down’ from your app’s source code. That’s important because:
It might be hard to track down all of your source code, especially if you’re using one or more package management systems.
If your app has a binary dependency on a static library, dynamic library, or framework, you might not have access to that library’s source code.
IMPORTANT This post assumes the terminology from An Apple Library Primer. Read that before continuing here.
The general outline of this process is:
Find all Mach-O images.
Find the Mach-O image that references the symbol.
Find the object files (.o) used to make that Mach-O.
Find the object file that references the symbol.
Find the code within that object file.
This post assumes that you’re using Xcode. If you’re using third-party tools that are based on Apple tools, and specifically Apple’s linker, you should be able to adapt this process to your tooling. If you’re using a third-party tool that has its own linker, you’ll need to ask for help via your tool’s support channel.
Find all Mach-O images
On Apple platforms an app consists of a number of Mach-O images. Every app has a main executable. The app may also embed dynamic libraries or frameworks. The app may also embed app extensions or system extensions, each of which have their own executable. And a Mac app might have embedded bundles, helper tools, XPC services, agents, daemons, and so on.
To find all the Mach-O images in your app, combine the find and file tools. For example:
% find "Apple Configurator.app" -print0 | xargs -0 file | grep Mach-O
Apple Configurator.app/Contents/MacOS/Apple Configurator: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]
…
Apple Configurator.app/Contents/MacOS/cfgutil: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
…
Apple Configurator.app/Contents/Extensions/ConfiguratorIntents.appex/Contents/MacOS/ConfiguratorIntents: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
…
Apple Configurator.app/Contents/Frameworks/ConfigurationUtilityKit.framework/Versions/A/ConfigurationUtilityKit: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64]
…
This shows that Apple Configurator has a main executable (Apple Configurator), a helper tool (cfgutil), an app extension (ConfiguratorIntents), a framework (ConfigurationUtilityKit), and many more.
This output is quite unwieldy. For nicer output, create and use a shell script like this:
% cat FindMachO.sh
#! /bin/sh
# Passing `-0` to `find` causes it to emit a NUL delimited after the
# file name and the `:`. Sadly, macOS `cut` doesn’t support a nul
# delimiter so we use `tr` to convert that to a DLE (0x01) and `cut` on
# that.
#
# Weirdly, `find` only inserts the NUL on the primary line, not the
# per-architecture Mach-O lines. We use that to our advantage, filtering
# out the per-architecture noise by only passing through lines
# containing a DLE.
find "$@" -type f -print0 \
| xargs -0 file -0 \
| grep -a Mach-O \
| tr '\0' '\1' \
| grep -a $(printf '\1') \
| cut -d $(printf '\1') -f 1
Find the Mach-O image that references the symbol
Once you have a list of Mach-O images, use nm to find the one that references the symbol. The rest of this post investigate a test app, WaffleVarnishORama, that’s written in Swift but uses waffle management functionality from the libWaffleCore.a static library. The goal is to find the code that calls calloc.
This app has a single Mach-O image:
% FindMachO.sh "WaffleVarnishORama.app"
WaffleVarnishORama.app/WaffleVarnishORama
Use nm to confirm that it references calloc:
% nm "WaffleVarnishORama.app/WaffleVarnishORama" | grep "calloc"
U _calloc
The _calloc symbol has a leading underscore because it’s a C symbol. This convention dates from the dawn of Unix, where the underscore distinguish C symbols from assembly language symbols.
The U prefix indicates that the symbol is undefined, that is, the Mach-O images is importing the symbol. If the symbol name is prefixed by a hex number and some other character, like T or t, that means that the library includes an implementation of calloc. That’s weird, but certainly possible. OTOH, if you see this then you know this Mach-O image isn’t importing calloc.
IMPORTANT If this Mach-O isn’t something that you build — that is, you get this Mach-O image as a binary from another developer — you won’t be able to follow the rest of this process. Instead, ask for help via that library’s support channel.
Find the object files used to make that Mach-O image
The next step is to track down which .o file includes the reference to calloc. Do this by generating a link map. A link map is an old school linker feature that records the location, size, and origin of every symbol added to the linker’s output.
To generate a link map, enable the Write Link Map File build setting. By default this puts the link map into a text (.txt) file within the derived data directory. To find the exact path, look at the Link step in the build log. If you want to customise this, use the Path to Link Map File build setting.
A link map has three parts:
A simple header
A list of object files used to build the Mach-O image
A list of sections and their symbols
In our case the link map looks like this:
# Path: …/WaffleVarnishORama.app/WaffleVarnishORama
# Arch: arm64
# Object files:
[ 0] linker synthesized
[ 1] objc-file
[ 2] …/AppDelegate.o
[ 3] …/MainViewController.o
[ 4] …/libWaffleCore.a[2](WaffleCore.o)
[ 5] …/Foundation.framework/Foundation.tbd
…
# Sections:
# Address Size Segment Section
0x100008000 0x00001AB8 __TEXT __text
…
The list of object files contains:
An object file for each of our app’s source files — That’s AppDelegate.o and MainViewController.o in this example.
A list of static libraries — Here that’s just libWaffleCore.a.
A list of dynamic libraries — These might be stub libraries (.tbd), dynamic libraries (.dylib), or frameworks (.framework).
Focus on the object files and static libraries. The list of dynamic libraries is irrelevant because each of those is its own Mach-O image.
Find the object file that references the symbol
Once you have list of object files and static libraries, use nm to each one for the calloc symbol:
% nm "…/AppDelegate.o" | grep calloc
% nm "…/MainViewController.o" | grep calloc
% nm "…/libWaffleCore.a" | grep calloc
U _calloc
This indicates that only libWaffleCore.a references the calloc symbol, so let’s focus on that.
Note As in the Mach-O case, the U prefix indicates that the symbol is undefined, that is, the object file is importing the symbol.
Find the code within that object file
To find the code within the object file that references the symbol, use the objdump tool. That tool takes an object file as input, but in this example we have a static library. That’s an archive containing one or more object files. So, the first step is to unpack that archive:
% mkdir "libWaffleCore-objects"
% cd "libWaffleCore-objects"
% ar -x "…/libWaffleCore.a"
% ls -lh
total 24
-rw-r--r-- 1 quinn staff 4.1K 8 May 11:24 WaffleCore.o
-rw-r--r-- 1 quinn staff 56B 8 May 11:24 __.SYMDEF SORTED
There’s only a single object file in that library, which makes things easy. If there were a multiple, run the following process over each one independently.
To find the code that references a symbol, run objdump with the -S and -r options:
% xcrun objdump -S -r "WaffleCore.o"
…
; extern WaffleRef newWaffle(void) {
0: d10083ff sub sp, sp, #32
4: a9017bfd stp x29, x30, [sp, #16]
8: 910043fd add x29, sp, #16
c: d2800020 mov x0, #1
10: d2800081 mov x1, #4
; Waffle * result = calloc(1, sizeof(Waffle));
14: 94000000 bl 0x14 <ltmp0+0x14>
0000000000000014: ARM64_RELOC_BRANCH26 _calloc
…
Note the ARM64_RELOC_BRANCH26 line. This tells you that the instruction before that — the bl at offset 0x14 — references the _calloc symbol.
IMPORTANT The ARM64_RELOC_BRANCH26 relocation is specific to the bl instruction in 64-bit Arm code. You’ll see other relocations for other instructions. And the Intel architecture has a whole different set of relocations. So, when searching this output don’t look for ARM64_RELOC_BRANCH26 specifically, but rather any relocation that references _calloc.
In this case we’ve built the object file from source code, so WaffleCore.o contains debug symbols. That allows objdump include information about the source code context. From that, we can easily see that calloc is referenced by our newWaffle function.
To see what happens when you don’t have debug symbols, create an new object file with them stripped out:
% cp "WaffleCore.o" "WaffleCore-stripped.o"
% strip -x -S "WaffleCore-stripped.o"
Then repeat the objdump command:
% xcrun objdump -S -r "WaffleCore-stripped.o"
…
0000000000000000 <_newWaffle>:
0: d10083ff sub sp, sp, #32
4: a9017bfd stp x29, x30, [sp, #16]
8: 910043fd add x29, sp, #16
c: d2800020 mov x0, #1
10: d2800081 mov x1, #4
14: 94000000 bl 0x14 <_newWaffle+0x14>
0000000000000014: ARM64_RELOC_BRANCH26 _calloc
…
While this isn’t as nice as the previous output, you can still see that newWaffle is calling calloc.
Hello there:
On November 2023, I submitted enrollment ID 3BR28NV28U. I am responsible on behalf of my employer, Strathcona Resources, to submit this Apple Developer enrollment to advance in a custom app that we must implement to our iPads in our field sites. As you can probably tell, I have not received any advancement with this request, and seven months have passed, without any update or any notification regarding this enrollment.
I would appreciate it if you can please channel this request to the appropriate party, in order to provide a status update, escalation, and completion as appropriate.
Seven months without an update is a major delay, and we are behind schedule for the custom app that we need to implement in our organization.
Thank you for your attention to this matter.
Best regards,
**** Godoy
Strathcona Resources
Assuming I have a static library where all global symbols need to be re-exported by the target executable. How do I extract these symbols into a file to be used with ld's -exported_symbols_list and Xcode's EXPORTED_SYMBOLS_FILE?
I was thinking about nm -gUjo … + sed but maybe there is abetter way?
Hi,
Guys, I would lie to ask it been more than 10 days I add my card but still it shows
Your purchase may take up to 48 hours to process. i use my name same in card also
anybody know what possible issues here, i was using my email but it is not same email with my card
I located in Malaysia
Hi, I want to create an offline mode for my iOS app. Where is it better to keep files in terms of download speed: in a CDN like Cloudflare or using On-Demand Resources? The total file size is 2 GB.