Приложение Windows 10 UWP закрывается / падает сразу после заставки - PullRequest
1 голос
/ 19 марта 2019

Я привык кодировать программы Windows, используя .net Framework. Тем не менее, поскольку мне нужно реализовать соединение Bluetooth с низким энергопотреблением в моей программе, я ознакомился с UWP и разработал приложение UWP для подключения к серверу GATT и чтения характеристик. Приложение более или менее основано на этом примере с Windows BluetoothLE , но я удалил неиспользуемые функции и избавился от концепции фрейма. Я могу скомпилировать и запустить это приложение, используя Visual Studio Community 2017 (15.9.9) на моем ноутбуке (Windows 10.0.17763). Но я не могу запустить это приложение на других ноутбуках с Windows 10.0.17134, после того как я создал пакет и установил его там (до установки был включен режим разработчика). Приложение доступно в меню «Пуск» и может быть запущено, но заставку я вижу только в течение нескольких секунд, а затем приложение исчезает. Интересно, что мне удалось упаковать, установить и запустить оригинальный пример BluetoothLE, а также очень простое приложение с одной кнопкой на основе шаблона UWP на ноутбуке 10.0.17134. Таким образом, настройки системы (-ов) и процесс упаковки, по-видимому, являются правильными для загрузки приложения на другой ноутбук.

Согласно моим исследованиям, проблема может быть вызвана свойствами XAML в MainPage.xaml, которые не могут быть обработаны в более низкой версии Windows. MainPage.xaml:

<Page
x:Class="Bluetooth_UWP.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Bluetooth_UWP"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<Grid RequestedTheme="Default"  ScrollViewer.HorizontalScrollBarVisibility="Auto" Height="535" BorderBrush="DarkBlue" BorderThickness="3" Width="1050" VerticalAlignment="Stretch"  >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0*"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="80" />
        <RowDefinition Height="300" />
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button Grid.Row="0" x:Name="button_start" Content="Bluetooth Start" HorizontalAlignment="Left" Margin="13,0,0,0" VerticalAlignment="Center" Click="Button_Click" Height="33" Width="114" Grid.ColumnSpan="2"/>
    <Button Grid.Row="2" x:Name="button_send" Content="Send Hex" HorizontalAlignment="Left" Margin="826,92.6,0,0" VerticalAlignment="Top" Height="47" Width="211" Click="Button_send_Click" Grid.ColumnSpan="2"/>
    <TextBox Grid.Row="2" x:Name="Connection_Status" HorizontalAlignment="Left" Margin="13,35.6,0,0" Text="" VerticalAlignment="Top" Height="104" Width="500" AcceptsReturn="True" InputScope="Text" IsReadOnly="True" FontFamily="Lucida Console" TextChanged="Connection_Status_TextChanged" Grid.ColumnSpan="2"/>
    <TextBox Grid.Row="2" x:Name="Bluetooth_Rec_Text" HorizontalAlignment="Left" Margin="518,35.6,0,0" Text="" VerticalAlignment="Top" Height="105" Width="303" AcceptsReturn="True" InputScope="Text" IsReadOnly="True" FontFamily="Lucida Console" TextChanged="Bluetooth_Rec_Text_TextChanged" Grid.ColumnSpan="2"/>
    <TextBox Grid.Row="2" x:Name="Bluetooth_Send_Text" HorizontalAlignment="Left" Margin="826,35.6,0,0" Text=""  VerticalAlignment="Top" Height="52" Width="211" FontFamily="Lucida Console" TextChanged="Bluetooth_Send_Text_TextChanged" Grid.ColumnSpan="2"/>
    <TextBlock Grid.Row="2" x:Name="Text_Meldungen" HorizontalAlignment="Left" Margin="13,13.6,0,0" Text="Bluetooth-Meldungen:" TextWrapping="Wrap" VerticalAlignment="Top" Height="19" Width="140" Grid.ColumnSpan="2"/>
    <TextBlock Grid.Row="2" x:Name="Text_Empfangsdaten" HorizontalAlignment="Left" Margin="518,13.6,0,0" Text="Empfangsdaten:" TextWrapping="Wrap" VerticalAlignment="Top" Height="19" Width="99" Grid.ColumnSpan="2"/>
    <Image Grid.Row="1" x:Name="Sensorvisualisierung" HorizontalAlignment="Left" Height="64" Margin="13,35.6,0,0" VerticalAlignment="Top" Width="952" Stretch="None" Grid.ColumnSpan="2"/>
    <TextBlock Grid.Row="1" HorizontalAlignment="Left" Margin="13,13.6,0,0" Text="Biegung:" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
    <Image Grid.Row="1" x:Name="Sensorvisualisierung_Torsion"  HorizontalAlignment="Left" Height="25" Margin="13,135.6,0,0" VerticalAlignment="Top" Width="952" Stretch="None" Grid.ColumnSpan="2"/>
    <TextBlock Grid.Row="1" HorizontalAlignment="Left" Margin="13,113.6,0,0" Text="Torsion" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
    <CheckBox Grid.Row="1" x:Name="checkBox_Zahlen"  Content="Zahlen einblenden" HorizontalAlignment="Left" Margin="13,183.6,0,0" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
    <TextBlock Grid.Row="1" x:Name="Text_Werte_Biegung_1" HorizontalAlignment="Left" Margin="11,46.6,0,0" Text="XX" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="11" FontFamily="Lucida Console" Width="979" Grid.ColumnSpan="2"/>
    <TextBlock Grid.Row="1" x:Name="Text_Werte_Biegung_2" HorizontalAlignment="Left" Margin="11,78.6,0,0" Text="XX" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="11" FontFamily="Lucida Console" Width="979" Grid.ColumnSpan="2"/>
    <TextBlock Grid.Row="1" x:Name="Text_Werte_Torsion" HorizontalAlignment="Left" Margin="11,145.6,0,0" Text="XX" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="11" FontFamily="Lucida Console" Width="979" Grid.ColumnSpan="2"/>
    <ComboBox Grid.Row="0" x:Name="Sensorlaenge_List" ItemsSource="{x:Bind Sensorlaenge_Wahl}" DisplayMemberPath="" HorizontalAlignment="Left" Margin="150,0,0,0" Width="190" VerticalAlignment="Center" Visibility="Visible" SelectedIndex="0" SelectionChanged="Sensorlaenge_List_SelectionChanged" Grid.ColumnSpan="2"/>
    <RadioButton Grid.Row="0" x:Name="RadioButton_BT" Content="Bluetooth" HorizontalAlignment="Left" Margin="480,-32,0,0" VerticalAlignment="Center" Grid.ColumnSpan="2" Checked="RadioButton_Uebertragung_Checked" GroupName="RadioButton_Uebertragung" IsChecked="True"/>
    <RadioButton Grid.Row="0" x:Name="RadioButton_USB" Content="USB" HorizontalAlignment="Left" Margin="480,32,0,0" VerticalAlignment="Center" Grid.ColumnSpan="2" Checked="RadioButton_Uebertragung_Checked" GroupName="RadioButton_Uebertragung"/>
    <AppBarToggleButton Grid.Row="0" x:Name="Button_Messung_Start" HorizontalAlignment="Left" Label="Starte Messung" Margin="690,0,0,0" VerticalAlignment="Center" Width="130" Icon="Play"  Click="Button_Messung_Start_Click" Grid.ColumnSpan="2"/>
    <Button Grid.Row="0" x:Name="Button_Reset" Content="Kalibrierung" Grid.ColumnSpan="2" HorizontalAlignment="Left" Margin="360,0,0,0" VerticalAlignment="Center" Width="100" Click="Button_Reset_Click"/>
    <TextBox Grid.Row="0" x:Name="Messfrequenz" HorizontalAlignment="Left" Margin="600,40,0,0" Text="10" VerticalAlignment="Center" Grid.ColumnSpan="2" InputScope="Number" Width="64" TextChanged="Messfrequenz_TextChanged"/>
    <TextBlock Grid.ColumnSpan="2" x:Name="Text_Messfrequenz" HorizontalAlignment="Left" Margin="600,-30,0,0" Text="Messfrequenz:" TextWrapping="Wrap" VerticalAlignment="Center"/>
    <TextBlock Grid.ColumnSpan="2" x:Name="Text_Hz" HorizontalAlignment="Left" Margin="670,40,0,0" Text="Hz" TextWrapping="Wrap" VerticalAlignment="Center"/>
    <TextBlock Grid.ColumnSpan="2" x:Name="TexT_Bewegungsart" HorizontalAlignment="Left" Margin="10,235,0,0" Grid.Row="1" Text="Bewegung" TextWrapping="Wrap" VerticalAlignment="Top"/>

</Grid>

Есть ли неправильное утверждение или что-то упущено?

Кроме того, я пробовал различные изменения в Package.appxmanifest, например, уменьшение количества активов-логотипов до минимума, что не помогает. Обратите внимание, что включена функция Bluetooth (я также попробовал bluetooth.genericAttributeProfile, который не работал и теперь закомментирован). (Часть последовательного порта была другим тестом, не связанным с этой проблемой.)

    <?xml version="1.0" encoding="utf-8"?>
   <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
  <Identity Name="c6fb0f30-b3d7-4391-bf30-ee483792dc9c" Publisher="CN=Company" Version="0.1.40.0" />
  <mp:PhoneIdentity PhoneProductId="c6fb0f30-b3d7-4391-bf30-ee483792dc9c" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
  <Properties>
    <DisplayName>Bluetooth UWP Testsoftware</DisplayName>
    <PublisherDisplayName>Company</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.15063.0" MaxVersionTested="10.0.17763.0" />
  </Dependencies>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="Bluetooth_UWP.App">
      <uap:VisualElements DisplayName="Bluetooth UWP App" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="Bluetooth UWP Software" BackgroundColor="transparent">
        <uap:SplashScreen Image="Assets\SplashScreen.png" BackgroundColor="#ffffff" />
        <uap:InitialRotationPreference>
          <uap:Rotation Preference="landscape" />
          <uap:Rotation Preference="landscapeFlipped" />
        </uap:InitialRotationPreference>
      </uap:VisualElements>
    </Application>
  </Applications>
  <Capabilities>
    <Capability Name="internetClient" />
    <!--<DeviceCapability Name="serialcommunication">
      <Device Id="any">
        <Function Type="name:serialPort" />
      </Device>
    </DeviceCapability>
    <DeviceCapability Name="bluetooth.genericAttributeProfile">
      <Device Id="any">
        <Function Type="name:genericAttribute" />
      </Device>
    </DeviceCapability>-->
    <DeviceCapability Name="bluetooth" />
  </Capabilities>
</Package>

В свойствах проекта минимальная версия Windows установлена ​​на 10.0.15063. Может быть заметно, что - после попытки tp pack различных вариантов проекта для решения проблемы - я иногда также получаю ошибку «Полезные данные содержат два или более файлов». Кажется, есть множество причин. Тем не менее, в качестве (возможно, немного ошибочного) обходного пути я изменяю имя удостоверения в манифесте, и тогда оно работает. Я решил решить эту проблему позже, но, поскольку она также может быть связана с основной проблемой, я предпочитаю упомянуть об этом и здесь. Раньше я использовал пакет nuget «Win2D.uwp» для некоторой визуализации, но так как я думал, что это может быть причиной одной или обеих проблем, я исключил его из своего кода и проекта и удалил кэш nuget. К сожалению, это тоже не помогло ...

Короче говоря: если у кого-нибудь есть идея, я был бы очень благодарен. Может быть, это один из этих случаев «о, боже, кажется, вы удалили это важное заявление». Спасибо за вашу помощь!

1 Ответ

1 голос
/ 19 марта 2019

Добавьте немного аналитики в ваше приложение и проверьте его. Например, https://AppCenter.ms. Затем вы можете проверить журнал аварий. Также вы можете записать журнал сбоев в файл и проверить его, если у вас есть физический доступ к устройству.

...