問題描述
這是一個使用 gradle 的 Android 應用程序.點擊運行后,發現APP_V1.3.4_2016-02-22_
11:30:29
outputs/apk
中的 _google_play.apk,但事件日志顯示:
This is an Android application using gradle. After clicking Run, I found APP_V1.3.4_2016-02-22_
11:30:29
_google_play.apk
in outputs/apk
, but the event log says:
11:30:31 EmptyThrowable:APK 文件/.../WorkSpace/Android/.../app/build/outputs/apk/APP_V1.3.4_2016-02-22_11:30:14_google_play.apk 在磁盤上不存在.
11:30:31 EmptyThrowable: The APK file /.../WorkSpace/Android/.../app/build/outputs/apk/APP_V1.3.4_2016-02-22_11:30:14_google_play.apk does not exist on disk.
11:30:32 會話應用程序":安裝 APK 時出錯
11:30:32 Session 'app': Error Installing APK
這是我的 build.gradle
文件:
apply plugin: 'com.android.application'
def releaseTime() {
return new Date().format("yyyy-MM-dd_HH:mm:ss",
TimeZone.getTimeZone("GMT+08:00"))
}
android {
compileSdkVersion 'Google Inc.:Google APIs:23'
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example"
minSdkVersion 14
targetSdkVersion 23
versionCode 29
versionName "1.3.4"
manifestPlaceholders = [SOME_CHANNEL_VALUE: "some_channel"]
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
debug {}
release {
// ...
}
}
buildTypes {
debug {
zipAlignEnabled true
minifyEnabled false
shrinkResources true
}
release {
zipAlignEnabled true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
signingConfig signingConfigs.release
applicationVariants.all { variant ->
def time = releaseTime()
variant.outputs.each { output ->
def apk = output.outputFile
def endFileName = "${time}_${variant.productFlavors[0].name}.apk"
if (apk != null &&
apk.name.endsWith('.apk') &&
!apk.name.endsWith('${endFileName}')) {
def fileName = "APP_V${defaultConfig.versionName}_${endFileName}"
output.outputFile = new File(apk.parentFile, fileName)
}
}
}
}
}
productFlavors {
google_play {
manifestPlaceholders = [SOME_CHANNEL_VALUE: "google_play"]
}
}
}
dependencies {
// ...
}
那么releaseTime()
有什么問題嗎?
推薦答案
在我的情況下,問題是要安裝的 apk 的名稱被緩存了,所以每次我嘗試運行應用程序時,都會生成一個帶有今天日期的 apk但是在安裝時,Android Studio 會尋找一個舊名稱的 apk 文件.解決方案是點擊Sync Gradle,然后點擊Build > Rebuild Project.您可能還想刪除文件夾 app/apks 和 app//build/outputs/apk 之前.
In my case the problem was that the name of the apk to be installed was cached, so everytime I tried running the app, an apk with today's date was generated but when installing, Android Studio looked for an apk file with an old name. The solution was to click Sync Gradle and then Build > Rebuild Project. You may also want to delete folders app/apks and app//build/outputs/apk previously.
這篇關于EmptyThrowable:磁盤上不存在 APK 文件 *.apk的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!