我正在尝试使用新的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捆绑包包含以下架构的拆分:
你有什么提示吗?
我在我的 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 应用程序包。我创建了 2-3 个功能模块。现在我想要所有这些功能和基本应用程序的单独发布周期。
那么是否可以仅发布更新的功能模块,并且用户设备仅获取这些更新的模块的更新?
已解决: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)我还在 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
任何人都不知道Crashlytic或Fabric io何时会支持新的android app bundle格式aab文件?我目前正在更新所有的jenkins部署管道,以生成aab文件而不是apk文件。
干杯
如何在 Google Play Console 中发布 Android App Bundle?
环境:Android Studio 3.2
在“生成签名包或APK”之后,我得到了一个文件“app.aab”。如何在 Google Play Console 中发布此文件以及“Bundle”和 APK 之间有何不同?
谢谢。
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
我们使用时会抛出一些日志语句,
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
我在 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 的任何信息?
Google API 无法与内部应用程序共享一起使用,这可能是由于在内部共享应用程序包和 APK 中提到的 Google Play 应用程序重新签名
如何获取要添加到 Google API 控制台的内部应用共享密钥 SHA1?