简体   繁体   English

无法使用 SDK 31 签署我的 Cordova Android 应用程序

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

Trying to upgrade my Cordova app to Android API 31. I can compile it fine but when I try to install a signed version on a device I get尝试将我的 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]

I compile the code, use zipalign, apksigner (as I've done for a long time), and then use adb to install to a device.我编译代码,使用 zipalign、apksigner(我已经做了很长时间),然后使用 adb 安装到设备上。

I've tried both API 31 and 32. I'm using cordova 10.0.0, cordova-android 11.0.0, Java 11, build-tools 31.0.0 and 32.0.0, min sdk version 22, gradle 7.6.我已经尝试过 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 I've deleted the app from the device, run "./gradlew clean" many times.我已经从设备中删除了该应用程序,多次运行“./gradlew clean”。 I have not changed the signing key.我没有更改签名密钥。 I downloaded fresh copies of the 20 or so plugins I use.我下载了我使用的大约 20 个插件的新副本。

Ran "jarsigner -verify" and got a lot of output, appears to be signed correctly.运行“jarsigner -verify”并得到了很多 output,似乎已正确签名。

I can install an unsigned version to a device, but not a signed one.我可以在设备上安装未签名的版本,但不能安装已签名的版本。

Any advice?有什么建议吗?

Thanks, Jon谢谢,乔恩

My AndroidManifest.xml我的 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>

Figured it out!弄清楚了!

Now Cordova compiles produce.aab files, I need to use bundletools to sign the app and then unzip the.apks file to create the.apk file.现在 Cordova 编译生成.aab 文件,我需要使用 bundletools 对应用程序进行签名,然后解压 .apks 文件以创建 .apk 文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android App登录Cordova - Android App Sign in Cordova 我可以使用Apache Cordova(本地版本)签署Android应用程序吗 - Can I sign an Android app using Apache Cordova (local build) 使用Facebook SDK 3的Android应用在签名后无法登录 - Android app with Facebook SDK 3 doesn't login after sign the app 无法使用带有Android SDK的Facebook测试我自己的应用 - Can't test my own app using Facebook with android sdk 无法使用Titanium Studio 3.1.0在Android SDK中执行我的应用 - Can't execute my app in Android SDK with Titanium Studio 3.1.0 Cordova CLI无法使用Windows 10找到Android SDK - Cordova CLI can't find Android SDK using Windows 10 无法将 Cordova 应用程序提交到 Play 商店 - (您的应用程序当前针对 API 级别 30,并且必须至少针对 API 级别 31) - Can't submit Cordova app to the Play Store - (Your app currently targets API level 30 and must target at least API level 31) 在 Android 12 (SDK 31) 中获取 android.app.ForegroundServiceStartNotAllowedException - Getting android.app.ForegroundServiceStartNotAllowedException in Android 12 (SDK 31) 无法在 VS2017 的 Cordova Android 应用程序中使用 Admob - Can't get Admob working in my Cordova Android app in VS2017 为什么我不能在Android应用中使用Cordova 2.7.0触发navigator.camera.getPicture? - Why can't I trigger navigator.camera.getPicture using Cordova 2.7.0 in my Android app?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM