Solar-Integration und dev_watch-Geräte zusammenführen

solar-integration (aus dem separaten VanAligneiOS-Repo) und dev_watch
haben unabhängige Git-Historien, decken aber überlappende und sich
ergänzende Funktionen ab. Übernommen aus solar-integration: Votronic-
Solar-ESP-Anbindung samt Geräterolle, die Live-Activity/Widget-Extension
fürs Sperrbildschirm/Dynamic-Island/CarPlay, das Querformat-Layout für
Libelle/Fahrzeug-Ansicht und Ausrichtungs-Assistent, sowie die
mehreren Fahrzeuggrafik-Stile (Vanster/California). Beibehalten aus
dev_watch: alle zusätzlichen Geräteprotokolle (Daly-/JBD-BMS, Alpicool-
Kühlbox, WattCycle, Victron), die dort zwischenzeitlich entstanden.

Die Xcode-Projektdatei wurde von Hand um die neue Widget-Extension samt
SharedActivity-Gruppe erweitert (Datei-synchronisierte Gruppen, kein
App-Group-Entitlement nötig). Build für App, Watch und Widget-Extension
geprüft (Debug und Release).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
fototeddy
2026-09-06 21:00:14 +02:00
co-authored by Claude Sonnet 5
parent 812874baef
commit e9b9c5bcd5
42 changed files with 2592 additions and 214 deletions
+189
View File
@@ -9,6 +9,11 @@
/* Begin PBXBuildFile section */
AA0000000000000000000027 /* CamperMonitorWatch.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000016 /* CamperMonitorWatch.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
AA0000000000000000000042 /* CamperMonitorComplication.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000032 /* CamperMonitorComplication.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
AA0000000000000000000046 /* ActivityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000053 /* ActivityKit.framework */; };
AA0000000000000000000047 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000052 /* SwiftUI.framework */; };
AA0000000000000000000048 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000051 /* WidgetKit.framework */; };
AA0000000000000000000049 /* ActivityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000053 /* ActivityKit.framework */; };
AA0000000000000000000050 /* VanAligneiOSWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -26,6 +31,13 @@
remoteGlobalIDString = AA0000000000000000000037;
remoteInfo = CamperMonitorComplication;
};
AA0000000000000000000063 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = AA0000000000000000000009 /* Project object */;
proxyType = 1;
remoteGlobalIDString = AA0000000000000000000062;
remoteInfo = VanAligneiOSWidgetExtension;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -51,6 +63,17 @@
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
AA0000000000000000000065 /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
AA0000000000000000000050 /* VanAligneiOSWidgetExtension.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
@@ -59,8 +82,22 @@
AA0000000000000000000030 /* CamperMonitor-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CamperMonitor-Info.plist"; sourceTree = "<group>"; };
AA0000000000000000000032 /* CamperMonitorComplication.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = CamperMonitorComplication.appex; sourceTree = BUILT_PRODUCTS_DIR; };
AA0000000000000000000045 /* CamperMonitorComplication-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CamperMonitorComplication-Info.plist"; sourceTree = "<group>"; };
AA0000000000000000000051 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
AA0000000000000000000052 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
AA0000000000000000000053 /* ActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ActivityKit.framework; path = System/Library/Frameworks/ActivityKit.framework; sourceTree = SDKROOT; };
AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = VanAligneiOSWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
AA0000000000000000000055 /* Exceptions for "VanAligneiOSWidget" folder in "VanAligneiOSWidgetExtension" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = AA0000000000000000000062 /* VanAligneiOSWidgetExtension */;
};
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
AA0000000000000000000002 /* CamperMonitor */ = {
isa = PBXFileSystemSynchronizedRootGroup;
@@ -82,6 +119,19 @@
path = CamperMonitorComplication;
sourceTree = "<group>";
};
AA0000000000000000000056 /* VanAligneiOSWidget */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
AA0000000000000000000055 /* Exceptions for "VanAligneiOSWidget" folder in "VanAligneiOSWidgetExtension" target */,
);
path = VanAligneiOSWidget;
sourceTree = "<group>";
};
AA0000000000000000000057 /* SharedActivity */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = SharedActivity;
sourceTree = "<group>";
};
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
@@ -89,6 +139,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AA0000000000000000000049 /* ActivityKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -106,6 +157,16 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
AA0000000000000000000058 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AA0000000000000000000047 /* SwiftUI.framework in Frameworks */,
AA0000000000000000000048 /* WidgetKit.framework in Frameworks */,
AA0000000000000000000046 /* ActivityKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -116,7 +177,10 @@
AA0000000000000000000017 /* CamperMonitorWatch */,
AA0000000000000000000033 /* CamperMonitorComplication */,
AA0000000000000000000018 /* Shared */,
AA0000000000000000000057 /* SharedActivity */,
AA0000000000000000000031 /* Config */,
AA0000000000000000000056 /* VanAligneiOSWidget */,
AA0000000000000000000059 /* Frameworks */,
AA0000000000000000000005 /* Products */,
);
sourceTree = "<group>";
@@ -127,10 +191,21 @@
AA0000000000000000000001 /* CamperMonitor.app */,
AA0000000000000000000016 /* CamperMonitorWatch.app */,
AA0000000000000000000032 /* CamperMonitorComplication.appex */,
AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */,
);
name = Products;
sourceTree = "<group>";
};
AA0000000000000000000059 /* Frameworks */ = {
isa = PBXGroup;
children = (
AA0000000000000000000051 /* WidgetKit.framework */,
AA0000000000000000000052 /* SwiftUI.framework */,
AA0000000000000000000053 /* ActivityKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
AA0000000000000000000031 /* Config */ = {
isa = PBXGroup;
children = (
@@ -151,15 +226,18 @@
AA0000000000000000000003 /* Frameworks */,
AA0000000000000000000008 /* Resources */,
AA0000000000000000000026 /* Embed Watch Content */,
AA0000000000000000000065 /* Embed Foundation Extensions */,
);
buildRules = (
);
dependencies = (
AA0000000000000000000029 /* PBXTargetDependency */,
AA0000000000000000000064 /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
AA0000000000000000000002 /* CamperMonitor */,
AA0000000000000000000018 /* Shared */,
AA0000000000000000000057 /* SharedActivity */,
);
name = CamperMonitor;
productName = CamperMonitor;
@@ -210,6 +288,27 @@
productReference = AA0000000000000000000032 /* CamperMonitorComplication.appex */;
productType = "com.apple.product-type.app-extension";
};
AA0000000000000000000062 /* VanAligneiOSWidgetExtension */ = {
isa = PBXNativeTarget;
buildConfigurationList = AA0000000000000000000068 /* Build configuration list for PBXNativeTarget "VanAligneiOSWidgetExtension" */;
buildPhases = (
AA0000000000000000000060 /* Sources */,
AA0000000000000000000058 /* Frameworks */,
AA0000000000000000000061 /* Resources */,
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
AA0000000000000000000056 /* VanAligneiOSWidget */,
AA0000000000000000000057 /* SharedActivity */,
);
name = VanAligneiOSWidgetExtension;
productName = VanAligneiOSWidgetExtension;
productReference = AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -229,6 +328,9 @@
AA0000000000000000000037 = {
CreatedOnToolsVersion = 26.6;
};
AA0000000000000000000062 = {
CreatedOnToolsVersion = 26.6;
};
};
};
buildConfigurationList = AA0000000000000000000010 /* Build configuration list for PBXProject "CamperMonitor" */;
@@ -249,6 +351,7 @@
AA0000000000000000000006 /* CamperMonitor */,
AA0000000000000000000022 /* CamperMonitorWatch */,
AA0000000000000000000037 /* CamperMonitorComplication */,
AA0000000000000000000062 /* VanAligneiOSWidgetExtension */,
);
};
/* End PBXProject section */
@@ -275,6 +378,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
AA0000000000000000000061 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -299,6 +409,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
AA0000000000000000000060 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -313,6 +430,11 @@
target = AA0000000000000000000037 /* CamperMonitorComplication */;
targetProxy = AA0000000000000000000043 /* PBXContainerItemProxy */;
};
AA0000000000000000000064 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AA0000000000000000000062 /* VanAligneiOSWidgetExtension */;
targetProxy = AA0000000000000000000063 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
@@ -555,6 +677,64 @@
};
name = Release;
};
AA0000000000000000000066 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 6AP73NYV5W;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = VanAligneiOSWidget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = VanAligneiOSWidget;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.VanAligneiOSWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
AA0000000000000000000067 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 6AP73NYV5W;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = VanAligneiOSWidget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = VanAligneiOSWidget;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.VanAligneiOSWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -594,6 +774,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
AA0000000000000000000068 /* Build configuration list for PBXNativeTarget "VanAligneiOSWidgetExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
AA0000000000000000000066 /* Debug */,
AA0000000000000000000067 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = AA0000000000000000000009 /* Project object */;