Cannot mount Developer Disk Image for iOS 13.6 using libimobiledevice - ios

I'm trying to use the functionality of libimobiledevice on my iPad to do stuff like change location (idevicesetlocation) and etc. I have no problems if I install the Developer Disk Image using XCode, but as a primarily PC user, I would like to be able to use my program solely from my own computer. After trying the command ideviceimagemounter IMAGE_FILE IMAGE_SIGNATURE_FILE and using the files from https://github.com/mspvirajpatel/Xcode_Developer_Disk_Images/releases for the two files, I get these messages:
Mounting...
Error: mount_image returned -3
I've tried this with multiple different file sources and two different iOS devices with the same result. Any help would be appreciated, and let me know if I can clarify my question in any way, I've never really posted on here before. Thanks!

You're probably using an old version of libimobiledevice. The libimobiledevice team from time to time updates the codebase to maintain compatibility with new versions of libimobiledevice.
If you're on Windows, you can try to use the binaries from the libimobiledevice-win32 project which I maintain. The latest release is available at https://github.com/libimobiledevice-win32/imobiledevice-net/releases/tag/v1.3.6.

Related

How can I use SwiftUI on Windows to make an iOS app?

So I have experience with programming already (Java, JS, Python), but I’m a complete newbie with Swift. I have a computer that runs Windows, but I would like to use SwiftUI and assume that I can’t without having macOS. I’ve heard of using Hackintosh to get around this OS problem, but is there anything else I could do? Thanks to whoever can help me with this.
Native way to create native iOS apps is done using XCode.app, which can only be run on MacOS.
Hackintosh is a solution to run MacOS on unsupported hardware. It is possible, but be prepared for many nights spent setting it up, unless you have perfectly compatible hardware.
Another way to consider is to run it in a virtual machine, see this StackOverflow question.
BEST solution: Considering that apple developer accounts is about $100 a year, it is not a huge overpay to buy a used MacMini for your development (if money is an issue).
It looks like you could get some experience without a Mac if you set up Ubuntu in a VM and used
https://github.com/TokamakUI/Tokamak
From the link above:
About:
SwiftUI-compatible framework for building browser apps with WebAssembly and native apps for other platforms
Requirements
...
Swift 5.6 or later and Ubuntu 18.04/20.04 if you'd like to use Linux. Other Linux distributions are currently not supported.
There are no ways (other than renting a cloud mac) to develop IOS/MacOS/Apple Watch project using non-MacOS operating system. You either buy one, rent one, or built a hackintosh

Memory Load/Save Utility in Code Composer 3.3

Apologies in advance for the dated software question:
According to Code Composer help documentation the "Memory Load/Save Utility" should be be in the Tools menu. In my Code Composer 3.3 (which I have to use for this project, so I cannot upgrade), does not have this option in the tools menu, or any menu that I could find. It is not greyed out - it is just simply missing as far as I can tell. I've changed every view option to try and enable this.
Can anyone help me figure out how to enable/activate this option? Does the processor need to be in a specific state? Is this a special plug-in that I can't find?
Here is my setup:
Code Composer 3.3, Windows Xp, Using a Spectrum Digital xds510pp JTAG emulator on a TI ARM 9 processor.
Specifically the option is here: 13. Memory Load/Save Utility:
http://www.ti.com/lit/an/spraa07c/spraa07c.pdf
[EDIT] The File > Data > Save - this is not the same as the Memory Load/Save Utility. This sounds similar but does not export the values.
For example, I need to export data at a certain memory address for a certain length into a hex format.
Somehow my installation went bad.
I checked the Code Composer Studio Component Manager by running C:\CodeComposer3.3\cc\bin\comp_mgr.exe. Now, in this window un the TI node, there should be numerous plugins and one of which should be: "Memory Save/Load Utility Control..."
For me this was missing.
Repairing the installation via windows control panel did not work. I had to uninstall and then reinstalled. Upon reinstalling a TMS470 driver was reported missing. Not sure why this was.
Again, I uninstalled then complete removed the C:\CodeComposer3.3\ directory, then reinstalled. This time everything seemed to have worked and I do have the Memory Save/Load Utility and it is working.
EDIT:
It should also be noted that the plugins are bundled with the installer and could not be re installed separately.

Command line access to iOS app directory (sandbox) from Mac

I need to access the sandbox directory for an application installed on an iOS device, using the command line (non-gui) from a Mac or Linux. This is to help with development and testing automation. Dropping a json file into the sandbox lets me set parameters like extra debug messages and smaller refresh intervals.
A tool like iFunBox works perfectly but is graphical only, requiring numerous clicks to do this. Emails to the developers were unanswered. It also does not support AppleScript. I did find another app that provided a Fuse module, but it turned out buggy especially if the app was uninstalled and then reinstalled (in order to reset back to first time user experience). I reported the problems to the developer but there is no fix on the horizon.
The things I need to do are:
Test if an app with a specific bundle id is installed
Create Library/Caches/MYLIBNAME directory if it doesn't exist
Copy a ~100 byte json file from the Mac to that directory
Get a copy of that file
A solution that only works from Linux is acceptable too
Devices are not jailbroken and I would prefer not to need that as a requirement
In some cases I do not have the source code to the app since it is a third party using my library, so compiling different versions of the app isn't practical.
Answer is below in many comments thanks to lxt. Summary is:
Various libraries and programs associated with libimobiledevice can solve the problems
Use patched iFuse to mount an application sandbox
Use idevicesyslog to see the console log
Use ideviceinstaller to install/uninstall apps
The various libraries and programs associated with libimobiledevice are incredibly difficult if not impossible to compile as is on Linux or Mac, and there is no unified distribution of the source or binaries
For Ubuntu try libimobiledevice (may have 3 suffix), ideviceinstaller and libimobiledevice-utils packages
For Mac a search for libimobiledevice-macosx may get you some of the way there
This is going to be a little tricky, because as I think you've found out the application name is randomly generated on every install. I don't think there is a way past that, certainly that I know of. This explains the problems you're running into when simulating a new install (...the app directory name changes to a new, random hash, and then you're stuck).
Although my preference would be to access this config file in some other way (perhaps over a network, and have some code that only executes on debug/test builds check for it), if you did want to do this then I'd suggest trying something like writing a script that when you want to simulate a new install chooses the app directory that's most recently modified. But this is very hacky.
If you're not able to insert conditional code that only executes on debug/ test builds then I think the random app naming schema that iOS uses at a file system level is going to be problematic for you whatever approach you take.
Update: Regarding iFuse and libimobiledevice - out of the box it limits you to the documents directory. This is because the authors of iFuse don't entry-level users to be confused, and also because the structure is a little different depending on iOS version. You can comment out the lines in the iFuse source - fuse_opt_add_arg(&args, "-osubdir=Documents"); - to get access to the library directory through the mount. You will obviously need to re-compile iFuse yourself if doing this.
You can make use of MobileDevice Library
I know this is an old question and I doubt anyone is looking here anymore, but I thought I'd mention that you can use 'brew install libimobiledevice' to compile on the mac. There are a lot of dependencies and Homebrew really helps make it an easy process by installing them for you.

Compile iOS projects on Ubuntu?

Is it possible to compile my Objective-C iOS-specific project on anything other than OSX? I spend a lot of time in Windows and it'd be less of a hassle if I could, at the very least, SSH into my Ubuntu machine and edit code / compile on there. I think the only thing I'd need the Macbook for would be editing storyboards and running the iphone emulator.
I just have a lot of free time every day, but don't have access to my Macbook until I get home around 7pm. Are there any good ways to remotely work on an XCode iOS project?
Yes, it is, although you'll need a jailbroken device for this. You are also going to need to build the opensource, non-official toolchain for yourself, or get a precompiled version.
Hey, you can even make GCC run on your iPhone itself (that's how I use it).
Why not SSH into the Mac and use the command-line tools that come with Xcode?
Or, more comfortably, just remote into the Mac via one of the many remote desktop solutions out there (TeamViewer is free for personal use and quite good at poking through NATs etc., but there are a lot of other options) and use Xcode.

What do you need to do to create a single package for blackberry OS5 and OS6 devices?

A newb question and one I haven't been able to see much advice on, but is it possible to create a single package that will install and run on both blackberry OS5 and OS6 devices?
I want to avoid preprocessing or creation of two different COD files.
I am not using anything special that differs between the two OS's (afaik!)
Yes, absolutely. So far, RIM has made all of it's OS revisions backwards-compatible. So anything you write against any given OS version will work on that version and all newer versions.
That's not to say that you won't run into funny quirks when moving to newer OS versions, but your code will execute without recompilation. You just can't take advantage of any of the newer OS's API changes without doing preprocessing.
Basically in this case you just should not use APIs which were added in OS6.

Resources