【问题标题】:Xamarin Error only Android 6.0 Mono.AndroidTools.InstallFailedException and NSTALL_PARSE_FAILED_MANIFEST_MALFORMEDXamarin 错误仅 Android 6.0 Mono.AndroidTools.InstallFailedException 和 NSTALL_PARSE_FAILED_MANIFEST_MALFORMED
【发布时间】:2019-10-06 08:06:13
【问题描述】:

我使用 Visual Studio Professional 2017 在 Xamarin 中创建了一个项目,该项目正常清理/构建/编译并安装在 Android 7.0、7.1、8.0、8.1 和 9.0(模拟器和设备)上。

但是,不要在 Android 6.0 和 6.1(模拟器或设备)上安装/构建,我尝试在模拟器和设备中安装,显示错误:

1>C:\Program Files\Android\jdk\microsoft_dist_openjdk_1.8.0.25\\bin\keytool.exe -list -alias androiddebugkey -storepass android -keypass android -keystore "C:\Users\Claudio\AppData\Local\Xamarin\Mono for Android\debug.keystore" 
1>C:\Program Files (x86)\Android\android-sdk\build-tools\27.0.3\zipalign.exe 4 "C:\Workspace\htdocs\Projetos\aprepara-xamarin-raksha\Ishpia.Droid\obj\Debug\81\android\bin\com.bergmannsoft.aprepara.apk" "bin\Debug\\com.bergmannsoft.aprepara-Signed.apk" 
1>C:\Program Files\Android\jdk\microsoft_dist_openjdk_1.8.0.25\\bin\java.exe -jar "C:\Program Files (x86)\Android\android-sdk\build-tools\27.0.3\lib\apksigner.jar" sign --ks "C:\Users\Claudio\AppData\Local\Xamarin\Mono for Android\debug.keystore" --ks-pass pass:android --ks-key-alias androiddebugkey --key-pass pass:android --min-sdk-version 22 --max-sdk-version 27  C:\Workspace\htdocs\Projetos\aprepara-xamarin-raksha\Ishpia.Droid\bin\Debug\com.bergmannsoft.aprepara-Signed.apk 
1>ADB0000:  Deployment failed
1>Mono.AndroidTools.InstallFailedException: Unexpected install output:  pkg: /data/local/tmp/com.bergmannsoft.aprepara-Signed.apk
1>Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
1>
1>   em Mono.AndroidTools.Internal.AdbOutputParsing.CheckInstallSuccess(String output, String packageName) na E:\A\_work\1824\s\External\androidtools\Mono.AndroidTools\Internal\AdbOutputParsing.cs:linha 345
1>   em Mono.AndroidTools.AndroidDevice.<>c__DisplayClass95_0.<InstallPackage>b__0(Task`1 t) na E:\A\_work\1824\s\External\androidtools\Mono.AndroidTools\AndroidDevice.cs:linha 753
1>   em System.Threading.Tasks.ContinuationTaskFromResultTask`1.InnerInvoke()
1>   em System.Threading.Tasks.Task.Execute()
1>ADB0010: Unexpected install output:   pkg: /data/local/tmp/com.bergmannsoft.aprepara-Signed.apk
1>Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
1>
1>   em Mono.AndroidTools.Internal.AdbOutputParsing.CheckInstallSuccess(String output, String packageName) na E:\A\_work\1824\s\External\androidtools\Mono.AndroidTools\Internal\AdbOutputParsing.cs:linha 345
1>   em Mono.AndroidTools.AndroidDevice.<>c__DisplayClass95_0.<InstallPackage>b__0(Task`1 t) na E:\A\_work\1824\s\External\androidtools\Mono.AndroidTools\AndroidDevice.cs:linha 753
1>   em System.Threading.Tasks.ContinuationTaskFromResultTask`1.InnerInvoke()
1>   em System.Threading.Tasks.Task.Execute()
1>Projeto de compilação pronto "Ishpia.Droid.csproj" -- FALHA.
1>FALHA da compilação.
1>Deployment failed to nexus_5x_api_23.
========== Compilar: 0 com êxito, 0 com falha, 2 atualizados, 0 ignorados ==========
========== Implantação: 0 com êxito, 1 com falha, 0 ignorados ==========

已经多次清理,删除文件夹“bin”和“obj”,清除缓存包,nuget,总是显示错误。

谁能帮我理解为什么该错误只发生在 Android 6.0/6.1 中?

我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="150" android:versionName="3.2" package="com.bergmannsoft.aprepara" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="27" />
  <!-- Google Maps for Android v2 requires OpenGL ES v2 -->
  <uses-feature android:glEsVersion="0x00020000" android:required="true" />
  <!-- We need to be able to download map tiles and access Google Play Services-->
  <uses-permission android:name="android.permission.INTERNET" android:required="true" />
  <uses-permission android:name="android.permission.CAMERA" android:required="true" />
  <!-- Allow the application to access Google web-based services. -->
  <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
  <!-- Google Maps for Android v2 will cache map tiles on external storage -->
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:required="true" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" />
  <!-- Google Maps for Android v2 needs this permission so that it may check the connection state as it must download data -->
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:required="true" />
  <!-- These are optional, but recommended. They will allow Maps to use the My Location provider. -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:required="true" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:required="true" />
  <!-- Outras permissoes-->
  <uses-permission android:name="android.permission.CALL_PHONE" android:required="true" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" android:required="true" />
  <!-- Permission to receive remote notifications from Google Play Services -->
  <!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
  <uses-permission android:name="com.bergmannsoft.aprepara.permission.MAPS_RECEIVE" android:required="true" />
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" android:required="true" />
  <uses-permission android:name="android.permission.READ_USER_DICTIONARY" android:required="true" />
  <!-- GCM-->
  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  <uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
  <uses-permission android:name="com.bergmannsoft.aprepara.permission.C2D_MESSAGE" />
  <permission android:name="com.bergmannsoft.aprepara.permission.C2D_MESSAGE" android:protectionLevel="signature" />
  <!-- BOOT -->
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <!-- MAP-->
  <permission android:name="com.bergmannsoft.aprepara.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
  <!-- Declaring Service in Manifest -->
  <service android:name="Ishpia.Droid.Activities.Services.Order.PostService" android:exported="false" />
  <service android:name="Ishpia.Droid.Activities.Services.Order.OrderService" android:exported="false" />
  <service android:name="Ishpia.Droid.Activities.Services.Periodic.PeriodicService" android:exported="false" />
  <!-- APLICATION -->
    <application android:allowBackup="true" android:label="@string/app_title" android:icon="@mipmap/icon" android:roundIcon="@mipmap/icon_round" android:largeHeap="true" android:supportsRtl="true" android:theme="@style/AppTheme.NoActionBarNotExtended">
    <!-- Put your Google Maps V2 API Key here. -->
    <meta-data android:name="com.google.android.geo.API_KEY" android:value="XXXXXXXXXXXXXXXXXXXXX" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <!-- FCM/GCM -->
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat_ic_notification" />
    <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/background" />
    <!-- [END fcm_default_icon] -->
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
      <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        <category android:name="${applicationId}" />
      </intent-filter>
    </receiver>
    <!-- BOOT DEVICE -->
    <receiver android:name="Ishpia.Droid.Activities.Services.Boot.BootReceiver" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
      <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
    </receiver>
    <!-- FILE PROVIDER -->
    <provider android:name="android.support.v4.content.FileProvider" android:grantUriPermissions="true" android:exported="false" android:authorities="${applicationId}.fileprovider">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths" />
    </provider>
    </application>
</manifest>

【问题讨论】:

  • 您可以使用 Android lint 检查您的清单,它已作为 Android 工具的一部分安装,可以在 tools/bin 找到。它报告了您的清单的多个错误/警告:sites.google.com/a/android.com/tools/tips/lint
  • @SushiHangover 谢谢,Android Lint 是一个很好的工具,帮助我找到了解决方案。
  • 很高兴它有帮助????

标签: java android visual-studio xamarin xamarin.android


【解决方案1】:

错误表明您的清单格式错误:

“INSTALL_PARSE_FAILED_MANIFEST_MALFORMED”

如果我尝试在 Chrome 中加载您的清单,它也会出错。

此评论没有结束标记:

<!-- Set color used with incoming notification messages. This is used when no

我相信这可能是你的问题。

如果是这样,有趣的是其他版本的 Android 忽略了 XML 格式错误。

【讨论】:

  • 我在 Chrome 中测试了 xml 并没有显示格式错误。显然 xml 没问题,应用程序在 Android 7/8/9 上正常安装。该错误仅发生在 Android 6.0
  • 如果我从这篇文章中剪切并粘贴您的确切清单,并将其保存为 XML 文件并将其加载到 Chrome 中,则会出错。我猜您的清单与您发布的清单不同。实际上,我确定是因为我看到您将 API_KEY 值更改为“XXXXXXXXXXXXXXXXXXXXX”。而且,我猜你可能不小心删除了我引用的那一行的结尾注释标签。如果您在实际清单中的“设置颜色...”行上没有结束注释标记,请添加它并再次尝试安装。
  • 你说得对,我编辑了键的值并删除了部分代码。对不起。
【解决方案2】:

老实说,这个问题让我很困惑。不过,Robert Bruce (@6157192) 是对的,问题出在 Manifest.xml 中,而不是配置 Manifest.Xml 中,在构建后生成的 Manifest.Xml 中。

我将描述为我找到最佳“解决方案”的步骤:

1.我多次运行 Android Lint (@SushiHangover / @4984832),进行必要的调整,检查并清理主 Manifest.xml。

C:\Workspace\Android\sdk\tools\bin>lint.bat  C:\Workspace\htdocs\Projetos\aprepara-xamarin-raksha\Ishpia.Droid\

2.使用 Visual Studio 2017 和 Androi Emulator Nexus 5x (API 23) 清理、重新编译和部署。

很明显,错误发生了,但是如果您查看输出终端,它会生成用于安装的apk。

C:\Program Files\Android\jdk\microsoft_dist_openjdk_1.8.0.25\\bin\java.exe -jar "C:\Program Files (x86)\Android\android-sdk\build-tools\27.0.3\lib\apksigner.jar" sign --ks "C:\Users\Claudio\AppData\Local\Xamarin\Mono for Android\debug.keystore" --ks-pass pass:android --ks-key-alias androiddebugkey --key-pass pass:android --min-sdk-version 22 --max-sdk-version 27  C:\Workspace\htdocs\Projetos\aprepara-xamarin-raksha\Ishpia.Droid\bin\Debug\ **com.bergmannsoft.aprepara-Signed.apk**

com.bergmannsoft.aprepara-Signed.apk

3. 使用win中的apkanalyzer,编译后导出生成的manifest.xml。

apkanalyzer.cmd manifest print C:\Workspace\htdocs\Projetos\aprepara-xamarin-raksha\Ishpia.Droid\bin\Debug\com.bergmannsoft.aprepara-Signed.apk > android.xml

现在游戏很好玩,因为经过几天的审查和重新制作Manifest.xml,我发现错误在编译后生成的Manifest.xml中,因为取决于其class的实现,Xamarin(不是确定它是否只是 Xamarin )将操纵 XML 并添加其他信息。

而且错误实际上是在 Manifest.xml 中,而不是正在编辑的内容,在编译后生成。

引导接收器权限和类被生成了两次。

4。现在我终于找到了错误所在,我们回到了测试..测试..测试..许多测试。

测试 A(失败):

删除操作 Manifest.xml 并产生错误的属性的类,并将所有包名称以小写形式放在“Manifest”中,应用程序已正确安装在 Android 6.0 和其他版本(7.8 和 9)上.

<!-- BOOT DEVICE -->
<receiver android:name="ishpia.droid.activities.services.boot.bootreceiver" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</receiver>

<!-- SERVICE -->
<service android:name="ishpia.droid.activities.services.order.postdervice" android:exported="false" />
<service android:name="ishpia.droid.activities.services.order.orderservice" android:exported="false" />
<service android:name="ishpia.droid.activities.services.periodic.periodicservice" android:exported="false" />

但它产生了一个新问题,因为在某些真实设备中(根本没有,仅在少数型号中),发生了错误:


Fatal Exception: java.lang.RuntimeException: Unable to instantiate receiver ishpia.droid.activities.services.boot.bootreceiver: java.lang.ClassNotFoundException: Didn't find class "ishpia.droid.activities.services.boot.bootreceiver" on path: DexPathList[[zip file "/data/app/com.bergmannsoft.aprepara-x12fO8j-m_szPmi4Kc9Kyg==/base.apk"],nativeLibraryDirectories=[/data/app/com.bergmannsoft.aprepara-x12fO8j-m_szPmi4Kc9Kyg==/lib/arm, /data/app/com.bergmannsoft.aprepara-x12fO8j-m_szPmi4Kc9Kyg==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib]]
       at android.app.ActivityThread.handleReceiver(ActivityThread.java:3374)
       at android.app.ActivityThread.-wrap18(Unknown Source)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:7000)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

显然有些设备没有找到 BootReceiver 类。

测试 B(失败):

在 Manifest.xml 中将类的名称放在大写字母中,在 Android 版本 6 之外的版本(7,8 和 9)中工作。实际上,无法理解为什么错误只在版本 6 中出现。

<!-- BOOT DEVICE -->
<receiver android:name="Ishpia.Droid.Activities.Services.Boot.Bootreceiver" android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
..
</receiver>

测试 N(目前还可以):

这是我为我的应用找到的最佳解决方案。

从 Manifest.xml 中删除所有服务和接收器,因此:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
          xmlns:tools="http://schemas.android.com/tools"
          tools:ignore="GoogleAppIndexingWarning"
          android:versionCode="152" 
          android:versionName="3.2" 
          package="com.bergmannsoft.aprepara" 
          android:installLocation="auto">
    <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="27" />
  <!-- Google Maps for Android v2 requires OpenGL ES v2 -->
  <uses-feature android:glEsVersion="0x00020000" android:required="true" />
  <!-- USER PERMISSION-->
  <uses-permission android:name="android.permission.INTERNET" android:required="true" />
  <uses-permission android:name="android.permission.CAMERA" android:required="true" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:required="true" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:required="true" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:required="true" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:required="true" />
  <uses-permission android:name="android.permission.CALL_PHONE" android:required="true" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" android:required="true" />
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" android:required="true" />
  <uses-permission android:name="android.permission.READ_USER_DICTIONARY" android:required="true" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" />
  <!-- PERMISSION-->
  <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
  <uses-permission android:name="com.bergmannsoft.aprepara.permission.MAPS_RECEIVE" android:required="true" />  
  <uses-permission android:name="com.bergmannsoft.aprepara.permission.C2D_MESSAGE" />
  <permission android:name="com.bergmannsoft.aprepara.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
  <permission android:name="com.bergmannsoft.aprepara.permission.C2D_MESSAGE" android:protectionLevel="signature" />
  <!-- APLICATION -->
    <application android:allowBackup="false" android:label="@string/app_title" android:icon="@mipmap/icon" android:roundIcon="@mipmap/icon_round" android:largeHeap="true" android:supportsRtl="true" android:theme="@style/AppTheme.NoActionBarNotExtended">
    <!-- Put your Google Maps V2 API Key here. -->
    <meta-data android:name="com.google.android.geo.API_KEY" android:value="XXXXXXXXXXXXXXX" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <!-- FCM/GCM -->
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat_ic_notification" />
    <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/background" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
      <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        <category android:name="${applicationId}" />
      </intent-filter>
    </receiver>
    <!-- FILE PROVIDER -->
    <provider android:name="android.support.v4.content.FileProvider" android:grantUriPermissions="true" android:exported="false" android:authorities="${applicationId}.fileprovider">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths" />
    </provider>
  </application>
</manifest>

并作为属性直接插入到 Xamarin 类中(在编译期间 xamarin 将插入到 Manifest 之后)。

广播接收器

namespace Ishpia.Droid.Activities.Services.Boot
{
    [BroadcastReceiver(Enabled = true, Exported = false, Permission = "android.permission.RECEIVE_BOOT_COMPLETED")]
    [IntentFilter(new[] { Intent.ActionBootCompleted }, Priority = (int)IntentFilterPriority.LowPriority, Categories = new[] { Intent.CategoryDefault })]
    public class BootReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            Intent i = new Intent(context, typeof(SplashActivity));
            i.AddFlags(ActivityFlags.NewTask);
            context.StartActivity(i);
        }
    }
}

订单服务

namespace Ishpia.Droid.Activities.Services.Order
{
    [Service (Exported = false)]
    public class OrderService : IntentService
    {
        ...
    }
}

邮政服务

namespace Ishpia.Droid.Activities.Services.Order
{
    [Service(Exported = false)]
    class PostService : IntentService
    {
    ..
    }
}

定期服务

namespace Ishpia.Droid.Activities.Services.Periodic
{
    [Service(Exported = false)]
    class PeriodicService : Service
    {
    ...
    }
}

Xamarin 会在编译后导出 Manifest.xml:

        <service
            android:name="md556d51780b7ddda82c5xxxxxxxxxxxxx.RegistrationIntentService"
            android:exported="false" />

        <service
            android:name="md527cd63edec29ae2b7xxxxxxxxxxxxx.PeriodicService"
            android:exported="false" />

        <service
            android:name="md51a4cc6308c061c7f0xxxxxxxxxxxxx.OrderService"
            android:exported="false" />

        <service
            android:name="md51a4cc6308c061c7fxxxxxxxxxxxxx.PostService"
            android:exported="false" />

        <receiver
            android:name="md53c9e18cf96d129xxxxxxxxxxxxx.BootReceiver"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
            android:enabled="true"
            android:exported="false">

            <intent-filter
                android:priority="-1000">

                <action
                    android:name="android.intent.action.BOOT_COMPLETED" />

                <category
                    android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

这些是我的应用程序中为解决正在发生的问题而采取的步骤,我认为这不是一个简单的问题要解决。我可能缺乏使用 Xamarin 的经验,但我正在提出我的解决方案,以防万一我可以帮助其他人。

【讨论】:

  • 可以在project/obj/Debug/xxx/android下找到AndroidManifest.xml文件。它应该省去从 apk 中提取清单的步骤。
【解决方案3】:

几个小时以来,我一直在努力开发一款在 Android 8+ 上运行良好但拒绝安装在低于该版本的任何应用上的应用。

android lint 实用程序也没有让我更聪明,因为它报告没有任何错误。

最后问题似乎是以大写开头的活动名称。

遗憾的是,只有 Android 7.0 模拟器给了我一个不错的错误描述(指向清单文件和属性中的行)

Android 6.0 模拟器给了我一个像 OP 提到的一般错误。

【讨论】:

  • 我理解你的烦恼,我也花了几个小时才找到错误原因。有时,这很无聊和沮丧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多