diff --git a/Natives/external/Apple/deviceids.h b/Natives/external/Apple/deviceids.h new file mode 100644 index 00000000..7b997c5c --- /dev/null +++ b/Natives/external/Apple/deviceids.h @@ -0,0 +1,111 @@ +// +// DeviceIdentifiers.h +// Labradorite +// +// Created by Eilionoir Tunnicliff on 9/26/22. +// + +#import + +NSDictionary *deviceid_dict = @{ + @"iPhone8,1" : @"iPhone 6s", + @"iPhone8,2" : @"iPhone 6s Plus", + @"iPhone8,4" : @"iPhone SE (1st generation)", + @"iPhone9,1" : @"iPhone 7", + @"iPhone9,2" : @"iPhone 7 Plus", + @"iPhone9,3" : @"iPhone 7", + @"iPhone9,4" : @"iPhone 7 Plus", + @"iPhone10,1" : @"iPhone 8", + @"iPhone10,2" : @"iPhone 8 Plus", + @"iPhone10,3" : @"iPhone X", + @"iPhone10,4" : @"iPhone 8", + @"iPhone10,5" : @"iPhone 8 Plus", + @"iPhone10,6" : @"iPhone X", + @"iPhone11,2" : @"iPhone XS", + @"iPhone11,4" : @"iPhone XS Max", + @"iPhone11,6" : @"iPhone XS Max", + @"iPhone11,8" : @"iPhone XR", + @"iPhone12,1" : @"iPhone 11", + @"iPhone12,3" : @"iPhone 11 Pro", + @"iPhone12,5" : @"iPhone 11 Pro Max", + @"iPhone12,8" : @"iPhone SE (2nd generation)", + @"iPhone13,1" : @"iPhone 12 mini", + @"iPhone13,2" : @"iPhone 12", + @"iPhone13,3" : @"iPhone 12 Pro", + @"iPhone13,4" : @"iPhone 12 Pro Max", + @"iPhone14,2" : @"iPhone 13 Pro", + @"iPhone14,3" : @"iPhone 13 Pro Max", + @"iPhone14,4" : @"iPhone 13 mini", + @"iPhone14,5" : @"iPhone 13", + @"iPhone14,6" : @"iPhone SE (3rd generation)", + @"iPhone14,7" : @"iPhone 14", + @"iPhone14,8" : @"iPhone 14 Plus", + @"iPhone15,2" : @"iPhone 14 Pro", + @"iPhone15,3" : @"iPhone 14 Pro Max", + + @"iPad5,1" : @"iPad mini (4th generation)", + @"iPad5,2" : @"iPad mini (4th generation)", + @"iPad5,3" : @"iPad Air (2nd generation)", + @"iPad5,4" : @"iPad Air (2nd generation)", + @"iPad6,3" : @"iPad Pro (9.7-inch)", + @"iPad6,4" : @"iPad Pro (9.7-inch)", + @"iPad6,7" : @"iPad Pro (12.9-inch, 1st generation)", + @"iPad6,8" : @"iPad Pro (12.9-inch, 1st generation)", + @"iPad6,11" : @"iPad (5th generation)", + @"iPad6,12" : @"iPad (5th generation)", + @"iPad7,1" : @"iPad Pro (12.9-inch, 2nd generation)", + @"iPad7,2" : @"iPad Pro (12.9-inch, 2nd generation)", + @"iPad7,3" : @"iPad Pro (10.5-inch)", + @"iPad7,4" : @"iPad Pro (10.5-inch)", + @"iPad7,5" : @"iPad (6th generation)", + @"iPad7,6" : @"iPad (6th generation)", + @"iPad7,11" : @"iPad (7th generation)", + @"iPad7,12" : @"iPad (7th generation)", + @"iPad8,1" : @"iPad Pro (11-inch, 1st generation)", + @"iPad8,2" : @"iPad Pro (11-inch, 1st generation)", + @"iPad8,3" : @"iPad Pro (11-inch, 1st generation)", + @"iPad8,4" : @"iPad Pro (11-inch, 1st generation)", + @"iPad8,5" : @"iPad Pro (12.9-inch, 3rd generation)", + @"iPad8,6" : @"iPad Pro (12.9-inch, 3rd generation)", + @"iPad8,7" : @"iPad Pro (12.9-inch, 3rd generation)", + @"iPad8,8" : @"iPad Pro (12.9-inch, 3rd generation)", + @"iPad8,9" : @"iPad Pro (11-inch, 2nd generation)", + @"iPad8,10" : @"iPad Pro (11-inch, 2nd generation)", + @"iPad8,11" : @"iPad Pro (12.9-inch, 4th generation)", + @"iPad8,12" : @"iPad Pro (12.9-inch, 4th generation)", + @"iPad11,1" : @"iPad mini (5th generation)", + @"iPad11,2" : @"iPad mini (5th generation)", + @"iPad11,3" : @"iPad Air (3rd generation)", + @"iPad11,4" : @"iPad Air (3rd generation)", + @"iPad11,6" : @"iPad (8th generation)", + @"iPad11,7" : @"iPad (8th generation)", + @"iPad12,1" : @"iPad (9th generation)", + @"iPad12,2" : @"iPad (9th generation)", + @"iPad13,1" : @"iPad Air (4th generation)", + @"iPad13,2" : @"iPad Air (4th generation)", + @"iPad13,4" : @"iPad Pro (11-inch, 3rd generation)", + @"iPad13,5" : @"iPad Pro (11-inch, 3rd generation)", + @"iPad13,6" : @"iPad Pro (11-inch, 3rd generation)", + @"iPad13,7" : @"iPad Pro (11-inch, 3rd generation)", + @"iPad13,8" : @"iPad Pro (12.9-inch, 5th generation)", + @"iPad13,9" : @"iPad Pro (12.9-inch, 5th generation)", + @"iPad13,10" : @"iPad Pro (12.9-inch, 5th generation)", + @"iPad13,11" : @"iPad Pro (12.9-inch, 5th generation)", + @"iPad13,16" : @"iPad Air (5th generation)", + @"iPad13,17" : @"iPad Air (5th generation)", + @"iPad13,18" : @"iPad (10th generation)", + @"iPad13,19" : @"iPad (10th generation)", + @"iPad14,1" : @"iPad mini (6th generation)", + @"iPad14,2" : @"iPad mini (6th generation)", + @"iPad14,3" : @"iPad Pro (11-inch, 4th generation)", + @"iPad14,4" : @"iPad Pro (11-inch, 4th generation)", + @"iPad14,5" : @"iPad Pro (12.9-inch, 6th generation)", + @"iPad14,6" : @"iPad Pro (12.9-inch, 6th generation)", + + @"iPod9,1" : @"iPod touch (7th generation)", + + @"AppleTV5,3" : @"Apple TV HD (4th generation)", + @"AppleTV6,2" : @"Apple TV 4K (1st generation)", + @"AppleTV11,1" : @"Apple TV 4K (2nd generation)", + @"AppleTV14,1" : @"Apple TV 4K (3rd generation)" +}; \ No newline at end of file diff --git a/Natives/main.m b/Natives/main.m index ab9d0121..4013a869 100644 --- a/Natives/main.m +++ b/Natives/main.m @@ -23,6 +23,7 @@ #include "JavaLauncher.h" #include "utils.h" #include "codesign.h" +#include "deviceids.h" #define CS_PLATFORM_BINARY 0x4000000 #define PT_TRACE_ME 0 @@ -99,18 +100,25 @@ void init_checkForJailbreak() { } void init_logDeviceAndVer(char *argument) { - // Hardware + Software - struct utsname systemInfo; - uname(&systemInfo); - const char *deviceHardware = systemInfo.machine; - const char *deviceSoftware = [[UIDevice currentDevice] systemVersion].UTF8String; - // PojavLauncher version NSLog(@"[Pre-Init] PojavLauncher version: %s-%s, branch: %s, commit: %s", [NSBundle.mainBundle.infoDictionary[@"CFBundleShortVersionString"] UTF8String], CONFIG_TYPE, CONFIG_BRANCH, CONFIG_COMMIT); - setenv("POJAV_DETECTEDHW", deviceHardware, 1); + // Hardware + Software + struct utsname systemInfo; + uname(&systemInfo); + NSString *deviceHardware = [NSString stringWithFormat:@"%s", systemInfo.machine]; + const char *deviceSoftware = [[UIDevice currentDevice] systemVersion].UTF8String; + + NSString *friendlyName = [deviceid_dict objectForKey:deviceHardware]; + if(friendlyName != nil) { + setenv("POJAV_DETECTEDHW", friendlyName.UTF8String, 1); + } else { + setenv("POJAV_DETECTEDHW", deviceHardware.UTF8String, 1); + NSLog(@"[Pre-Init] Device model not recognized. Use appledb.dev to identify it!"); + } + setenv("POJAV_DETECTEDSW", deviceSoftware, 1); NSString *tsPath = [NSString stringWithFormat:@"%s/../_TrollStore", getenv("BUNDLE_PATH")]; @@ -140,7 +148,11 @@ void init_logDeviceAndVer(char *argument) { void init_migrateDirIfNecessary() { NSString *oldDir = @"/usr/share/pojavlauncher"; if ([fm fileExistsAtPath:oldDir]) { - NSString *newDir = [NSString stringWithFormat:@"%s/Documents", getenv("HOME")]; + if ([@(getenv("HOME")) isEqualToString:@"/var/mobile"]) { + NSString *newDir = [NSString stringWithFormat:@"%s/Documents/PojavLauncher", getenv("HOME")]; + } else { + NSString *newDir = [NSString stringWithFormat:@"%s/Documents", getenv("HOME")]; + } [fm moveItemAtPath:oldDir toPath:newDir error:nil]; [fm removeItemAtPath:oldDir error:nil]; } diff --git a/Natives/utils.h b/Natives/utils.h index 4f0b0a8b..a4d7125b 100644 --- a/Natives/utils.h +++ b/Natives/utils.h @@ -20,6 +20,9 @@ # define CONFIG_COMMIT "unspecified" #endif +// Remove date + time from NSLog, unneeded +#define NSLog(...) {} + // Control button actions #define ACTION_DOWN 0 #define ACTION_UP 1