我正在尝试以.aab格式重命名生成的文件<appname>-<variant>-<buildType>-<version>,有什么方法可以重命名输出包文件,类似于 apk 重命名。
复制和重命名我试过了,但问题是我需要将包命名为<appname>-<variant>-<buildType>-<version>. 当我创建这里提到的任务时如何使用 Gradle 更改为 App Bundles 生成的文件名?
获取变体是使用一个子字符串,它同时给出variantBuildtype.
我在我的动态功能模块中使用了一些库。这些库正在向清单中添加一些提供程序。
例如在我的动态模块中的 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
一些背景信息: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
类似于获取 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) 我们有一个构建和发布管道 (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 应用程序发布到 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无法找到ndk或debugSymbolLevel名称的错误。
如果我将该行(按原样)添加到gradle.properties,则它没有任何效果:aab文件看起来具有相同的大小并且警告仍然存在。
如何实现?
谷歌因“隐私政策链接无效或丢失”而拒绝了 Android 应用程序。我们已经更新了应用程序中以及网络上的隐私政策。
有人知道谷歌为什么拒绝这个吗?我看到其他具有类似功能的应用程序在其隐私政策上有不同的措辞,并且它们可以在谷歌商店中找到。
我想制作一个应用程序包以将应用程序上传到游戏商店。但是当我创建应用程序包时遇到问题,我得到的结果是 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 11 更新文档,显然需要实施 APK 签名方案 v2。AAB 格式已经这样做了吗?
android apk android-studio android-app-signing android-app-bundle
所以目前我们正在将 APK 导出到 Play 商店,我们正在使用Firebase 应用分发作为我们的测试轨道,但现在我们想开始使用 App bundles 而不是 APK 但是这里的问题 Firebase 应用分发不支持 App bundles,我想到了为测试轨道部署 APK,然后发布用于 Play 商店发布的应用程序包,但我认为这里存在风险,因为应用程序包未经测试并且可能包含无法发现的问题,我们的选择是将测试轨道迁移到内部在播放控制台中共享应用程序,有没有办法让 Firebase 应用程序分发支持 App Bundles 或任何其他选项?
android firebase android-app-bundle firebase-app-distribution
android ×10
apk ×4
google-play ×2
cordova ×1
crash ×1
firebase ×1
google-apps ×1
gradle ×1
mobile ×1
native ×1
sideloading ×1