Cordova:是否有可能为Android和ios平台提供不同的应用ID?

Mor*_*ger 20 android ios google-play cordova cordova-3

假设我有一个ID为com.StackOverflowExample.MyQuestion的Cordova应用程序,我使用CLI(cordova create)创建了Cordova 3 .我为我的应用添加了iOS和Android平台,并已将应用程序提交给Apple和Google Play.但是,现在,在将我的应用程序提交到Play之后,我似乎错误地将密码存放在我用来签署APK文件的密钥库中.我已经尝试了一切,我无法恢复它.

由于Google Play不允许我使用与之前由不同密钥库签名的APK相同的应用ID来签署提交给Play的后续APK,因此我知道我需要创建一个新的应用ID并在Android中重新开始.我意识到这将需要我的用户下载一个新的应用程序,但我现在别无选择.

我想避免的是将此问题溢出到Apple,我已经创建了所有证书,配置文件,密钥,签名请求等,并上传了一个IPA,其捆绑标识符与应用ID相同我提交给Google Play的第一张APK.

默认情况下,在使用CLI时,Cordova会使用您在运行时提供的单个应用程序ID添加您指定的任何平台cordova create.

我想知道的是:是否有可能在运行时cordova platform add自定义应用ID 下添加新平台,从而使不同的平台在同一个Cordova应用中具有不同的应用ID?

tab*_*dle 49

现在内置于CLI(最终):

在你的config.xml文件中 -

例:

<widget
    android-packageName="com.example.android"
    ios-CFBundleIdentifier="com.example.ios">
Run Code Online (Sandbox Code Playgroud)

资源:

https://github.com/apache/cordova-lib/blob/master/cordova-common/src/ConfigParser/ConfigParser.js#L99

  • 存储库和文件本身已被移动.当前的链接将[目前最新版本(https://github.com/apache/cordova-lib/blob/64fcf851b5dc15936e3ee1c6f5cac9fc63648aa2/cordova-common/src/ConfigParser/ConfigParser.js#L99-L107)或[主版本 - 可能改变未来](https://github.com/apache/cordova-lib/blob/master/cordova-common/src/ConfigParser/ConfigParser.js#L99-L107) (4认同)
  • 文件现在是cordova-common的一部分 - 新[location](https://github.com/apache/cordova-common/blob/master/src/ConfigParser/ConfigParser.js#L105-L113) (2认同)

ing*_*ham -3

是的,你可以这么做。他们有更多的选择,这取决于你如何构建你的 Android 应用程序(如何创建你的 apk)。

如果您使用 cordova 创建 apk,首先您必须解码您的 apk:

apktool d <apkname>.apk <directory to decode>
e.g: 
apktool d your.apk decodedir
Run Code Online (Sandbox Code Playgroud)

更改 AndroidManifest.xml 中的 package="com.StackOverflowExample.MyQuestion" 字符串。

对你的 apk 进行编码:

apktool b <directory> <new apk name>
e.g:
apktool b testdir/ your.repacked.apk
Run Code Online (Sandbox Code Playgroud)

如果您使用任何 Android 开发人员工具创建 apk,则可以更改相应 xml 文件 (AndroidManifest.xml) 中的 id,然后构建应用程序。