安装APK无法正常工作,但从Android工作室部署工作

时间:2017-09-08 09:05:04

标签: android android-studio package-managers

修改

APK是签名的有问题,而直接从android studio安装没有问题。 (仅使用APK)。

完成应用程序的开发后,我尝试生成一个APK并给朋友一个测试;他说这不起作用(不可安装)。所以我用Android 6.0.1抓住了手机Motorolla,并尝试从Android工作室的Android Monitor调试问题,这就是错误:

  

无法解析包文件android

然后我在我用来测试的同一部手机上尝试了相同的APK(三星J3和5.1.1 Android版本)并在Android显示器的日志中出现以下错误:

  

解组时找不到类:   com.android.packageinstaller.InstallFlowAnalytics

我以前从来没有这样或类似的东西,谷歌搜索了一下,试图在SOF上找到答案,找到了几个没有效果的答案。

  • 已停用proGuard
  • 添加了android:extractNativeLibs =“true”以显示
  • 增加/减少SDK版本

正如我所说,这些都不起作用,任何想法?

这是我的清单和我的Gradle文件:

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="my.package.myapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:icon="@drawable/ice_launder"
        android:label="@string/app_name"
        android:roundIcon="@drawable/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="my.package.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="my.package.MoreLikeThisActivity" />
        <activity android:name="my.package.SearchResultActivity" />
        <activity android:name="my.package.LastResultsActivity" />
        <activity android:name="my.package.CompanyDetailsActivity" />
        <activity android:name="my.package.OnboardingActivity"/>
    </application>

</manifest>

摇篮

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "my.package.myapp"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories {
    mavenCentral() // jcenter() works as well because it pulls from Maven Central
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.code.gson:gson:2.8.1'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.github.bumptech.glide:glide:4.0.0'
    compile 'com.github.navasmdc:MaterialDesign:1.5@aar'
    compile 'com.ogaclejapan.smarttablayout:library:1.2.1@aar'
    testCompile 'junit:junit:4.12'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
}

3 个答案:

答案 0 :(得分:2)

通过Build&gt; Build APK

构建您的项目

使用已签名的apk时,请确保已选中复选框v1和v2

答案 1 :(得分:1)

如果您正在生成已签名的apk,则需要检查两个签名版本: V1(Jar Signature)和V2(Full Apk签名),这样你的apk就可以在你的build.gradle文件中定义的api级别的所有设备上运行。

你可以参考这个:  https://source.android.com/security/apksigning/v2.html#verification

  

在Android 7.0中,可以根据APK签名验证APK   方案v2(v2方案)或JAR签署(v1方案)。较旧的平台   忽略v2签名并仅验证v1签名。

答案 2 :(得分:0)

清理项目,使缓存无效并重新启动对我有用。

相关问题