我是Android开发的新手。我使用安卓工作室开发了一个应用程序。问题是,在生成签名的APK后,当我尝试在带有MARSHMALLOW的Android设备上安装该应用程序时,它没有安装,显示错误消息"无法安装应用程序"消息,但它安装在带有牛轧糖的Android设备上,而是我将minSDKVersion设置为19。
这是我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.adityakumarsingh.arduinobot"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:screenOrientation="portrait"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".WelcomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Splash"
android:screenOrientation="portrait"
android:theme="@style/SpalshTheme">
</activity>
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"></activity>
<activity
android:name=".Accelerometer"
android:parentActivityName=".MainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
<activity
android:name=".BluetoothConnection"
android:screenOrientation="portrait"
android:theme="@style/AppTheme" />
<activity
android:name=".GameMode"
android:parentActivityName=".MainActivity"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
<activity
android:name=".About"
android:parentActivityName=".MainActivity"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
<activity
android:name=".Voicerecog"
android:parentActivityName=".MainActivity"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
</application>
</manifest>
这是我的构建文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.example.adityakumarsingh.arduinobot"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
}
}
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-
layout:1.0.2'
compile 'io.github.controlwear:virtualjoystick:1.8.0'
compile 'com.github.markushi:circlebutton:1.1'
compile 'de.hdodenhof:circleimageview:2.2.0'
implementation 'com.android.support:design:26.1.0'
}
怎么办?任何帮助将不胜感激。谢谢
主要是导致问题的签名。尝试在对 apk 进行签名时使用 v2 加 v1 签名,而不仅仅是任何一个签名。当我刚刚使用 v2 方法时,我看到了此错误。添加 v1 签名会有所帮助。
V2 签名对模块进行签名,并适用于牛轧糖等。它不适用于旧版本的安卓,因此您还必须使用 v1 进行完整的 apk 签名。这将允许旧版本使用 v1 进行验证来安装它,而牛轧糖及以上版本仍应使用 v2。同时使用两者。有关此内容的详细信息可以在他们的网站上找到:
https://source.android.com/security/apksigning/v2
还要确保没有任何已安装的apk与您尝试安装的版本号相同。如果已安装并且版本号相同,它将失败。