首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Cordova命令行界面创建签名的APK文件?

如何使用Cordova命令行界面创建签名的APK文件?
EN

Stack Overflow用户
提问于 2014-10-19 18:19:23
回答 5查看 303.6K关注 0票数 179

我制作了一个名为checkStatus的示例应用程序。现在我想创建一个签名的APK文件。这样我就可以把它安装在不同的设备上进行测试。

为此,我在谷歌上找到了这个documentation

根据文档,我切换到我的项目目录并运行以下命令:

代码语言:javascript
复制
keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000

运行上述命令后,我在projectRoot/key-name.keystore获得了一个名为key-name.keystore的文件。

然后我将该文件复制粘贴到projectRoot/platforms/android/key-name.keystore中。

之后,我创建了一个名为ant.properties的文件,并将其保存在projectRoot/platforms/android中。

我在文件中编写了以下代码:

代码语言:javascript
复制
key.store=projectRoot/key-name.keystore
key.alias=myApp

在那之后,我运行以下命令来释放

代码语言:javascript
复制
Cordova builds android --release

它抛出了以下错误:

代码语言:javascript
复制
 /home/projectRoot/platforms/android/cordova/node_modules/q/q.js:126
                throw e;
                      ^
Error code 1 for command: ant with args: release,-f,/home/projectRoot/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen

 Error: /home/projectRoot/platforms/android/cordova/build: Command failed with exit code 8
at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:753:16)
at Process.ChildProcess._handle.onexit (child_process.js:820:5)

所以这一次,我修改了ant.properties文件中的key.store值,如下所示。

代码语言:javascript
复制
 key.store=/home/projectRoot/platforms/android/key-name.keystore

我再次运行了cordova build android --release命令。它会抛出相同的错误。

谁能告诉我我做错了什么?

EN

回答 5

Stack Overflow用户

发布于 2016-02-09 22:40:25

@malcubierre for Cordova 4(及更高版本)的更新-

创建一个名为release-signing.properties的文件并将其放入APPFOLDER\platforms\android文件夹

文件内容: edit after =适用于除第二行以外的所有内容

代码语言:javascript
复制
storeFile=C:/yourlocation/app.keystore
storeType=jks
keyAlias=aliasname
keyPassword=aliaspass
storePassword=password

然后,此命令应构建一个发布版本:

代码语言:javascript
复制
cordova build android --release

更新-这对我不起作用Cordova 10 with android 9 -构建替换了release-signing.properties文件。我必须创建一个build.json文件,并将其放到应用程序文件夹中,与根目录相同。这就是内容--如上替换:

代码语言:javascript
复制
{
"android": {
    "release": {
       "keystore": "C:/yourlocation/app.keystore",
        "storePassword": "password",
        "alias": "aliasname",
        "password" : "aliaspass",
        "keystoreType": ""
    }
}
}

运行它,它将在安卓文件夹中生成一个release-signing.properties

票数 132
EN

Stack Overflow用户

发布于 2016-01-14 11:12:29

在当前的documentation中,我们可以使用keystore指定一个build.json:

代码语言:javascript
复制
{
     "android": {
         "debug": {
             "keystore": "..\android.keystore",
             "storePassword": "android",
             "alias": "mykey1",
             "password" : "password",
             "keystoreType": ""
         },
         "release": {
             "keystore": "..\android.keystore",
             "storePassword": "",
             "alias": "mykey2",
             "password" : "password",
             "keystoreType": ""
         }
     }
 }

然后,使用--buildConfig参数执行命令,如下所示:

代码语言:javascript
复制
cordova run android --buildConfig
票数 57
EN

Stack Overflow用户

发布于 2016-08-02 05:38:56

在苹果电脑上,我生成了两个.sh文件,一个用于首次发布,另一个用于更新:

代码语言:javascript
复制
#!/bin/sh
echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n"
printf "Project dir : "
read DIR
printf "Project key alias : "
read ALIAS
cd $DIR/
cordova build --release android
cd platforms/android/build/outputs/apk/
keytool -genkey -v -keystore my-release-key.keystore -alias $ALIAS -keyalg RSA -keysize 2048 -validity 10000
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS
zipalign -v 4 android-release-unsigned.apk signedApk.apk

更新你的应用程序:

代码语言:javascript
复制
#!/bin/sh
echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n"
printf "Project dir : "
read DIR
printf "Project key alias : "
read ALIAS
cd $DIR/
cordova build --release android
cd platforms/android/build/outputs/apk/
rm signedApk.apk
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS
zipalign -v 4 android-release-unsigned.apk signedApk.apk

假设你在你的主文件夹或位于你的应用文件夹顶部的文件夹中。确保正确设置chmod以使用此脚本。然后:

代码语言:javascript
复制
./ionicToApk.sh # or whatever depending of the name of your file, in CLI

您的签名apk将位于您的应用程序文件夹/platforms/android/build/outputs/apk/ as SignedApk.apk中请确保使用第一个脚本定义的正确密钥别名和密码

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26449512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档