【发布时间】:2016-03-30 16:13:04
【问题描述】:
更新:对于那些询问用户收到哪些错误代码的人:没有错误代码。它只是打开一个空白的安装后页面,上面写着“未安装应用程序”,旁边有一个大“X”。不同版本的 Android 可能有不同的消息。没有迹象表明安装过程中出了什么问题。
更新 2: 一些用户报告他们在尝试从 Play 商店安装/更新时收到错误代码“-504”,并且在手动尝试安装时收到“应用未安装”消息.apk。我不知道这个错误与用户无法安装有什么关系,但是关于这个主题的唯一 2 个问题的解决方案并没有为我解决任何问题。我已经包含了更新的清单和构建文件。
更新 3: 用户在成功安装 IAB 后的版本中报告此问题时出现,这进一步否定了此问题是由引入 IAB 引起的概念。
更新 4: 问题似乎在于尝试更新到新版本的老用户,而不是新用户。考虑到这一点,这个问题很可能是INSTALL_FAILED_UID_CHANGED 的结果。查看版本历史记录,我对用户无法更新的问题版本所做的重大更改是删除了我不再打算使用的可绘制对象。
要求用户完成解决此问题的程序是不合理的。如果有一个我可以强制执行的解决方案可以为有缺陷的用户修复它,那太好了……如果没有,我现在至少可以做的是控制损坏并确保将来不会发生这种情况。
注意:以下是原始帖子推测问题是由于将 IAB 引入应用程序的结果。从那时起,它变得越来越不可能成为原因。无论如何,帖子仍然有相关信息。
------------------------------------------------------------------------------------------
原标题:Android App 用户在引入 IAB 后得到“App not installed”
我最近在 Google Play 上发布的应用中引入了 IAB。过了一段时间,我开始收到一些用户的报告,他们在尝试安装或更新它时收到“安装失败”错误。 让我认为这是由引入 IAB 引起的,是一位特定的长期用户通过电子邮件向我发送电子邮件,说当他尝试使用 IAB 更新到版本时,安装程序提到引入了新权限并需要用户的许可。一旦获得批准,它就会说应用程序安装失败。
我已经进行了一些谷歌搜索,从他们的角度来看似乎是一个问题,一位用户甚至尝试手动安装 .apk 并删除了上述权限,但没有成功。我不想确定这不是我做错了什么,而是我必须接受一些用户的必然。
请注意,绝大多数人在安装应用程序时都没有问题,直到引入 IAB 之后我才收到任何有关此问题的报告。如果有少量用户流失,我不会那么困扰,但问题是,这些用户损害了我的应用程序的评级。用户还提到他们可以很好地安装应用程序,不包括我自己的。
我不排除用户甚至在引入 IAB 之前就已经收到这些错误的可能性,并且链接可能是错误的。
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest package = "com.jjsoftware.fullscientificcalculator"
xmlns:android = "http://schemas.android.com/apk/res/android">
<uses-permission android:name = "android.permission.VIBRATE"/>
<uses-permission android:name = "com.android.vending.BILLING"/>
<application
android:allowBackup = "true"
android:fullBackupContent = "true"
android:icon = "@drawable/logo"
android:label = "@string/app_name">
<activity
android:name = ".MainActivity"
android:hardwareAccelerated = "false"
android:label = "@string/app_name"
android:screenOrientation = "portrait"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name = "android.intent.action.MAIN"/>
<category android:name = "android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name = ".SettingsActivity"
android:theme = "@style/PreferencesTheme">
<intent-filter>
<action android:name = ".SettingsActivity"/>
<category android:name = "android.intent.category.PREFERENCE"/>
</intent-filter>
</activity>
</application>
这是 Gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.jjsoftware.fullscientificcalculator"
minSdkVersion 14
targetSdkVersion 23
versionCode 102
versionName "1.679"
}
sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] } }
}
dependencies {
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.android.support:gridlayout-v7:23.2.1'
compile files('libs/exp4j-0.4.5.jar')
compile files('libs/EJML-core-0.28.jar')
compile files('libs/EJML-dense64-0.28.jar')
compile files('libs/Jama-1.0.3.jar')
compile files('libs/EJML-simple-0.28.jar')
}
并且,如果需要,顶层构建:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
【问题讨论】:
-
您需要用户尝试手动安装 APK 并准确告诉您输出。安装失败错误通常是由错误的版本代码或未正确签名引起的。不过,这些错误通常应该被 Google Play 捕获。我们仍然需要知道用户看到的确切错误。如果您愿意上传预计费版本和计费后版本,我可以看看是否有问题。
-
这正是我所做的。除了显示未安装应用程序的窗口外,没有其他输出。我也尝试过删除权限。看来suku的回答是最有可能的,我现在正在测试。
-
之前和之后是什么意思?我只是完全删除了计费权限,用户仍然无法安装。我没有以前版本的清单。
-
有问题,不知道这个问题是从哪里开始的。记住只有少数用户能得到这个的情况。
-
任何较旧的 APK 都可以,一个月前,两个月前,这并不重要。它不需要是问题之前的 APK。
标签: android android-gradle-plugin apk android-manifest