【问题标题】:Error on installing apk - parsing the package安装 apk 时出错 - 解析包
【发布时间】:2015-06-23 06:56:58
【问题描述】:

我正在开发一个 android 应用程序,当我在本地系统中构建它并在模拟器上运行时一切正常,但是一旦我在手机上制作、发布和安装 apk,它就会崩溃并出现错误 -

There was an error parsing the package

如您所见,我正在使用最新的 SDK 和构建工具进行构建,并且我的手机也在 API 上运行相同版本。我也允许安装Untrusted Sources

我正在使用this 链接上的“构建发布版本”部分的帮助。它正在我的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 进行了签名?
  • 发布 logcat 错误
  • 我直接在设备上安装它。没有 logcat。
  • minsdkversion 在 build.gradle(8) 和 AndroidManifest.xml(17) 中存在差异。更正它并尝试一次。这也可能是由于 android-beacon 库的 targetsdkversion 为 21 造成的。请在 API 级别 22 以下的设备中尝试。
  • @Sam - 安装尝试本身会在 logcat 中生成输出,这将很有用。您可能需要使用 adb 程序从命令窗口/终端而不是您的 IDE 收集此信息 - 尽管看起来您的问题已被确定为尝试安装未签名的 apk。

标签: android apk android-gradle-plugin build.gradle


【解决方案1】:

生成的 APK 未签名 (app-release-unsigned.apk)。您不能在物理设备上安装未签名的 APK。 你有两个选择:

【讨论】:

  • 你是对的。我错过了那部分。那么,我还需要制作项目,然后 assembleRelease 生成未签名的吗?只是想更好地理解这个过程。
  • 对不起,我不明白,为什么你需要一个未签名的 apk?
  • 我在问,因为我不确定该过程如何在 android 上运行。那么,生成签名的 apk 应该负责构建 -> 发布 -> 签名对吗?
  • 当然,我建议您使用“在 Android Studio 中为您的应用签名”的方法,这是最简单的。按照指南中的步骤,您将获得一个已签名的 APK,以便分发给您的用户
  • 谁说你不能在物理设备上安装未签名的 APK??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 2023-03-30
  • 2013-12-09
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
相关资源
最近更新 更多