# MacIPChecker **Repository Path**: yylmzxc/mac-ipchecker ## Basic Information - **Project Name**: MacIPChecker - **Description**: MacIPCheckerMacIPChecker - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: ios - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-26 - **Last Updated**: 2025-10-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 测试demo网络查看 ## 项目概述 这是一个多平台应用程序,用于显示设备上所有活跃网络接口的IPv4地址信息。应用提供了简单直观的界面,让用户可以轻松查看和刷新设备的网络信息。 **跨平台支持**: - iOS设备和模拟器 - Mac Catalyst (My Mac - Designed for iPad) ## 功能特点 - 显示设备上所有活跃网络接口的IPv4地址 - 提供刷新按钮,用于实时更新IP地址信息 - 中文界面显示 - 自定义应用图标 - 支持iOS设备、模拟器和Mac Catalyst平台 ## 技术栈 - 语言:Objective-C - 框架:UIKit (iOS SDK, Mac Catalyst) - 开发工具:Xcode ## 安装与使用 ### iOS版本 1. 克隆仓库: ```bash git clone https://github.com/YYLMZXC/mac-ipchecker.git ``` 2. 使用Xcode打开项目文件 `mac-ipchecker.xcodeproj` 3. 选择目标设备(iPhone/iPad模拟器或真实设备) 4. 点击运行按钮编译并安装应用 ### Mac Catalyst版本 #### 方法1:使用自动化构建脚本 1. 确保脚本具有执行权限: ```bash chmod +x build_mac_catalyst.sh ``` 2. 运行构建脚本: ```bash ./build_mac_catalyst.sh ``` 3. 构建完成后,应用将生成在 `./MacOS` 目录中 #### 方法2:使用Xcode直接构建 1. 使用Xcode打开项目文件 `mac-ipchecker.xcodeproj` 2. 选择目标设备为 "My Mac (Designed for iPad)" 3. 点击运行按钮编译并运行应用 ## 项目结构 ``` ├── mac-ipchecker.xcodeproj/ # Xcode项目文件 ├── mac-ipchecker/ # 主要源代码目录 │ ├── AppDelegate.m/.h # 应用程序委托 │ ├── SceneDelegate.m/.h # 场景委托 │ ├── ViewController.m/.h # 主视图控制器 │ ├── Assets.xcassets/ # 资源文件(包含自定义图标) │ │ └── AppIcon.appiconset/ # 应用图标目录 │ ├── Base.lproj/ # 界面文件 │ │ ├── Main.storyboard # 主界面 │ │ └── LaunchScreen.storyboard # 启动界面 │ └── Info.plist # 应用配置文件 ├── build_and_package.sh # iOS自动化构建和打包脚本 ├── build_mac_catalyst.sh # Mac Catalyst自动化构建脚本 └── README.md # 项目说明文档 ``` ## 核心功能实现 ### IP地址获取 应用通过使用系统的`getifaddrs`和`arpa/inet.h`库来获取网络接口信息。主要实现在`ViewController.m`中的`getLocalIPAddress`方法,该方法遍历所有网络接口并收集IPv4地址信息。 ```objective-c - (NSString *)getLocalIPAddress { NSMutableString *addresses = [NSMutableString string]; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; // 获取所有网络接口 success = getifaddrs(&interfaces); if (success == 0) { temp_addr = interfaces; // 遍历所有网络接口 while (temp_addr != NULL) { // 检查是否为IPv4地址 if (temp_addr->ifa_addr->sa_family == AF_INET) { // 跳过回环接口 if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"lo0"]) { temp_addr = temp_addr->ifa_next; continue; } // 获取IP地址字符串 char address[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr), address, INET_ADDRSTRLEN); // 添加到结果字符串 [addresses appendFormat:@"%@: %s\n", [NSString stringWithUTF8String:temp_addr->ifa_name], address]; } temp_addr = temp_addr->ifa_next; } } // 释放内存 freeifaddrs(interfaces); return addresses; } ``` ## Mac Catalyst构建说明 ### 自动化构建脚本(build_mac_catalyst.sh) 项目根目录中包含一个专门用于Mac Catalyst构建的自动化脚本`build_mac_catalyst.sh`。 #### 使用方法 1. 确保脚本具有执行权限: ```bash chmod +x build_mac_catalyst.sh ``` 2. 运行脚本: ```bash ./build_mac_catalyst.sh ``` #### 脚本功能 执行脚本后,它会自动完成以下操作: 1. 清理之前的Mac构建产物 2. 使用`xcodebuild`构建Mac Catalyst版本 3. 在当前项目目录创建`MacOS`文件夹 4. 将构建生成的`.app`文件复制到`MacOS`目录 5. 创建应用别名,方便用户识别Mac Catalyst版本 6. 设置正确的文件权限 #### 输出文件位置 执行成功后,您可以在以下位置找到生成的文件: - 应用文件:`./MacOS/mac-ipchecker.app` - 应用别名:`./MacOS/mac-ipchecker-MacCatalyst.app`(指向主应用的符号链接) ## iOS应用打包 ### 标准Xcode构建和安装流程 在Xcode中构建和安装iOS应用的完整流程: 1. **准备工作**: - 确保Xcode已安装并更新到最新版本 - 在Mac上安装最新的iOS SDK - 在Xcode中添加Apple开发者账号(如需要在真机上测试) 2. **构建应用**: - 打开Xcode项目文件 `mac-ipchecker.xcodeproj` - 在顶部工具栏选择目标设备(模拟器或真机) - 点击构建按钮(或使用快捷键Cmd+B)编译应用 3. **安装到设备**: - 对于模拟器:构建完成后,应用会自动安装到所选模拟器 - 对于真机: - 确保设备已通过USB连接到Mac - 确保设备UDID已添加到开发者账号(Xcode会提示自动添加) - 点击运行按钮(或使用快捷键Cmd+R),Xcode会自动签名并安装应用到设备 ### IPA文件生成 iOS应用可以通过以下步骤生成IPA文件: 1. 在Xcode中构建应用(Cmd+B) 2. 在DerivedData目录中找到生成的.app文件 3. 将.app文件放入Payload目录并压缩为.ipa文件 生成的IPA文件可以在`~/Desktop/IPA/`目录中找到。 ### .app文件位置 构建后的.app文件位置: - iOS模拟器版本:`~/Library/Developer/Xcode/DerivedData/mac-ipchecker-*/Build/Products/Debug-iphonesimulator/mac-ipchecker.app` - iOS设备版本:`~/Library/Developer/Xcode/DerivedData/mac-ipchecker-*/Build/Products/Debug-iphoneos/mac-ipchecker.app` - Mac Catalyst版本:`~/Library/Developer/Xcode/DerivedData/mac-ipchecker-*/Build/Products/Debug-maccatalyst/mac-ipchecker.app` ## 自动化构建和打包脚本 ### iOS构建脚本(build_and_package.sh) 项目根目录中包含一个名为`build_and_package.sh`的自动化脚本,可以一键完成iOS应用的构建和打包过程。 #### 使用方法 1. 确保脚本具有执行权限: ```bash chmod +x build_and_package.sh ``` 2. 运行脚本: ```bash ./build_and_package.sh ``` #### 脚本功能 执行脚本后,它会自动完成以下操作: 1. 清理之前的构建产物 2. 创建必要的目录结构 3. 使用`xcodebuild`构建项目 4. 在当前项目目录创建`iPhone`文件夹 5. 将构建生成的`.app`文件复制到`iPhone`目录 6. 创建Payload目录并准备打包文件 7. 生成`.ipa`文件并复制到`iPhone`目录 #### 输出文件位置 执行成功后,您可以在以下位置找到生成的文件: - `.app`文件:`./iPhone/mac-ipchecker.app` - `.ipa`文件:`./iPhone/mac-ipchecker.ipa` ## 脱离Xcode生成IPA文件 虽然Xcode是官方推荐的开发工具,但您也可以使用其他方法脱离Xcode生成iOS IPA文件。 ### 使用命令行工具 #### 方法1:使用xcodebuild命令 ```bash # 设置必要的环境变量 TEAM_ID="LL52374UX3" # 从项目配置中获取的开发团队ID BUNDLE_ID="companyName-mac-ipchecker.mac-ipchecker" # 项目的包标识符 # 清理并构建项目 xcodebuild clean build -project mac-ipchecker.xcodeproj -scheme mac-ipchecker -configuration Release -sdk iphoneos -archivePath ./Build/mac-ipchecker.xcarchive CODE_SIGN_IDENTITY="iPhone Developer" PROVISIONING_PROFILE_SPECIFIER="" DEVELOPMENT_TEAM="$TEAM_ID" # 导出为IPA xcodebuild -exportArchive -archivePath ./Build/mac-ipchecker.xcarchive -exportOptionsPlist exportOptions.plist -exportPath ./Build ``` 需要创建一个`exportOptions.plist`文件: ```xml method development teamID LL52374UX3 signingStyle automatic ``` #### 方法2:手动创建IPA ```bash # 构建应用 xcodebuild -project mac-ipchecker.xcodeproj -scheme mac-ipchecker -configuration Release -sdk iphoneos build CODE_SIGN_IDENTITY="iPhone Developer" DEVELOPMENT_TEAM="$TEAM_ID" # 创建Payload目录并复制.app文件 mkdir -p Payload cp -R ~/Library/Developer/Xcode/DerivedData/mac-ipchecker-*/Build/Products/Release-iphoneos/mac-ipchecker.app Payload/ # 压缩成IPA zip -r mac-ipchecker.ipa Payload/ ``` ### 使用其他IDE 虽然Objective-C的iOS开发通常使用Xcode,但您可以使用以下工具辅助开发: 1. **AppCode**:JetBrains提供的Objective-C IDE,支持iOS开发,但仍需依赖Xcode命令行工具和SDK 2. **Visual Studio Code**: - 安装Objective-C插件 - 使用命令行工具进行构建和打包 - 示例配置: ```json { "version": "2.0.0", "tasks": [ { "label": "build ios", "type": "shell", "command": "xcodebuild -project mac-ipchecker.xcodeproj -scheme mac-ipchecker -configuration Release -sdk iphoneos build" } ] } ``` 3. **命令行工具链**: - 确保已安装Xcode命令行工具:`xcode-select --install` - 使用Makefile自动化构建过程 ### 脱离Xcode的注意事项 1. **必须依赖iOS SDK**:无论使用什么IDE,仍然需要安装iOS SDK(通常通过Xcode安装) 2. **签名要求**:在真机构建时,仍需有效的开发者账号和签名配置 3. **Xcode命令行工具**:许多替代方法实际上仍然在底层使用Xcode的命令行工具 4. **调试限制**:脱离Xcode可能会限制某些调试功能和模拟器支持 ## 证书和签名说明 ### 自动签名模式说明 项目当前使用Xcode的自动签名功能,关于证书和描述文件的说明: - **模拟器构建**:在模拟器上运行时,Xcode不需要实际的证书和描述文件 - **Mac Catalyst构建**:Mac Catalyst应用使用与iOS相同的签名机制 - **真机构建**:对于真机构建,Xcode会在需要时自动创建和管理证书和描述文件 ### 自动签名工作原理 在自动签名模式下: 1. **无显式描述文件**:项目文件夹中不会包含描述文件 2. **自动生成**:当连接真机并尝试运行时,Xcode会: - 检查是否有可用的开发者账号 - 如需要,自动创建开发证书 - 自动创建和配置描述文件 - 自动下载描述文件到本地 3. **描述文件存储位置**: ``` ~/Library/MobileDevice/Provisioning Profiles/ ``` ### 查看签名配置 项目的签名配置如下: - **签名方式**:自动签名(CODE_SIGN_STYLE = Automatic) - **签名身份**:Apple Development - **开发团队ID**:LL52374UX3 - **签名要求**:已启用(CODE_SIGNING_REQUIRED = YES) ### 真机运行准备 要在真实设备上运行应用,需要: 1. 在Xcode中添加有效的Apple开发者账号: - 打开Xcode偏好设置(Cmd+,) - 选择"Accounts"选项卡 - 点击"+"按钮添加账号 2. 确保设备已添加到开发者账号: - 首次连接设备时,Xcode会提示注册设备 - 或手动在Apple开发者网站添加设备UDID ## 注意事项 - 本应用需要网络访问权限 - 在真实设备上运行需要有效的开发者账号 - 显示的IP地址可能因网络环境变化而不同 - 自动签名模式下,无需手动管理证书和描述文件 - Mac Catalyst版本可以在macOS上直接运行,无需额外配置 ## 开发环境 - macOS - Xcode 14.x 或更高版本 - iOS SDK 16.0 或更高版本 - macOS 13.0 (Ventura) 或更高版本(运行Mac Catalyst应用) ## 许可证 本项目仅供学习和测试使用。