AppCenter无法构建Android应用捆绑包(aab)

问题描述 投票:1回答:1

我创建了一个Xamarin Forms应用程序,当它在我的计算机上构建时,它会生成一个AAB。当我启用签名时,那么AAB文件被Google Play商店接受并可以发布。

AppCenter已被设置为构建相同的解决方案,我启用了构建Android应用程序捆绑包的选项(可通过在 构建 标签)。)AAB option

当我查看构建日志时,它似乎确实构建了Android应用包。

...
##[section]Finishing: Build Xamarin.Android project
##[section]Starting: Sign Android App Bundle
==============================================================================
Task         : Android Signing
Description  : Sign and align Android APK files
Version      : 1.122.0
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613717)
==============================================================================
(node:1767) Warning: Use Cipheriv for counter mode of aes-256-ctr (repeated 11 times)
[command]/usr/bin/jarsigner -keystore /Users/runner/runners/2.170.0/work/1/s/.certs/keystore.jks -storepass *** -keypass *** -verbose -sigalg SHA256withRSA -digestalg SHA-256 -signedjar /Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/bin/Release/com.example.test-Signed.aab /Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/bin/Release/com.example.test-Signed.aab.unsigned ***
   adding: META-INF/CPANDROI.SF
   adding: META-INF/CPANDROI.RSA
  signing: BundleConfig.pb
... (removed a lot of files from the logging)
  signing: base/manifest/AndroidManifest.xml
  signing: base/native.pb
  signing: base/resources.pb
>>> Signer
    X.509, CN="REMOVED, O=REMOVED, L=REMOVED, S=REMOVED, C=NL"
    [trusted certificate]

jar signed.

Warning: 
The signer's certificate is self-signed.
[command]/Users/runner/Library/Android/sdk/build-tools/24.0.0/zipalign -v 4 /Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/bin/Release/com.example.test-Signed.aab.unaligned /Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/bin/Release/com.example.test-Signed.aab
Verifying alignment of /Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/bin/Release/com.example.test-Signed.aab (4)...
      50 META-INF/MANIFEST.MF (OK - compressed)
   27883 META-INF/CPANDROI.SF (OK - compressed)
   56907 META-INF/CPANDROI.RSA (OK - compressed)
... (removed a lot of files from the logging)
13130472 base/manifest/AndroidManifest.xml (OK - compressed)
13132552 base/native.pb (OK - compressed)
13132664 base/resources.pb (OK - compressed)
Verification succesful
##[section]Finishing: Sign Android App Bundle
##[section]Starting: Sign APK

我想构建和登录都是正常的,但我猜测在构建过程中出现了一些问题。复制捆绑文件到暂存 阶段。在此之前的 复制构建文件到暂存 阶段运行,并显示以下输出。

##[section]Starting: Copy build files to staging
==============================================================================
Task         : Command Line
Description  : Run a command line with arguments
Version      : 1.1.3
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613735)
==============================================================================
[command]/bin/bash -c /usr/bin/find . -path '*/bin/*' ! -path '*/obj/*' -type f ! -name '*-Signed.apk' ! -name '*-armeabi-v7a.apk' ! -name '*-arm64-v8a.apk' ! -name '*-x86.apk' ! -name '*-x86_64.apk' -name '*.apk' -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" " | xargs -L 1 -I{} cp -R -v {} /Users/runner/runners/2.170.0/work/1/a/build
(node:1777) Warning: Use Cipheriv for counter mode of aes-256-ctr (11 times)
./CrossPoint.Xpact.Android/bin/Release/com.example.test.apk -> /Users/runner/runners/2.170.0/work/1/a/build/com.example.test.apk
##[section]Finishing: Copy build files to staging

它似乎将APK复制到暂存文件夹中 然后它试图为Android应用包(AAB)做同样的事情。

##[section]Starting: Copy bundle files to staging
==============================================================================
Task         : Command Line
Description  : Run a command line with arguments
Version      : 1.1.3
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613735)
==============================================================================
[command]/bin/bash -c mkdir -p /Users/runner/runners/2.170.0/work/1/a/bundle && ls -LR && /usr/bin/find . -path '*/obj/*' -type f -name '*.aab' -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" " | xargs -L 1 -I{} cp -R -v {} /Users/runner/runners/2.170.0/work/1/a/bundle
(node:1787) Warning: Use Cipheriv for counter mode of aes-256-ctr (11 times)
Example.Common.DataTypes
Example.Identity.Common
Example.Test
Example.Test.Android
Example.Test.UWP
Example.Test.iOS
Example.Test.sln
Example.ruleset

./Example.Common.DataTypes:
ExampleType.cs
Example.Common.DataTypes.csproj
AnotherType.cs
bin
obj

... (whole lot of files removed from this logging)

./Example.Test.iOS/obj:
Example.Test.iOS.csproj.nuget.dgspec.json
Example.Test.iOS.csproj.nuget.g.props
Example.Test.iOS.csproj.nuget.g.targets
project.assets.json
project.nuget.cache
##[section]Finishing: Copy bundle files to staging

似乎转储了所有文件,但没有复制实际的AAB文件。我不知道为什么它找不到AAB文件,因为它似乎确实在obj文件夹中创建了AAB文件。这在 从Xamarin.Android项目中构建bundle。 阶段。

_BuildApkEmbed:
  /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java -Xmx1G -jar /Library/Frameworks/Xamarin.Android.framework/Libraries/xbuild/Xamarin/Android/bundletool.jar build-bundle --modules obj/Release/android/bin/base.zip --output obj/Release/android/bin/com.example.test.aab --config /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmpb29e9af.tmp 
_CopyPackage:
  Copying file from "/Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/obj/Release/android/bin/com.example.test.aab" to "/Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/bin/Release/com.example.test.aab".
_CreateAndroidDebugSigningKey:
  /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/keytool -genkeypair -alias androiddebugkey -storepass android -keypass android -keystore "/Users/runner/.local/share/Xamarin/Mono for Android/debug.keystore" -dname "CN=Android Debug,O=Android,C=US" -keyalg RSA -validity 10950 -storetype pkcs12 
_ResolveAndroidSigningKey:
  Creating "obj/Release/android_debug_keystore.flag" because "AlwaysCreate" was specified.
_Sign:
  /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/jarsigner -keystore "/Users/runner/.local/share/Xamarin/Mono for Android/debug.keystore" -storepass android -keypass android -digestalg SHA-256 -sigalg SHA256withRSA -signedjar bin/Release/com.example.test-Signed.aab /Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/obj/Release/android/bin/com.example.test.aab androiddebugkey 
  jar signed.
  The signer's certificate is self-signed.
  Signed android package ''
Done Building Project "/Users/runner/runners/2.170.0/work/1/s/Example.Test.Android/Example.Test.Android.csproj" (PackageForAndroid;SignAndroidPackage target(s)).

Build succeeded.

我不知道可能出了什么问题,为什么最后一步会转储我所有的文件,而不是把AAB复制到暂存文件夹中。

xamarin.android visual-studio-app-center android-app-bundle
1个回答
0
投票

由于我不能在评论中分享图片,所以将此作为答案发布。

看起来你没有任何错误。当你在Distribute页面中查看build时,尝试点击下载下拉按钮,是否能够看到下载bundle按钮,如图所示。App center screenshot showing "Download bundle"

如图所示:如果是,就下载捆绑包,这就是你的AAB文件。


0
投票

AppCenter支持确认了这个问题,并提交了一个bug-report。它只发生在Xamarin 10.3上,降级到Xamarin 10.2确实可以解决这个问题。2020年6月16日,我收到了一封邮件,说这个bug已经被修复,现在也可以再次使用Xamarin 10.3了。

© www.soinside.com 2019 - 2024. All rights reserved.