Delphi 10.4.2 CE 社区版支持 Android API-30,之一

51 篇文章 6 订阅
44 篇文章 0 订阅

Delphi 10.4.2 社区版,安装后,最高支持到安卓10,API-29。

但是,现在如果想发布到 Google play,需要:

1. 必须是 APP bundle 文件,也就是 AAB 文件,而不能是 APK;

2. 必须是最低支持 API-30;

上网搜索各种说法,最终还是自己解决。Delphi 盒子论坛的 "emailx45"提供了很多思路和帮助。

记录一下,如果有人遇到相似问题,可以看这里。

一. 如何编译 AAB:

一开始查到的网页是 Marco Cantu 的博客文章,说的是 Delphi 10.3.3,在 Delphi IDE 的菜单:Project / Options / Building / Delphi compiler / Compiling / 底下,有一个:

Other options -- Generate Android bundle file, 勾选。

然后在 Delphi 10.4.2 的相同位置,没有这个,只有:Generate Android 32bit and 64bit binaries 可以勾选。但勾选后,依然没有编译出 AAB 文件,仍然是 APK 文件。

后来才发现,其实只要在 IDE 窗口右边的 Project 名字底下的编译目标平台那里,除了选择 Android 64,还要选择 Configuration  为 Application store,它就会生成 AAB 文件

二. 如何提升编译出来的 AAB 的 API-LEVEL 为 30:

上述编译出来的 AAB 文件,上传到 Google Play ,会提示错误信息 API-LEVEL 为29,最低必须是 30.

Delphi 10.4.2 安装的目录底下有 Android SDK,目录:

C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\AndroidSDK-2525-21.0.40680.4203

这底下,有一个 【SDK Manager.exe】,双击运行它,出了一个 GUI 界面。里面列出了已经安装以及没有安装但可以勾选安装的一堆包,但最高就是 Android 10(API-29)。想装 API-30,这里没有。

上网搜,官方的说法是安装 Android Studio,然后用里面提供的 SDK Manager 来安装。

不想装 Android Studio,太大。

如何安装 Android SDK  支持 API-30

继续网上搜索,有提到使用命令行的 SDK Manager。

在 C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\AndroidSDK-2525-21.0.40680.4203 底下搜索 sdk manager,结果发现有两个 BAT 文件:

1. C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\AndroidSDK-2525-21.0.40680.4203\cmdline-tools\bin  底下有一个 sdkmanager.bat

2. C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\AndroidSDK-2525-21.0.40680.4203\tools\bin 底下有一个 sdkmanager.bat

执行第一个 sdkmanager.bat,结果出错。

执行第二个,也就是 tools 目录底下那个,而不是 cmdline-tools 底下那个,成功。

根据 google 官方文档的例子,在 CMD 里面,在 tools 目录下,手动执行以下命令,成功:

sdkmanager "platform-tools" "platforms;android-30"

成功后,可以看到,在执行成功之前,目录:

C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\AndroidSDK-2525-21.0.40680.4203\platforms

底下,只有一个 android-29 目录。

执行成功后,多了一个 android-30 目录。

到这里,为系统增加支持 API-30 的 SDK 成功。

三. Delphi 如何设置才能编译出支持 Android API-30 的 AAB 用于上传 Google Play 发布:

1. Delphi IDE 的菜单,Tools / Options ,打开一个窗口。

2. 在上述窗口中,在左侧找到 Deployment,拉开,底下有一个 SDK manager,选中这个 SDK manager,右侧出来的界面,里面有 Android-32bit 和 Android 64-bit,选中 64bit,右侧有多条选项,最底下一条是 API level,它指向一个目录。打开目录,发现是:

C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\AndroidSDK-2525-21.0.40680.4203\platforms\android-29

修改它指向 Android-30:

C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\AndroidSDK-2525-21.0.40680.4203\platforms\android-30

3. 重点来了,做完上述修改,build 然后 deploy,发现出来的 AAB,上传到 google,依然提示是 API-29 的。查看该 Project 目录底下的:AndroidManifest.xml 文件,其中有一句:

<uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="29" /> 

这里依然是 29,所以...........

4. 不知道 Delphi 哪里可以修改设置。那就直接修改模板文件:AndroidManifest.template.xml

模板文件里面有这么一行:

android:targetSdkVersion="%targetSdkVersion%"

直接将它写死为:

android:targetSdkVersion="30"

5. 再次编译,然后 deploy,成功。得到的 AAB 文件上传到 Google Play,通过。

----------------------------------------

折腾了 2 天。关于 Delphi 的资料,网上太少。

---------------------------------------

追加:

昨天搞得太晚,上传 google play 成功,就没再继续测试了。今天继续测试的结果如下:

 修改 AndroidManifest.xml 里面的 android:targetSdkVersion="29" 改为 android:targetSdkVersion="30",可以通过 google play 关于最低 API level 的要求。

但是,在我自己的真机上测试,把编译的 Configuration 从 Application store 改为 Development 后,插上 OPPO 手机,手机显示安卓版本 11,编译发布到真机上,安装 APP失败。显示的错误信息是:INSTALL_PARSE_FAILED_NO_CERTIFICATES

反复测试,确认这个 INSTALL_PARSE_FAILED_NO_CERTIFICATES 的问题是修改 android:targetSdkVersion="29" 导致。

因此,是否上传 google play 成功,但实际上从 google play 下载安装 APP 的时候,也会失败?需要进一步测试才能知道。

又及:

xamarin.android - Xamarin App - Can't deploy to Android 11 emulator - Stack Overflow

这篇文章提到

 "Apps that target Android 11 (API level 30) that are currently only signed using APK Signature Scheme v1 must now also be signed using APK Signature Scheme v2 or higher. Users can't install or update apps that are only signed with APK Signature Scheme v1 on devices that run Android 11."

也就是说,针对 API level 30 必须升级签名。看起来只能通过升级 Delphi 到 11 版来解决了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值