【问题标题】:Xamarin Forms - PCL project The app could not be startedXamarin Forms - PCL 项目应用程序无法启动
【发布时间】:2016-06-23 22:45:46
【问题描述】:

我正在使用 Visual Studio 2015 并创建了一个基于 PCL 的项目。这个应用程序所做的只是显示一个启动屏幕,然后导航到下一页。我无法让它在 Android 上运行。这是splash screen的链接

我得到的错误:

应用程序无法启动。确保应用程序具有 已安装到目标设备并具有可启动的活动 (MainLauncher = true)。

此外,检查 Build->Configuration Manager 以确保这一点 项目为此配置设置为 Deploy。

我已关注this link 并尝试了那里的所有解决方案,但结果仍然相同

有什么技巧可以解决这个问题吗?

编辑

Android 清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Splash.Splash" android:installLocation="auto" android:versionCode="1" android:versionName="1.0">
  <!--suppress UsesMinSdkAttributes-->
  <uses-sdk android:minSdkVersion="15" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <application android:icon="@drawable/icon-3" android:name="mono.android.app.Application" android:allowBackup="true" android:label="Splash.Splash" android:debuggable="true">
    <activity android:label="Splash screen" android:name="md5ac585b47313c1dc414c7b7a18f93e457.MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity android:icon="@drawable/icon-3" android:noHistory="true" android:theme="@style/Theme.Splash" android:name="md5ac585b47313c1dc414c7b7a18f93e457.Splash">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <provider android:name="mono.MonoRuntimeProvider" android:exported="false" android:initOrder="2147483647" android:authorities="Splash.Splash.mono.MonoRuntimeProvider.__mono_init__" />
    <!--suppress ExportedReceiver-->
    <receiver android:name="mono.android.Seppuku">
      <intent-filter>
        <action android:name="mono.android.intent.action.SEPPUKU" />
        <category android:name="mono.android.intent.category.SEPPUKU.STM.STM" />
      </intent-filter>
    </receiver>
  </application>
</manifest>

编辑

下面的新清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Super.Super" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="15" />
    <application android:icon="@drawable/stmicon-3"></application>
</manifest>

【问题讨论】:

  • 确保之前的应用程序已卸载。使用 adb uninstall &lt;package name&gt; 手动将其从您的设备中删除。
  • 我也做了这个,还是没有效果
  • 你能发布你最终的 AndroidManifest.xml 吗?它会在你的 obj/android 文件夹中。
  • 将其添加到问题中
  • 尝试从其中一项活动中删除 MainLauncher。你有两个。

标签: android visual-studio xamarin xamarin.forms


【解决方案1】:

已编辑:您的问题不止一个问题。我称呼其中两个,但最后一个是图标名称。

Android 资源的名称中不能包含“-”字符。 所以这是更正:

<application android:icon="@drawable/stmicon3"></application>

初步回答:

让两个活动具有相同的意图过滤器来启动是错误的。

所以,首先在你的Manifest,完全删除两个活动标签。

为了帮助调试这个。请将您的清单更改为此(是的,我们也忽略了Provider)

所以你的最终清单将是:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.yournamespace.courier">
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application android:label="yournamespace"> 
    </application>
</manifest>

在此之后,要将SplashActivity 设置为MainLauncher:

[Activity(MainLauncher = true,
        NoHistory = true)]
public class SplashActivity : AppCompatActivity

最后是 MainActivity:

 [Activity(Icon = "@drawable/icon")]
public class MainActivity : FormsAppCompatActivity

【讨论】:

  • 我在启动画面上做了这个,因为那是要显示的主屏幕
  • 我已经更新了原始问题中的清单并尝试了相同的方法。它仍然无法正常工作。我遇到了同样的错误。负载是如何发生的?即使在 App : Application 类中,我也没有在应用程序中遇到任何断点。需要找出事情在什么时候破裂。
  • 除非有其他更好的方式来分享代码?
  • github 等。但是 dropbox 就可以了。顺便说一句,请从这里清理旧的 cmets。
  • 问题出在我的图标文件的名称上。我有一个- 标志,它造成了这个问题。我将所有图标名称更改为仅包含字母数字并重新启动了 Visual Studio。这解决了这个问题。
【解决方案2】:

您可以按照 Jon 的建议进行操作,或者只是进入您的 Android 设备设置和应用程序管理器,然后在您的 android 设备上卸载以前版本的应用程序

【讨论】:

  • 我已经使用命令和android设备设置卸载了,仍然没有效果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多