【问题标题】:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED on Android 6 (API 23)Android 6 (API 23) 上的 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
【发布时间】:2019-11-11 16:37:41
【问题描述】:

我无法在 Android 6 (API 23) 上部署我的应用程序(调试/发布),但在 Android 8 (API 26) 和 Android 9 (API 28) 上一切正常。输出中存在 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误。

输出:

检测已安装的包...

正在将应用程序复制到设备...

90% ... 复制了 23527kb 中的 21184kb

100% ... 复制了 23527kb 中的 23527kb

ADB0000:部署失败 Mono.AndroidTools.InstallFailedException: 意外的安装输出:pkg: /data/local/tmp/com.companyname.appname-Signed.apk 失败 [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED] 在 E:\A_work\275\s\External\androidtools\Mono.AndroidTools\Internal\AdbOutputParsing.cs:line 345 中的 Mono.AndroidTools.Internal.AdbOutputParsing.CheckInstallSuccess(String output, String packageName) 在 Mono.AndroidTools.AndroidDevice.c__DisplayClass95_0.b__0(Task1 t) in E:\A\_work\275\s\External\androidtools\Mono.AndroidTools\AndroidDevice.cs:line 753 at System.Threading.Tasks.ContinuationTaskFromResultTask1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute()

ADB0010:意外安装输出:pkg: /data/local/tmp/com.companyname.appname-Signed.apk 失败 [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]

在 Mono.AndroidTools.Internal.AdbOutputParsing.CheckInstallSuccess(字符串 输出,字符串包名)在 E:\A_work\275\s\External\androidtools\Mono.AndroidTools\Internal\AdbOutputParsing.cs:line 345 在 Mono.AndroidTools.AndroidDevice.c__DisplayClass95_0.b__0(Task1 t) in E:\A\_work\275\s\External\androidtools\Mono.AndroidTools\AndroidDevice.cs:line 753 at System.Threading.Tasks.ContinuationTaskFromResultTask1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute() 完成构建项目 “AppNameInCamelCase.Droid.csproj”——失败。 块引用

构建失败。

2>Samsung SM-G800F 部署失败。

========== 构建:1 个成功,0 个失败,6 个最新,0 个跳过 ==========

==========部署:0成功,1失败,0跳过==========

这是我的 AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.companynameallinsmall.appnameallinsmall" android:versionName="X.X.x" android:versionCode="XXXYYY">
       <!--Target SDK version should be 25+ in order to ask for permissions in popups.-->
       <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
       <!--Permissions which are requested via popup.-->
       <!--For logging and data writing.-->
       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
       <!--For picking photo.-->
       <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
       <!--For location-->
       <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
       <!--Permissions granted during installation.-->
       <uses-permission android:name="com.android.vending.BILLING" />
       <uses-permission android:name="android.permission.WAKE_LOCK" />
       <uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
       <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 
       <uses-permission android:name="android.permission.INTERNET" />
       <uses-permission android:name="android.permission.BATTERY_STATS" />
       <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
       <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
       <uses-feature android:name="android.hardware.sensor.compass" android:required="false" />
       <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
       <uses-feature android:name="android.hardware.location" android:required="true" />
       <uses-feature android:name="android.hardware.location.gps" android:required="true" />
       <uses-feature android:name="android.hardware.location.network" android:required="true" />
       <application android:label="CamelCase Name" android:theme="@style/STAPPCustomTheme">
             <uses-library android:name="org.apache.http.legacy" android:required="false" />
             <meta-data android:name="com.google.android.geo.API_KEY" android:value="YXSIBIDGA......" />
       </application>
</manifest>

编译的 AndroidManifest - Obj 文件夹

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.companynameallinsmall.appnameallinsmall" android:versionName="X.X.x" android:versionCode="XXXYYY">
  <!--Target SDK version should be 25+ in order to ask for permissions in popups.-->
  <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
  <!--Permissions which are requested via popup.-->
  <!--For logging and sensor data writing.-->
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <!--For picking photo.-->
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <!--For location-->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <!--Permissions granted during installation.-->
  <uses-permission android:name="com.android.vending.BILLING" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
  <uses-permission android:name="android.permission.BROADCAST_STICKY" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.BATTERY_STATS" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-feature android:name="android.hardware.sensor.compass" android:required="false" />
  <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
  <uses-feature android:name="android.hardware.location" android:required="true" />
  <uses-feature android:name="android.hardware.location.gps" android:required="true" />
  <uses-feature android:name="android.hardware.location.network" android:required="true" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-feature android:name="android.hardware.camera" android:required="false" />
  <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
  <application android:label="CamelCase Name" android:theme="@style/STAPPCustomTheme" android:name="android.app.Application" android:allowBackup="true" android:icon="@mipmap/icon" android:debuggable="true">
    <uses-library android:name="org.apache.http.legacy" android:required="false" />
    <meta-data android:name="com.google.android.geo.API_KEY" android:value="YXSIBIDGA......" />
    <activity android:configChanges="orientation|screenSize" android:icon="@mipmap/icon" android:label="CamelCase Name" android:launchMode="singleTop" android:screenOrientation="portrait" android:name="md***********.MainActivity" />
    <activity android:configChanges="orientation|screenSize" android:icon="@mipmap/icon" android:label="CamelCase Name" android:noHistory="true" android:screenOrientation="portrait" android:theme="@style/Theme.SplashNotPowered" android:name="md***********.SplashScreen">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <provider android:authorities="com.companynameallinsmall.appnameallinsmall.fileProvider" android:exported="false" android:grantUriPermissions="true" android:name="Companyname.Utils.fileProvider">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/companynameallinsmall_utils_fileprovider_file_paths" />
    </provider>
    <service android:name="md***********.MatchaBackgroundService" />
    <receiver android:enabled="true" android:exported="false" android:label="Connectivity Plugin Broadcast Receiver" android:name="md***********.ConnectivityChangeBroadcastReceiver" />
    <activity android:configChanges="orientation|screenSize" android:name="md***********.MediaPickerActivity" />
    <receiver android:enabled="true" android:exported="false" android:label="Essentials Battery Broadcast Receiver" android:name="md***********.BatteryBroadcastReceiver" />
    <provider android:authorities="com.companynameallinsmall.appnameallinsmall.fileProvider" android:exported="false" android:grantUriPermissions="true" android:name="xamarin.essentials.fileProvider">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/xamarin_essentials_fileprovider_file_paths" />
    </provider>
   <receiver android:enabled="true" android:exported="false" android:name="md***********.PowerSaveModeBroadcastReceiver" />
    <provider android:name="mono.MonoRuntimeProvider" android:exported="false" android:initOrder="1999999999" android:authorities="com.companynameallinsmall.appnameallinsmall.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.com.companynameallinsmall.appnameallinsmall" />
      </intent-filter>
    </receiver>
    <activity android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:exported="false" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
  </application>
</manifest>

Lint 输出 AndroidManifest.xml:

扫描清单:

清单:错误:找不到 API 数据库;未执行 API 检查 [LintError]

AndroidManifest.xml:43:警告:使用 '$' 而不是 '.'对于内部 类(或在包名中仅使用小写字母);代替 “Companyname.Utils.fileProvider”与“Companyname$Utils$fileProvider” [内部类分隔符]

<provider android:authorities="com.companynameallinsmall.fileProvider"
     android:exported="false" android:grantUriPermissions="true" android:name="Companyname.Utils.fileProvider">

AndroidManifest.xml:33:错误:避免硬编码调试模式;忽略它允许调试 并发布构建以自动分配一个 [HardcodedDebugMode]

<application android:label="CamelCase Name" android:theme="@style/STAPPCustomTheme" android:name="android.app.Application" android:allowBackup="true" android:icon="@mipmap/icon" android:debuggable="true">

AndroidManifest.xml:33:警告:在 SDK 上 版本 23 及更高版本,您的应用数据将自动备份并 在应用安装时恢复。考虑添加属性 android:fullBackupContent 指定一个 @xml 资源配置 要备份哪些文件。更多信息: https://developer.android.com/training/backup/autosyncapi.html [允许备份]

<application android:label="CamelCase Name" android:theme="@style/STAPPCustomTheme"
android:name="android.app.Application" android:allowBackup="true"
android:icon="@mipmap/icon" android:debuggable="true">

AndroidManifest.xml:33:警告:应用程序无法被 Google 索引 搜索;考虑添加至少一个带有 ACTION-VIEW 的 Activity 意图过滤器。有关更多详细信息,请参阅问题说明。 [GoogleAppIndexingWarning]

<application android:label="CamelCase Name" android:theme="@style/STAPPCustomTheme"  android:name="android.app.Application" android:allowBackup="true" android:icon="@mipmap/icon" android:debuggable="true">

^ 2 个错误,3 个 警告

My Installed Android SDKs

【问题讨论】:

    标签: xamarin xamarin.forms visual-studio-2019


    【解决方案1】:

    1.解决第一个错误:

    清单:错误:找不到 API 数据库;未执行 API 检查 [LintError]

    您可以尝试将Linking 选项设置为None

    2.解决第二个错误:

    AndroidManifest.xml:33:错误:避免硬编码调试模式; 省略它允许调试和发布版本自动分配 一个 [HardcodedDebugMode]

    您可以尝试在您的代码中禁用调试:

    更多详情,您可以查看:

    https://docs.microsoft.com/en-us/xamarin/android/deploy-test/release-prep/?tabs=windows#disable-debugging

    https://docs.microsoft.com/en-us/xamarin/android/deploy-test/debuggable-attribute

    注意: 如果您的应用程序仍然有问题,您能否发布一个基本演示,以便我们可以在我这边进行测试?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多