我对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'
}
非常感谢任何想法!
答案 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
}
}