Answers:
这适用于Phonegap 3.0.x至3.3.x。对于PhoneGap 3.4.0及更高版本,请参见下文。
答案发现部分在这里,在PhoneGap的文档。整个过程如下:
打开命令行窗口,然后转到/ path / to / your / project / platforms / android / cordova。
运行build --release
。这会在/ path / to / your / project / platforms / android / bin文件夹中创建一个未签名的发行版APK ,称为YourAppName-release-unsigned.apk。
按照android开发者官方文档中的说明对APK进行签名和对齐。
感谢@LaurieClark提供的链接(http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects /),以及发布它的博客作者,因为它使我步入正轨。
/path/to/your/project/platforms/android/ant-build
在PhoneGap 3.4.0中,您可以调用:
cordova build android --release
如果已在“ platforms / android”目录中设置“ ant.properties”文件,如下所示:
key.store=/Path/to/KeyStore/myapp-release-key.keystore
key.alias=myapp
然后,将提示您输入密钥库密码,并且输出文件(myapp-release.apk)最终位于已签名并对齐并准备部署的'platforms / android / ant-build'目录中。
ant.properties
,platforms/android
并将这两个属性放到其中。完美的工作,谢谢!
在Cordova 6.2.0中
cd cordova/ #change to root cordova folder
platforms/android/cordova/clean #clean if you want
cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any
先前的答案:
根据科尔多瓦5.0.0
{
"android": {
"release": {
"keystore": "app-release-key.keystore",
"alias": "alias_name"
}
}
}
并./build --release --buildConfig build.json
从目录运行platforms/android/cordova/
密钥库文件的位置是相对于的platforms/android/cordova/
,因此在上述配置.keystore
文件中,build.json
并且在同一目录中。
keytool -genkey -v -keystore app-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
继@ steven-anderson之后,您还可以在ant.properties中配置密码,因此该过程可以完全自动化
因此,如果您将platform \ android \ ant.properties放入以下内容
key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
我只是想知道很多事情,因为我遇到了同样的问题,但是在我的安装中,命令“ cordova”从不可用,而“ phone gap build android --release”只是忽略了platform / android / ant.properties。
因此,在我的平台过滤器内部,我找到了一个名为“ cordova”的文件夹,并且在其中有一个“ build”二进制文件,该文件接受--release参数,它要求我提供钥匙链,最后我签名并准备生产APK。
这在电话缺口站点的任何地方都从未记录过,坦白地说,现在我有点讨厌phonegap :(本来应该使事情变得容易,但一切都很复杂:(
构建PhoneGap Android应用程序以部署到Google Play商店
这些步骤适用于Cordova,PhoneGap或Ionic。唯一的区别cordova
是,对于您的特定情况,无论在何处致电,都应将其替换为phonegap
或ionic
。
完成开发并准备部署后,请按照以下步骤操作:
打开命令行窗口(在macOS和Linux上为终端,在Windows上为命令提示符)。
转至/ path / to / your / project /,我们将其称为“项目根目录”。
在项目根目录下,从您的插件集中删除“控制台”插件。
该命令是:cordova plugin rm cordova-plugin-console
仍在项目根目录下时,使用cordova build命令创建用于发行发行的APK。
该命令是:cordova build --release android
上面的过程android-release-unsigned.apk
在文件夹中创建一个名为ProjectRoot/platforms/android/build/outputs/apk/
按照https://developer.android.com/studio/publish/app-signing.html#signing-manually上的说明对APK进行签名和对齐。在
此步骤结束时,您可以将获得的APK上传到Play商店。
注意:无论是新手还是初学者,最后一步可能对我来说都有些混乱。一个人可能会遇到一些问题,并且可能对这些命令是什么以及在何处找到它们有疑问。
Q1。什么是jarsigner和keytool?
回答: Android App签名说明确实告诉您有关jarsigner和keytool的全部内容,但是如果您在命令行窗口中遇到“找不到命令错误”,则不会告诉您在哪里可以找到它们。
因此,如果您已将Java开发工具包(JDK)添加到PATH变量中,则只需按照《指南》中的命令运行即可。但是,如果您的PATH中没有它,则始终可以从JDK安装的bin文件夹中访问它们。
Q2。zipalign在哪里?
回答:极有可能找不到zipalign命令并收到“找不到命令错误”。您可能正在搜寻zipalign,在哪里可以找到它?
该的zipalign工具是Android SDK安装文件夹内。在macOS上,默认位置为user-name/Library/Android/sdk/
。如果你头部到该文件夹,你会发现一堆像其他的文件夹docs
,platform-tools
,build-tools
,tools
,add-ons
...
打开build-tools
文件夹。cd build-tools
。在这里,将有许多文件夹,这些文件夹根据您在Android SDK Manager中使用的构建工具链进行版本控制。ZipAlign在每个文件夹中都可用。我个人选择了带有最新版本的文件夹。打开任何。而不是像文档中提到的那样简单地输入。在Windows上,已经足够了。
在macOS或Linux上,您可能不得不使用./zipalign
zipalign
zipalign
我通过将签名的应用程序复制粘贴到与zipalign相同的目录中来使其工作。似乎即使给定路径,aapt.exe也找不到源文件。即,这不起作用zipalign -f -v 4 C:... \ CordovaApp-release-unsigned.apk C:... \ destination.apk它到达aapt.exeCordovaApp-release-unsigned.apk,冻结并按回车键无法将“ aapt.exeCordovaApp-release-unsigned.apk”识别为内部或外部命令,可操作程序或批处理文件。这确实zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk
我知道这个问题专门询问有关Phonegap 3.X的问题,但仅供参考,任何高于4.0.0的Phonegap版本默认都使用Gradle而不是Ant进行构建。要使用Ant代替Gradle,可以将其添加到config.xml中:
<preference name="android-build-tool" value="ant" />
现在,使用Gradle时,密钥库签名信息需要移到新位置(如本文所述)。创建一个名为“新文件release-signing.properties在同一文件夹“的build.gradle”文件,并把下面的内容里”:
storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
您可以尝试使用此命令,它应该生成并运行应用程序(因此应创建.apk):
phonegap local run android
<application android:debuggable="true"...
需要更改的位置<application android:debuggable="false"