Channelix IPTV 1.5.2 (12) — application relink materials

This kit contains object files and resources from the actual final archive build, a portable transcription of its logged linker command, and an unsigned copy of the app and embedded frameworks. It contains no signing private key or provisioning profile. No upload or publication is performed by these scripts.

Metadata/KIT-MANIFEST.json records the app version, build, toolchain, SDK, original executable hash and input hashes. Metadata/link-command.json is derived from the successful Xcode archive log, not an invented command. Paths to copied inputs and the selected Apple SDK are substituted when relink.py runs. The SDK itself and Apple's system libraries are not redistributed.

A. Rebuild the LGPL library
Use the exact modified VLCKit source package and its build recipe. Metadata/KIT-MANIFEST.json records its SHA-256 and storage location. After downloading both archives, it is referenced at ../Source/Channelix-VLCKit-4.0.0-a24-patched-source.tar.gz; keep that sibling Source folder with the kit or update the reference to the identical verified archive. The source archive is a separate download; extract this kit beside its Source folder. Both source and relink archives must be downloaded for this layout. Make an interface-compatible library change and build the iOS device arm64 framework. The simulator slice cannot be installed in an iPhone app.

B. Relink the application copy
Select the recorded Xcode version with xcode-select. From the unpacked kit:

  python3 relink.py

This validates hashes and prints the real adapted link command without modifying the app. To use a complete modified iOS-device framework:

  python3 relink.py --execute --replacement-framework /path/to/VLCKit.framework

The script replaces only this kit's embedded framework and relinks only this kit's application. It writes Build/relink.log and Build/RELINK-RESULT.json. It does not sign or install anything. Keep the same library interface; arbitrary ABI changes can require app recompilation and may not work with these object files.

C. Sign and test with your own authorized identity
The output is unsigned. Use your own Apple development signing identity and a provisioning profile for a bundle identifier you are authorized to use. If that identifier differs, change CFBundleIdentifier in the copied app's Info.plist to match your profile before signing; do not modify the original archived app. Prepare a matching entitlements file from your own profile. Metadata/Requested-Capabilities.plist lists the original capability requests without the original team's identifiers or keychain groups; it is not a usable profile and does not grant capabilities.

CarPlay requires separate Apple authorization. Do not copy the original developer's identifiers or assume a replacement test build gains CarPlay capabilities. An iPhone-only test profile must omit capabilities it is not authorized to sign. Changing capabilities can change the feature set being tested.

Copy your own profile into the copied app as embedded.mobileprovision, sign the nested framework before signing the app, and use your own entitlements file. The following is a signing outline, with values you must supply, not a command recorded from the original build:

  codesign --force --sign "$YOUR_SIGNING_IDENTITY" "$APP_COPY/Frameworks/VLCKit.framework"
  codesign --force --sign "$YOUR_SIGNING_IDENTITY" --entitlements "$YOUR_ENTITLEMENTS_PLIST" "$APP_COPY"
  codesign --verify --deep --strict "$APP_COPY"

Sign any other nested code present before signing the enclosing app. Install the signed test app with Xcode's Devices and Simulators window or your normal authorized development workflow. Never include private keys or provisioning profiles in a public source/relink package.

D. Verify modification works
A successful link does not establish successful signing or execution. Install the modified build, launch it, import a synthetic playlist, and exercise video/audio playback, seeking, pause/resume and the changed library behavior. Record which iOS version, profile capabilities and toolchain were used. Metadata/VERIFICATION.json records the unsigned relink actually tested with the final embedded SDK. Running and validating a user-modified library remains a separate step; this kit does not claim that it has been signed, installed, or tested on an iPhone after relinking.

E. Open-source component licenses and delivery
The included open-source components remain governed by their respective licenses. The complete notices are in UnsignedApp/ChannelixIPTV.app/ThirdParty-Notices.txt. The GNU Lesser General Public License version 2.1 includes permissions concerning modification for the recipient's own use and reverse engineering for debugging those modifications; read its section 6 together with the full license.

Apple's Standard EULA explicitly excepts from its restriction on reverse engineering and modification what the licenses governing included open-source components permit:
https://www.apple.com/legal/internet-services/itunes/dev/stdeula/

This engineering package does not replace those licenses, grant Apple signing capabilities, or certify legal compliance. It supplies the exact application link inputs and unsigned library/app resources for the relinking workflow described above. The corresponding library source archive is a separate, hash-identified download. Keep the two unpacked paths alongside each other:

  Public-Relink-Kit/
  Source/Channelix-VLCKit-4.0.0-a24-patched-source.tar.gz

F. Provenance and privacy of build metadata
The 26 application link inputs and the embedded framework are preserved exactly. Some compiled objects, Swift metadata and executables retain original technical compiler paths. Regenerable linker file lists and dependency files are omitted from this package; relink.py generates them on your computer when needed. Text reports use package-relative references. No private signing key, provisioning profile, user playlist, or playlist credentials are supplied.

KIT-CONTENTS.sha256 lists the distributed files. Verify with `shasum -a 256 -c KIT-CONTENTS.sha256` from this folder before running any script. relink.py validates each of the 26 original application inputs again.
