安装APK时出现错误-解析包时发生错误。

8

我正在开发一款安卓应用程序,在我的本地系统中构建并在模拟器上运行时,一切正常。但是,当我制作、发布并安装APK到我的手机上时,它会出现错误导致崩溃 -

There was an error parsing the package

正如您所见,我正在使用最新的SDK和构建工具进行构建,我的手机也在运行相同版本的API。 我也允许了“不受信任来源”的安装。

我正借助链接上的“构建发布版本”部分进行帮助。 它会在我的app / build / outputs / apk文件夹中生成一个名为app-release-unsigned.apk的文件,请帮忙处理它。

模拟器AVD -

Galaxy Nexus, 1 GB RAM, API 22 (Android 5.1.1), CPU x86

我的手机 -

Nexus 5, 2 GB RAM, Android 5.1.1

build.gradle -

apply plugin: 'android'
apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

android {
    compileSdkVersion 22 // api version
    buildToolsVersion "22.0.1" // build tools version

    defaultConfig {
        applicationId "org.compani.proj"
        minSdkVersion 8
        targetSdkVersion 22 // same as compilesdkversion
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),  'proguard-rules.pro'
        }
    }
}

dependencies {
    dependencies {
        //compile project(':android-beacon-library')
        compile 'org.altbeacon:android-beacon-library:2+@aar'
    }
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:recyclerview-v7:21.+'
    compile 'com.android.support:cardview-v7:21.+'
    compile 'com.android.support:support-v4:+'
}

AndroidManifest.xml -

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="22" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" 
    android:name="MyApp">
    <activity
        android:name="org.compani.proj.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

发布信息 -



23:43:42: Executing external task 'assembleRelease'...
Configuration on demand is an incubating feature.
:app:preBuild
:app:preReleaseBuild
:app:checkReleaseManifest
:app:preDebugBuild
:app:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72103Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72103Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42200Library UP-TO-DATE
:app:prepareOrgAltbeaconAndroidBeaconLibrary214Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl UP-TO-DATE
:app:compileReleaseRenderscript UP-TO-DATE
:app:generateReleaseBuildConfig UP-TO-DATE
:app:generateReleaseAssets UP-TO-DATE
:app:mergeReleaseAssets UP-TO-DATE
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources UP-TO-DATE
:app:mergeReleaseResources UP-TO-DATE
:app:processReleaseManifest
:app:processReleaseResources UP-TO-DATE
:app:generateReleaseSources UP-TO-DATE
:app:compileReleaseJava UP-TO-DATE
:app:lintVitalRelease
:app:compileReleaseNdk UP-TO-DATE
:app:preDexRelease UP-TO-DATE
:app:dexRelease UP-TO-DATE
:app:processReleaseJavaRes UP-TO-DATE
:app:packageRelease UP-TO-DATE
:app:assembleRelease

BUILD SUCCESSFUL

Total time: 6.309 secs
23:43:49: External task execution finished 'assembleRelease'.

请使用 adb install 命令进行安装,并记录产生的错误代码。此外,请确认设备上是否已安装了应用程序的调试版本?在安装之前,您是否对未签名的 APK 进行了签名? - StenSoft
我正在直接在设备上安装它。没有logcat。 - Sam
在build.gradle(8)和AndroidManifest.xml(17)中的“minsdkversion”存在差异。请纠正它并尝试一次。这也可能是由于android-beacon库的“targetsdkversion”为21所致。请在API级别低于22的设备上尝试。 - Psypher
@Sam - 安装尝试本身会在logcat中生成输出,这对于查看非常有用。您可能需要使用命令窗口/终端中的adb程序来收集此信息,而不是使用IDE - 尽管看起来您的问题已经被识别为尝试安装未签名的apk文件。 - Chris Stratton
那里没有错误。我已经添加在上面了。我正在使用Make Project->assembleRelease的过程来发布。 - Sam
显示剩余2条评论
1个回答

12

抱歉,我不明白为什么你需要一个未签名的APK? - Mattia Maestrini
我问这个问题是因为我不确定在安卓上的流程是怎样的。所以,生成签名 APK 应该负责构建 -> 发布 -> 签名,对吗? - Sam
当然,我建议您使用“在Android Studio中签署应用程序”的方法,这是最简单的方法。按照指南中的步骤,您将获得一个已签名的APK,可以分发给您的用户。 - Mattia Maestrini
当然,我成功地安装了。谢谢。 - Sam
2
谁说你不能在物理设备上安装未签名的APK? - Sharp Edge
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接