簡體   English   中英

無法使用 SDK 31 簽署我的 Cordova Android 應用程序

[英]Can't sign my Cordova Android app with SDK 31

嘗試將我的 Cordova 應用程序升級到 Android API 31. 我可以很好地編譯它但是當我嘗試在設備上安裝簽名版本時我得到

 adb: failed to install xyzzy.apk: Failure      [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl2088675470.tmp/base.apk: AndroidManifest.xml]

我編譯代碼,使用 zipalign、apksigner(我已經做了很長時間),然后使用 adb 安裝到設備上。

我已經嘗試過 API 31 和 32。我正在使用 cordova 10.0.0,cordova-android 11.0.0,Java 11,構建工具 31.0.0 和 32.0.0,最小 881913067880,888 版本 46.780,884 6.780,88 22 我已經從設備中刪除了該應用程序,多次運行“./gradlew clean”。 我沒有更改簽名密鑰。 我下載了我使用的大約 20 個插件的新副本。

運行“jarsigner -verify”並得到了很多 output,似乎已正確簽名。

我可以在設備上安裝未簽名的版本,但不能安裝已簽名的版本。

有什么建議嗎?

謝謝,喬恩

我的 AndroidManifest.xml

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="23005" android:versionName="2.30.5" package="com.xyzzy.xyzzy" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:exported="true" android:label="@string/activity_name" android:launchMode="singleInstance" android:name="MainActivity" android:screenOrientation="portrait" android:theme="@style/Theme.App.SplashScreen" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:enabled="true" android:exported="false" android:name="com.google.android.gms.measurement.AppMeasurementService" />
        <service android:exported="false" android:name="org.apache.cordova.firebase.FirebasePluginMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
        <receiver android:name="org.apache.cordova.firebase.OnNotificationOpenReceiver" />
        <activity android:excludeFromRecents="true" android:exported="true" android:name="org.apache.cordova.firebase.OnNotificationReceiverActivity" android:noHistory="true" android:taskAffinity="" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/accent" />
        <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
        <meta-data android:name="firebase_analytics_collection_enabled" android:value="true" />
        <meta-data android:name="firebase_performance_collection_enabled" android:value="true" />
        <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="true" />
        <meta-data android:name="firebase_messaging_auto_init_enabled" android:value="true" />
        <provider android:authorities="${applicationId}.emailcomposer.provider" android:exported="false" android:grantUriPermissions="true" android:name="de.appplant.cordova.emailcomposer.Provider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/emailcomposer_provider_paths" />
        </provider>
        <provider android:authorities="${applicationId}.localnotifications.provider" android:exported="false" android:grantUriPermissions="true" android:name="de.appplant.cordova.plugin.notification.util.AssetProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/localnotification_provider_paths" />
        </provider>
        <receiver android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.TriggerReceiver" />
        <receiver android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.ClearReceiver" />
        <activity android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.ClickReceiver" android:theme="@style/Theme.AppCompat.NoActionBar" />
        <receiver android:directBootAware="true" android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.RestoreReceiver">
            <intent-filter>
                <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
    </application>
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <queries>
        <intent>
            <action android:name="android.intent.action.SENDTO" />
            <data android:scheme="mailto" />
        </intent>
    </queries>
    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
</manifest>

弄清楚了!

現在 Cordova 編譯生成.aab 文件,我需要使用 bundletools 對應用程序進行簽名,然后解壓 .apks 文件以創建 .apk 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM