标签: android-app-bundle

Android appbundle:重命名生成的输出文件 (.aab)

我正在尝试以.aab格式重命名生成的文件<appname>-<variant>-<buildType>-<version>,有什么方法可以重命名输出包文件,类似于 apk 重命名。

复制和重命名我试过了,但问题是我需要将包命名为<appname>-<variant>-<buildType>-<version>. 当我创建这里提到的任务时如何使用 Gradle 更改为 App Bundles 生成的文件名? 获取变体是使用一个子字符串,它同时给出variantBuildtype.

android android-app-bundle

10
推荐指数
1
解决办法
1159
查看次数

在基本模块中找不到动态功能模块中的 Android 提供程序

我在我的动态功能模块中使用了一些库。这些库正在向清单中添加一些提供程序。

例如在我的动态模块中的 build.gradle 文件中:

dependencies {
    ...
    implementation 'com.github.esafirm.android-image-picker:imagepicker:1.11.1'
    ...
}
Run Code Online (Sandbox Code Playgroud)

该库将以下标记添加到清单中:

<provider
        android:name="com.esafirm.imagepicker.helper.ImagePickerFileProvider"
        android:authorities="{$applicationId}.imagepicker.provider"
        android:exported="false"
        android:grantUriPermissions="true" >
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/image_picker_provider_paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)

问题是当我构建我的基本模块时,应用程序崩溃了,因为它找不到提供者。我该如何解决这个问题?

正如此处所述

应用程序基本模块的清单与任何其他应用程序模块的清单相似。请记住,当 Google Play 生成您应用的基础 APK 时,它会将所有模块的清单合并到基础 APK 的清单中。

但为什么只有供应商受到影响?活动是否被忽略?

这是我得到的堆栈跟踪:

java.lang.RuntimeException: Unable to get provider com.esafirm.imagepicker.helper.ImagePickerFileProvider: java.lang.ClassNotFoundException: Didn't find class "com.esafirm.imagepicker.helper.ImagePickerFileProvider" on path: DexPathList[[zip file "/data/app/ir.rashin.mototel-h7B8g42gBcVABkik16vqzw==/base.apk"],nativeLibraryDirectories=[/data/app/ir.rashin.mototel-h7B8g42gBcVABkik16vqzw==/lib/x86, /system/lib]]
    at android.app.ActivityThread.installProvider(ActivityThread.java:6396)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853)
    at android.app.ActivityThread.access$1100(ActivityThread.java:199)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
 Caused by: java.lang.ClassNotFoundException: …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-app-bundle dynamic-feature dynamic-delivery

9
推荐指数
1
解决办法
1180
查看次数

使用Play核心库验证是否安装了非Google Play应用

一些背景信息:ResourceNotFoundException当我们迁移到Android应用程序捆绑包发布方法时,我们大多数人都可能遇到过。显然,问题出在侧面加载应用程序。参考这里。

Google最近宣布了针对此问题的解决方案。使用播放核心库,我们可以确定该应用是否为侧面加载(标识丢失的拆分apk)。如果应用程序是侧面加载的,则会显示“ 安装失败 ”弹出窗口,并重定向到Play商店,用户可以在其中通过Google Play商店正确安装该应用程序。

问题:一切正常,直到从Play商店安装缺少的拆分APK。现在,当我重新启动该应用程序时,它立即崩溃并显示错误消息。

默认FirebaseApp未在此过程中初始化

注意:直接从Play商店下载应用程序可以正常运行,而不会导致崩溃。仅当由于侧面加载问题而重新下载应用程序时,才会发生崩溃。

代码:
项目的build.gradle

buildscript {
 dependencies {
  classpath 'com.android.tools.build:bundletool:0.9.0'
 }
}
Run Code Online (Sandbox Code Playgroud)

应用模块的build.gradle

 implementation 'com.google.android.play:core:1.6.1'
Run Code Online (Sandbox Code Playgroud)

扩展应用程序的类:

 public void onCreate() {
    if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
        // Skip app initialization.
        return;
    }
    super.onCreate();
    .....
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助都将非常棒。

crash android sideloading android-app-bundle google-play-core

9
推荐指数
1
解决办法
567
查看次数

如何获取 Android AAB 文件的 versionCode 和 versionName(标记)?

类似于获取 Android .apk 文件 VersionName 或 VersionCode 而无需安装 apk,我想获取versionCode和/或versionName仅使用一个.aab文件。

我试过简单地使用经典答案.apk文件,但用我的.aab文件代替,但它没有用:

$ $ANDROID_HOME/sdk/build-tools/29.0.2/aapt dump badging my_aab.aab
ERROR: dump failed because no AndroidManifest.xml found
Run Code Online (Sandbox Code Playgroud)

我也尝试尝试xmltree直接转储:

$ $ANDROID_HOME/sdk/build-tools/29.0.2/aapt dump xmltree my_aab.aab base/manifest/AndroidManifest.xml
W/ResourceType(39872): Bad XML block: header size 664 or total size 118110474 is larger than data size 35953
ERROR: Resource base/manifest/AndroidManifest.xml is corrupt
Run Code Online (Sandbox Code Playgroud)

android android-manifest apk android-app-bundle

9
推荐指数
2
解决办法
2657
查看次数

部署前修改 Android App Bundle (aab) 内容

我们有一个构建和发布管道 (Azure Devops),可将我们的 APK Android 应用程序部署到各种 appcenter.ms 环境。在发布过程中,我们将apk解压,根据环境特定配置修改内容,然后重新打包apk。

现在,我们尝试使用 Android App Bundle (AAB) 来执行此操作,因此我们无法再使用 apktool。我们如何使用 AAB 实现与 APK 相同的效果?

这是我们工作的apk 版本脚本的一个片段

## NOTE STUFF IS TRUNCATED!!! THIS IS NOT A COMPLETE SCRIPT!!! DO NOT COPY

brew list apktool &>/dev/null || HOMEBREW_NO_AUTO_UPDATE=1 brew install apktool
brew list xmlstarlet &>/dev/null || HOMEBREW_NO_AUTO_UPDATE=1 brew install xmlstarlet

# ... truncated ...

echo "Decompiling $zipPath"
apktool d $zipPath -o "apk"

cd apk

# ... truncated / modify androidmanifest.xml ...

unalignedPath="$apkPath.unaligned"
unsignedPath="$apkPath.unsigned"

cd ..

echo …
Run Code Online (Sandbox Code Playgroud)

android apk android-app-bundle

9
推荐指数
1
解决办法
9860
查看次数

如何将本机代码符号发布到 Google Play 控制台?

我正在尝试将 Android 应用程序发布到 Google Play 并收到警告:

This App Bundle contains native code, and you've not uploaded debug symbols. 
We recommend you upload a symbol file to make your crashes and ANRs easier to analyze and debug.
Run Code Online (Sandbox Code Playgroud)

我在一份文档中发现,我应该添加

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }
Run Code Online (Sandbox Code Playgroud)

行到build.gradle文件和另一个文档中,我应该添加

android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
Run Code Online (Sandbox Code Playgroud)

行到build.gradle文件。

哪一个是正确的?

无论如何,两者都不起作用。

如果我将这一行(按原样)添加到build.gradle(字面上遵循文档),我会收到Gradle无法找到ndkdebugSymbolLevel名称的错误。

如果我将该行(按原样)添加到gradle.properties,则它没有任何效果:aab文件看起来具有相同的大小并且警告仍然存在。

如何实现?

android native debug-symbols google-play android-app-bundle

9
推荐指数
1
解决办法
6685
查看次数

Google 因“隐私政策链接无效或缺失”而拒绝应用

谷歌因“隐私政策链接无效或丢失”而拒绝了 Android 应用程序。我们已经更新了应用程序中以及网络上的隐私政策。

拒绝邮件

有人知道谷歌为什么拒绝这个吗?我看到其他具有类似功能的应用程序在其隐私政策上有不同的措辞,并且它们可以在谷歌商店中找到。

mobile android google-apps google-play android-app-bundle

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

无法在 Cordova 中构建应用程序包 (.aab)?

我想制作一个应用程序包以将应用程序上传到游戏商店。但是当我创建应用程序包时遇到问题,我得到的结果是 apk。我运行这个语法:

cordova build android --prod --release -- -- --packageType=bundle

但语法的结果是

BUILD SUCCESSFUL in 4s
45 actionable tasks: 1 executed, 44 up-to-date
Built the following apk(s):
        E:\project\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk
Run Code Online (Sandbox Code Playgroud)

我使用Cordova版本10.0.0和android版本android 7.1.4

请帮助我,为什么我无法构建应用程序包(.aab)?

android gradle apk cordova android-app-bundle

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

App Bundles (AAB) 是否自动使用 APK 签名方案 v2?

我正在阅读一些 Android 11 更新文档,显然需要实施 APK 签名方案 v2。AAB 格式已经这样做了吗?

android apk android-studio android-app-signing android-app-bundle

9
推荐指数
1
解决办法
2449
查看次数

带有 Firebase 应用分发的 App Bundle

所以目前我们正在将 APK 导出到 Play 商店,我们正在使用Firebase 应用分发作为我们的测试轨道,但现在我们想开始使用 App bundles 而不是 APK 但是这里的问题 Firebase 应用分发不支持 App bundles,我想到了为测试轨道部署 APK,然后发布用于 Play 商店发布的应用程序包,但我认为这里存在风险,因为应用程序包未经测试并且可能包含无法发现的问题,我们的选择是将测试轨道迁移到内部在播放控制台中共享应用程序,有没有办法让 Firebase 应用程序分发支持 App Bundles 或任何其他选项?

android firebase android-app-bundle firebase-app-distribution

8
推荐指数
2
解决办法
2817
查看次数