Android App安装API 24,但不适用于API 19(Jack工具链问题?)

时间:2017-04-26 01:46:25

标签: android android-studio apk android-install-apk

我对android dev有些新手,所以我在为多个API开发时遇到了一些问题。当我创建项目时,我将最低API级别设置为18,甚至不再支持(根据维基:https://en.wikipedia.org/wiki/Android_version_history

我在两部不同的手机上测试了APK的安装,两者都是API 24,没有问题。但是,我与API 19的关联无法安装该应用程序。显然它给了他“App not installed。”的信息性错误。

出于测试目的,我创建了一个新项目,并且没有添加任何代码(只留下Android Studio生成的“Hello World”标签),生成一个签名的APK,然后将其发送给我的同事。他也没能安装它。

唯一需要注意的是我玩“杰克”。我正在测试一些需要它的随机源代码。我想知道这会不会引起问题?一个空项目很难相信。

更具体地说,我在测试上面提到的源代码时遇到了这个错误“错误:Jack需要支持java 8语言功能。要么启用Jack,要么删除sourceCompatibility JavaVersion.VERSION_1_8。”所以,当然,我启用了杰克。

这是build.gradle(如果有帮助吗?)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.random.name"
        minSdkVersion 18
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

非常感谢任何想法!

1 个答案:

答案 0 :(得分:0)

看起来你正试图在你的项目中使用java 8,java 8在API级别18上不起作用,你也需要为它启用jack工具链

来源:https://developer.android.com/guide/platform/j8-jack.html

虽然如果你想使用java 8功能,你可以使用带有gradle的retrolambda https://github.com/evant/gradle-retrolambda

目前,如果您没有使用任何Java 8功能,那么只需将gradle文件中的源兼容性更改为java 7而不是java 8,它应该可以正常工作。

使用此

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}

而不是

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

它可以粘贴在您的gradle文件中,如:

 android {
 ...
 defaultConfig {
 ...

 }
 compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_8
  targetCompatibility JavaVersion.VERSION_1_8
 }
}