android studio 中有一个用 kotlin 编写的简单应用程序。这是下面的代码 onCreate
val manager = FakeReviewManager(baseContext)
val request = manager.requestReviewFlow()
request.addOnCompleteListener{ request ->
if (request.isSuccessful){
Log.i("message","Rating")
manager.launchReviewFlow(this, request.result).addOnCompleteListener{
Log.i("message","Rating1")
}
}else{
}
}
Run Code Online (Sandbox Code Playgroud)
在 Logcat 消息显示成功。但是什么都没有显示。如何解决这个问题?
应用程序正在使用立即模式来更新应用程序。它开始下载 APK,但下载 APK 后,它永远不会安装。UI 挂起并显示下载进度 100%。立即模式下没有反馈下载已完成。
即时模式如何实现app自动下载、安装、重启?
我正在使用以下模式以立即模式开始更新。
try {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.IMMEDIATE,
getActivity(),
REQUEST_CODE_FOR_APP_UPDATE);
} catch (IntentSender.SendIntentException e) {
appUpdateFailed();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用内部应用程序共享来测试我是否可以正确请求和下载按需动态功能模块。
当我尝试这个时,我可以看到它首先开始正确下载新功能,但它永远不会安装。我看到这些com.example is installed but certificate mismatch日志。这可能是导致问题的原因吗?我知道内部应用共享上传是“使用内部应用共享密钥自动重新签名的,该密钥是由 Google 自动为您的应用创建的”。来源。内部应用程序共享是否可能未正确签署按需 apk?
下载有问题的代码:
private const val ONDEMAND_FEATURE_MODULE_NAME: String = "ondemandfeature" // must match gradle module name
fun downloadOnDemandFeature(context: Context) {
val request = SplitInstallRequest
.newBuilder()
.addModule(ONDEMAND_FEATURE_MODULE_NAME)
.build()
val splitInstallManager = create(context)
// Initializes a variable to later track the session ID for a given request.
var mySessionId = 0
val listener = SplitInstallStateUpdatedListener { state ->
if (state.sessionId() == mySessionId) {
when (state.status()) {
SplitInstallSessionStatus.DOWNLOADING -> {
val …Run Code Online (Sandbox Code Playgroud) android google-play-core dynamic-feature-module internal-app-sharing
在文档中,它指出 ReviewInfo 对象仅在有限的时间内有效:
注意:ReviewInfo 对象仅在有限的时间内有效。您的应用应提前(预缓存)请求 ReviewInfo 对象,但前提是您确定您的应用将启动应用内审核流程。
ReviewInfo 对象的有效期(大致)多久?
例如,游戏是否可以在启动时获取 ReviewInfo(如果用户玩的时间足够长),然后仅在用户击败他们的高分(可能是 5、10、30 分钟后)时才启动评论流程?
我正在尝试按照官方文档在我的 Android 应用程序中实现应用程序内更新。我使用内部测试轨道在 Play 商店上启动了我的应用程序的一个版本,然后是版本代码递增的另一个版本。
当我第一次打开应用程序时,它崩溃了,并出现以下异常:
Fatal Exception: com.google.android.play.core.install.InstallException: Install Error(-10): The app is not owned by any user on this device. An app is "owned" if it has been acquired from Play. (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_APP_NOT_OWNED)
at com.google.android.play.core.appupdate.o.a(o.java:6)
at com.google.android.play.core.internal.o.a(o.java:28)
at com.google.android.play.core.internal.j.onTransact(j.java:20)
at android.os.Binder.execTransactInternal(Binder.java:1166)
at android.os.Binder.execTransact(Binder.java:1130)
Run Code Online (Sandbox Code Playgroud)
但是当我重新打开应用程序时,更新流程正常启动。因此,也许 PlayCore 库第一次无法获取正确的数据,并且抛出了InstallException.
我想要的是捕获所有此类InstallException,但我无法找到放置 try-catch 块的确切位置。哪个函数AppUpdateManager抛出这个InstallException?是startUpdateFlow()方法吗?
我的代码:
private lateinit var updateInfo: AppUpdateInfo
suspend fun checkForUpdate() {
updateInfo = appUpdateManager.requestAppUpdateInfo() // suspend function from play-core-ktx …Run Code Online (Sandbox Code Playgroud) 我正在尝试集成新的应用内更新API,但无法测试其实现。似乎我的代码很好,因此我阅读了疑难解答,但无法理解本文档中的两点
确保您要测试的应用使用与Google Play可用的签名密钥相同的签名密钥进行签名。
如果您要测试的应用程序未显示可用更新,请检查您是否已正确设置了测试轨道。
无论如何,我只想在我的设备上进行测试,我从Play商店版本中减少了版本代码,但始终显示UPDATE_NOT_AVAILABLE。
这是代码:-
val appUpdateInfo: Task<AppUpdateInfo> = appUpdateManager.appUpdateInfo
appUpdateInfo.addOnSuccessListener {
if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
appUpdateManager.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, this, 2);
}else{
toast("Not Available")
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试应用内更新功能,但收到 FAILED 安装状态和 -100 安装错误代码。有什么办法让我知道可能是什么原因造成的吗?
我实现了灵活的应用内更新,并记录了每个步骤。在这里遵循 Android 开发者教程
我正在生成一个 apk,其版本代码与 Google Play 中的版本代码较低,并使用相同的签名密钥进行签名。
2019-07-24 16:21:01 +0100 InAppUpdates [String#-666477938] [T# main] | install error : 0
2019-07-24 16:21:01 +0100 InAppUpdates [String#-666477938] [T# main] | install status : 1
2019-07-24 16:21:01 +0100 InAppUpdates [String#-666477938] [T# main] | install error : 0
2019-07-24 16:21:01 +0100 InAppUpdates [String#-666477938] [T# main] | install status : 1
2019-07-24 16:21:01 +0100 InAppUpdates [String#-666477938] [T# main] | install status : 1
2019-07-24 16:21:01 +0100 InAppUpdates [String#-666477938] …Run Code Online (Sandbox Code Playgroud) 重现此错误的步骤:
AppUpdateType.FLEXIBLE.No, thanks 我在以下行通过 inappupdate 更新应用程序时遇到此异常。
appUpdateManager?.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE_FLEXI_UPDATE) //it == AppUpdateInfo object
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:451)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Caused by: android.content.IntentSender$SendIntentException
at android.app.Activity.startIntentSenderForResultInner(Activity.java:4878)
at android.app.Activity.startIntentSenderForResult(Activity.java:4847)
at androidx.fragment.app.FragmentActivity.startIntentSenderForResult(FragmentActivity.java:796)
at android.app.Activity.startIntentSenderForResult(Activity.java:4814)
at androidx.fragment.app.FragmentActivity.startIntentSenderForResult(FragmentActivity.java:781)
at com.google.android.play.core.appupdate.b.startUpdateFlowForResult(Unknown Source:22)
at newProfile.NewProfileFragment.startForInAppUpdate(NewProfileFragment.kt:752)
at newProfile.NewProfileFragment.access$startForInAppUpdate(NewProfileFragment.kt:60)
at newProfile.NewProfileFragment$setupAppUpdate$3.onClick(NewProfileFragment.kt:682)
at android.view.View.performClick(View.java:6935)
at android.widget.TextView.performClick(TextView.java:12752)
at android.view.View$PerformClick.run(View.java:26214)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
Run Code Online (Sandbox Code Playgroud)
细节:
安卓版本:8.0
手机:三星J7
更新
根据文档,
startUpdateFlowForResult应该只调用一次AppUpdateInfo实例。要再次调用,您必须创建AppUpdateInfo …
我们前一段时间使用 Google Play 核心库实现了应用内更新,最近(从 9 月 8 日开始)在我们的 Crashlytics 上显示了大量安装错误 (-100) 崩溃。不确定 Google Play 是否会在当天推出某些内容,但即使我们将库更新到 1.8.0 版(在 1.7.3 之前),崩溃仍继续达到我们每日活跃用户的 7%。按照崩溃的堆栈跟踪:
Caused by com.google.android.play.core.install.InstallException: Install Error(-100): An internal error happened in the Play Store. (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_INTERNAL_ERROR)
at com.google.android.play.core.appupdate.o.a(o.java:6)
at com.google.android.play.core.internal.o.a(o.java:28)
at com.google.android.play.core.internal.j.onTransact(j.java:20)
at android.os.Binder.execTransactInternal(Binder.java:1056)
at android.os.Binder.execTransact(Binder.java:1029)
Run Code Online (Sandbox Code Playgroud)
问题是这个错误是什么?内部错误似乎是一个通用错误,并没有说明如何修复它。
它似乎与此重复,但由于没有答案,我再次询问。 在 Android 中使用应用内更新时如何解决安装状态代码 -100?
假设我们的项目中有不同的功能模块,并且其中一项按需功能发生了代码更改。现在我想知道的是,我们是否可以仅针对代码更改的功能构建 .aab(android 应用程序包)或 .apk 并将其上传到 Playstore,而不是再次构建整个应用程序并上传 .aab 文件。并且只有更新的功能才会下载到用户手机中,而不是再次下载整个应用程序。
android google-play google-play-services android-app-bundle google-play-core
Google I/O 2019 新增应用内更新。
所以我尝试按照文档使用它:https ://developer.android.com/guide/app-bundle/in-app-updates
但它发送了一个 InstallException,如下所示:
com.google.android.play.core.tasks.RuntimeExecutionException: com.google.android.play.core.install.InstallException: Install Error: -6
at com.google.android.play.core.tasks.k.getResult(Unknown Source:18)
at com.eastriver.workingtimer.ui.MainActivity$onCreate$1.onComplete(MainActivity.kt:35)
Run Code Online (Sandbox Code Playgroud)
我的代码在这里:
val appUpdateManager = AppUpdateManagerFactory.create(this)
val appUpdateInfo = appUpdateManager.appUpdateInfo
appUpdateInfo.addOnCompleteListener {
val result = it.result
if (result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& result.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
info("should show update")
appUpdateManager.startUpdateFlowForResult(
result,
AppUpdateType.FLEXIBLE,
this,
1)
} else {
info("This is already latest version!")
}
}
Run Code Online (Sandbox Code Playgroud)
我知道,它是今天才发布的。但有人知道这个吗?
我正在按照以下链接在我的 android 实时应用程序中提供应用程序更新体验或功能。
链接在这里:https : //developer.android.com/guide/playcore/in-app-updates#java
从链接内容来看,我正在实施立即应用更新功能。
到目前为止,我已完成以下步骤:
实现如下代码:
首先添加依赖项: implementation 'com.google.android.play:core:1.7.1'
然后,在 Splash Activity 中,
// Creates instance of the manager.
final AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(SplashActivity.this);
// Returns an intent object that you use to check for an update.
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
// Checks that the platform will allow the specified type of update.
appUpdateInfoTask.addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
@Override
public void onSuccess(AppUpdateInfo appUpdateInfo) {
if (appUpdateInfo.updateAvailability() == …Run Code Online (Sandbox Code Playgroud) android ×12
google-play-core ×12
google-play ×7
kotlin ×5
apk ×1
app-update ×1
rate ×1
review ×1
updates ×1