Skip to content

Conversation

@ann0see
Copy link
Member

@ann0see ann0see commented Feb 7, 2022

Short description of changes
Automatically builds unsigned ipa files for iOS. This might enable quicker installing of the iOS version with a tool like Sideloadly: https://sideloadly.io

Context: Fixes an issue?
Related to #2105

Does this change need documentation? What needs to be documented and how?
Yes. But only if it is tested to work

Status of this Pull Request
Needs testing and a decision if we want to actually go this way (I think it's the only way to provide semi-official non-app-store builds)

What is missing until this pull request can be merged?
Review by @emlynmac and @softins

Checklist

  • I've verified that this Pull Request follows the general code principles
  • I tested my code and it does what I want
  • My code follows the style guide
  • I waited some time after this Pull Request was opened and all GitHub checks completed without errors.
  • I've filled all the content above


cd "${THIS_JAMULUS_PROJECT_PATH}"

qmake -spec macx-xcode Jamulus.pro
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would have expected the spec to be the iOS build rather than the macx target here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. But that's what builds for iOS

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so how does:

 else:ios {
    QMAKE_INFO_PLIST = ios/Info.plist
    QT += macextras
    OBJECTIVE_SOURCES += ios/ios_app_delegate.mm
    HEADERS += ios/ios_app_delegate.h
    HEADERS += ios/sound.h
    OBJECTIVE_SOURCES += ios/sound.mm
    QMAKE_TARGET_BUNDLE_PREFIX = io.jamulus
    QMAKE_APPLICATION_BUNDLE_NAME. = $$TARGET
    LIBS += -framework AVFoundation \
        -framework AudioToolbox
} 

play into the build?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably it generates the .xcodeproject for iOS

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the build includes the iOS version of Qt, probably qmake knows it is building for iOS. Certainly the log shows a line for building ios/sound.mm

@ann0see
Copy link
Member Author

ann0see commented Feb 7, 2022

BTW: https://dantheman827.github.io/ios-app-signer/ seems to be maintained (?) while the other app I mentioned doesn't. There's spam

@emlynmac
Copy link
Contributor

emlynmac commented Feb 7, 2022

Once we have this building, I can add some of the signing to the GitHub repo in the same way as for the Mac app.

@ann0see
Copy link
Member Author

ann0see commented Feb 7, 2022

Yes, maybe we can generate IPA files then.

@ann0see ann0see force-pushed the autobuild/iOSBuild branch 2 times, most recently from 6d2770e to 411f857 Compare February 7, 2022 16:29
@@ -0,0 +1,48 @@
#!/bin/sh -e
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is mostly copied from macOS.

@ann0see
Copy link
Member Author

ann0see commented Feb 7, 2022

Once we have this building, I can add some of the signing to the GitHub repo in the same way as for the Mac app.

This would probably allow us to generate IPA files? Probably users would still need to sign them themselves. Releasing on TestFlight seems to work as https://www.uketok.com/about.php did that.

@ann0see
Copy link
Member Author

ann0see commented Feb 7, 2022

Other build assets can be found here: https://github.com/jamulussoftware/jamulus/actions/runs/1807584540

@emlynmac
Copy link
Contributor

emlynmac commented Feb 7, 2022

Once we have this building, I can add some of the signing to the GitHub repo in the same way as for the Mac app.

This would probably allow us to generate IPA files? Probably users would still need to sign them themselves. Releasing on TestFlight seems to work as https://www.uketok.com/about.php did that.

Yes, I'd set it up to build and push to TestFlight. Then we can have an open beta available.

@ann0see
Copy link
Member Author

ann0see commented Feb 7, 2022

After trying multiple times, it seems as if using the produced file needs Xcode to be installed. That's exactly what I wanted to avoid. Probably with signing we can produce fake-signed IPA files which could then be installed via some external app.

@ann0see
Copy link
Member Author

ann0see commented Feb 7, 2022

Wait a moment. I think I got it to work! Let's wait and see what the CI produces.

@ann0see ann0see changed the title Automatically build archive for iOS Automatically build IPA for iOS Feb 7, 2022
@ann0see
Copy link
Member Author

ann0see commented Feb 7, 2022

Just installed the unsigned IPA via Sideloadly on my phone and it worked! I'd see this PR as ready for review. If we merge it, it should be squash-merged

@ann0see ann0see marked this pull request as ready for review February 7, 2022 22:35
@hoffie hoffie added this to the Release 3.9.0 milestone Feb 7, 2022
@ann0see ann0see force-pushed the autobuild/iOSBuild branch 2 times, most recently from d7d6608 to 4ee4dda Compare February 8, 2022 12:46
@ann0see
Copy link
Member Author

ann0see commented Feb 20, 2022

Can be reviewed further and merged soon

@ann0see ann0see requested review from hoffie and softins February 20, 2022 18:47
Comment on lines +18 to +21
echo "Install dependencies..."
python3 -m pip install "aqtinstall==${AQTINSTALL_VERSION}"
python3 -m aqt install-qt --outputdir "${QT_DIR}" mac ios ${QT_VER}

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs caching.

Copy link
Member

@softins softins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll review more later when I get time. Would like to try it on my iPad.

@ann0see
Copy link
Member Author

ann0see commented Feb 25, 2022

Should be squash merged.

@ann0see ann0see requested a review from softins February 25, 2022 21:40
@ann0see ann0see force-pushed the autobuild/iOSBuild branch from bf04779 to 8794711 Compare March 2, 2022 21:23
@ann0see
Copy link
Member Author

ann0see commented Mar 4, 2022

@softins @hoffie I think this is ready to merge.

Copy link
Member

@softins softins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well the actual changes look sensible. And now I have managed to get sideloadly onto my Mac and use it to load the ipa onto my iPad. It seems to run ok, and I have listened to a couple of sessions, so happy to approve.

Copy link
Member

@hoffie hoffie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build logic looks fine, but I don't know anything about iOS app packaging.

@ann0see ann0see merged commit 72fe918 into jamulussoftware:master Mar 4, 2022
@ann0see ann0see deleted the autobuild/iOSBuild branch March 4, 2022 23:02
@ann0see
Copy link
Member Author

ann0see commented Mar 9, 2022

CHANGELOG: Feature: Provide unsigned iOS builds for easy install on iOS devices. Please note that you will need to sign the app yourself (usually done via a computer). The app will only run for 7 days before you need to resign it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants