在 Delphi 里面新起一个跨平台的工程,假设命名它为 TestAndroid。如果一切都是默认操作的话,最后在 Build 一个安卓程序的时候,会在工程当前文件夹底下的 \android\debug\ 底下,有一个名为【AndroidManifest.xml】的文件。这个文件会打包进 APK里面,发布以后,手机安装这个 APK 的时候会用到。这个文件里面有一个这样的字符串:
【package="com.embarcadero.testAndroid"】
如果你想要把这里的 【embarcadero】换成你自己的名字,去 IDE 菜单 project\Option 里面,找到弹出来的窗口左边的 version 项目,看其右边一堆列表里面有一个 package(排在第一行),修改里面的包的名字。修改后,重新 Build 你的工程,再看前面说的那个 XML 文件,里面的 【package="com.embarcadero.testAndroid"】这一条就被改为你自己的名字了。
这个 XML 配置文件的来历:
首先,在 \android\debug\ 目录下的这个 AndroidManifest.xml 文件,其内容,是每次 Build 的时候,从工程的文件夹底下的一个 AndroidManifest.template.xml 文件复制过来的。
然后,这个工程文件夹底下的这个模板 xml 文件,根据【https://www.embarcadero.com/starthere/xe5/mobdevsetup/android/en/preparing_an_android_application_for_deployment.html】的说法,是创建工程的时候,从【 %AppData%\Embarcadero\BDS\<n.n>\AndroidManifest.xml
】底下复制过来的。
在我的 WIN7 电脑上找了一下,发现这个原始模板文件在 【C:\Users\administrator\AppData\Roaming\Embarcadero\BDS\19.0】这个目录底下。
按照上述官方页面的说法,【If you want your new projects to have a different starting AndroidManifest.template.xml file, edit this file.】
这个 AndroidManifest.xml 里面,下面部分还有一行:
【<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"】
我试试改掉这一行,把 Firemonkey 改为其它字符串。改掉后,新建一个跨平台的工程,选择 target 是安卓。然后发现工程文件夹底下的这个【AndroidManifest.template.xml】的内容确实被改掉了。
然后,把手机调成 USB 开发模式,插上去,运行。发现APP确实安装进手机里,但没出来APP界面。手动去点击这个 APP 的图标,发现APP闪退。
反复测试,发现,只要改了 【<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"】这一行,编译的 APP 就会闪退。改回去原样,重新编译,APP 就运行正常了。
所以,也不能随便乱改,虽然仅仅是个字符串的名字。至于原因,目前不清楚。我猜是不是APP的签名机制导致的?