标签: android-app-bundle

使用应用程序捆绑包,我得到UnsatisfiedLinkError的用户不到1%

我正在尝试使用新的Android应用程序捆绑包。

我在设备上本地运行了一些测试,并且一切正常。但是,一旦部署到生产环境中,我开始看到一些类似以下的错误:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xyz/base.apk"],nativeLibraryDirectories=[/data/app/xyz/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libsqlite3x.so"
java.lang.Runtime.loadLibrary (Runtime.java)
java.lang.System.loadLibrary (System.java)
io.requery.android.database.sqlite.SQLiteDatabase.<clinit> (SQLiteDatabase.java:86)
io.requery.android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:241)
io.requery.android.database.sqlite.SQLiteOpenHelper.getReadableDatabase (SQLiteOpenHelper.java:199)
...
Run Code Online (Sandbox Code Playgroud)

错误指出我正在使用的库(requery / sqlite-android)无法找到所需的.so文件。这似乎很奇怪,因为我检查了bundletool,在每个APK中都有文件.so。

该错误发生在两个设备上:分别运行Android 6和5的Samsung Galaxy Note 7和TECNO-J8。

根据Play商店的说法,该错误是通过Google Play安装的应用程序发生的,因此我怀疑该错误与APK侧载有关。


生成的APK捆绑包包含以下架构的拆分:

  • splits \ base-armeabi_v7a.apk
  • splits \ base-mips.apk
  • splits \ base-arm64_v8a.apk
  • splits \ base-x86_64.apk
  • splits \ base-x86.apk

你有什么提示吗?

android android-studio android-app-bundle

7
推荐指数
1
解决办法
570
查看次数

在动态模块中使用样式时出错 - android app bundle

我在我的 android 应用程序中使用应用程序包 - 动态模块。在项目中,我有一个主模块和一个子模块。在子模块的 values -> styles.xml 中,我定义了自定义样式以启用一些活动动画。

<style name="SampleActivityTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="buttonStyle">@style/CustomButtonStyle</item>
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowActivityTransitions">true</item>
    <item name="android:windowEnterTransition">@transition/activity_transition_note</item>
    <item name="android:windowExitTransition">@transition/activity_transition_note</item>
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在清单中,我使用主题属性使用这种样式,

<activity
        android:name=".activity.SampleActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|locale"
        android:label=""
        android:screenOrientation="portrait"
        android:theme="@style/SampleActivityTheme">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

但是当我构建项目时,我收到如下编译错误,

/Users/chathura/Branches/AppBundle/sample_module/build/intermediates/merged_manifests/debug/AndroidManifest.xml:778: error: resource style/SampleActivityTheme (aka lk.sample.mysampleapp:style/SampleActivityTheme) not found.
Run Code Online (Sandbox Code Playgroud)

这个问题的原因是什么?

任何建议表示赞赏。谢谢。

android android-app-bundle

7
推荐指数
1
解决办法
1265
查看次数

是否可以仅发布动态功能模块的更新?

我正在使用带有动态功能模块的 android 应用程序包。我创建了 2-3 个功能模块。现在我想要所有这些功能和基本应用程序的单独发布周期。

那么是否可以仅发布更新的功能模块,并且用户设备仅获取这些更新的模块的更新?

android android-app-bundle

7
推荐指数
1
解决办法
723
查看次数

Facebook 和 Google 登录不适用于上传到 Firebase App Distribution 的 Android AAB 版本

已解决Firebase 故障排除页面已更新:

当您将 AAB 上传到 App Distribution 时,Google Play 会自动使用测试应用签名密钥证书对生成的 APK 进行签名。出现提示时,如果您想继续使用 API 提供商的第三方服务,则必须向 API 提供商注册您的应用程序。签名后,您可以在 Firebase 控制台中查看应用的测试证书。


自从我开始在 Firebase App Distribution 上上传 AAB 而不是 APK 以来,我注意到 Facebook 和 Google 身份验证不再起作用。

在我的 Firebase 的 Android 应用程序设置中,我已经添加了以下 SHA-1 指纹:

  • 调试(来自./gradlew signingReport
  • 发布(来自./gradlew signingReport
  • Google Play 商店(来自 Google Play Console > 发布 > 应用完整性)

我还在 Meta (Facebook) 开发者控制台中上传了相关的 Base64 哈希密钥。

一切都按预期工作,直到我开始上传 AAB 而不是 APK。例如,当我尝试使用 Facebook 登录时,会显示以下错误消息:

无效的密钥哈希。它们的密钥哈希 <key_hash> 与任何存储的密钥哈希不匹配。在https://developers.facebook.com/app/ <facebook_app_id>/配置您的应用程序密钥哈希

从这个密钥哈希中,我能够检索其关联的 SHA-1 指纹。将其添加到 Firebase …

android facebook-authentication google-oauth android-app-bundle firebase-app-distribution

7
推荐指数
1
解决办法
1188
查看次数

将aab文件上传到Crashlytic Fabric io

任何人都不知道Crashlytic或Fabric io何时会支持新的android app bundle格式aab文件?我目前正在更新所有的jenkins部署管道,以生成aab文件而不是apk文件。

干杯

crashlytics-android google-fabric android-app-bundle

6
推荐指数
1
解决办法
1458
查看次数

如何在 Google Play Console 中发布 Android App Bundle?

如何在 Google Play Console 中发布 Android App Bundle?

环境:Android Studio 3.2

在“生成签名包或APK”之后,我得到了一个文件“app.aab”。如何在 Google Play Console 中发布此文件以及“Bundle”和 APK 之间有何不同?

谢谢。

android google-play google-play-console android-app-bundle

6
推荐指数
1
解决办法
2万
查看次数

Constraint Layout - Group visibility is not working inside dynamic module

Has anyone experienced issues with ConstraintLayout group visibility? I'm using ConstraintLayout 1.1.3 and I'm setting the visibility of group in both XML layout and java code. But it does not change the visibility status. It is always visible.

This is the layout file

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout  
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

<ImageView
    android:id="@+id/iv_message_icon_activity_dictionary"
    android:layout_width="@dimen/message_icon_width"
    android:layout_height="@dimen/message_icon_height"
    android:layout_marginBottom="@dimen/message_text_view_margin_top"
    android:contentDescription="@string/app_name"
    android:src="@drawable/icon_error"
    app:layout_constraintBottom_toTopOf="@+id/tv_message_activity_dictionary"
    app:layout_constraintEnd_toEndOf="@id/tv_message_activity_dictionary"
    app:layout_constraintStart_toStartOf="@id/tv_message_activity_dictionary" />

<TextView
    android:id="@+id/tv_message_activity_dictionary"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginStart="20dp"
    android:gravity="center"
    android:textColor="@color/black"
    android:textSize="@dimen/medium_text_size"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:text="@string/msg_no_internet" /> …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-constraintlayout android-app-bundle

6
推荐指数
3
解决办法
4336
查看次数

Android In App Updates - 无法检测到 AppUpdateInfo 中的更新

我们使用时会抛出一些日志语句,

Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
Run Code Online (Sandbox Code Playgroud)
2019-06-13 18:30:40.556 28375-28375/com.marsplay.debug I/PlayCore: UID: [10312]  PID: [28375] AppUpdateService : requestUpdateInfo(<"package name here">)
2019-06-13 18:30:40.556 28375-28584/com.marsplay.debug I/PlayCore: UID: [10312]  PID: [28375] AppUpdateService : Initiate binding to the service.
2019-06-13 18:30:40.560 28375-28375/com.marsplay.debug I/PlayCore: UID: [10312]  PID: [28375] AppUpdateService : ServiceConnectionImpl.onServiceConnected(ComponentInfo{com.android.vending/com.google.android.finsky.installservice.DevTriggeredUpdateService})
2019-06-13 18:30:40.560 28375-28584/com.marsplay.debug I/PlayCore: UID: [10312]  PID: [28375] AppUpdateService : linkToDeath
2019-06-13 18:30:40.564 28375-28389/com.marsplay.debug I/PlayCore: UID: [10312]  PID: [28375] OnRequestInstallCallback : onRequestInfo
2019-06-13 18:30:40.564 28375-28584/com.marsplay.debug I/PlayCore: UID: [10312]  PID: [28375] AppUpdateService : Unbind …
Run Code Online (Sandbox Code Playgroud)

android google-play google-play-services android-app-bundle in-app-update

6
推荐指数
1
解决办法
3315
查看次数

应用程序变体 do Last for App Bundle

我在 Gradle 中输入了以下代码。

///start
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            println("Roop: mappingFile:  ${output.outputFile}")
        }
            variant.assemble.doLast {
//            doLast {
                File dir = new File("${project.projectDir}/out1")
                dir.mkdirs()
                println("Roop: copy")
                variant.outputs.each { output ->
                    File file = output.outputFile
                    println("Roop: file:" + file)
                }
            }
    }
Run Code Online (Sandbox Code Playgroud)

现在,当我从 android studio 执行 Build Apk 时,在创建 apk后会执行 Variant.assemble.doLast 。但是如果我执行Build Bundle ,则不会调用相同的 doLast 。

为什么没有为 BuildBundle 调用 doLast 的任何信息?

android bundle app-bundle android-app-bundle

6
推荐指数
1
解决办法
356
查看次数

如何获取 Android 内部应用共享密钥 SHA1 以启用 Google API?

Google API 无法与内部应用程序共享一起使用,这可能是由于在内部共享应用程序包和 APK 中提到的 Google Play 应用程序重新签名

如何获取要添加到 Google API 控制台的内部应用共享密钥 SHA1?

android google-play google-play-console android-app-bundle

6
推荐指数
1
解决办法
2670
查看次数