Max*_*xim 26 android gradle cordova
与Cordova对应的新闻 5.0.0版已经准备就绪.我试图升级我的所有Android项目,就像通常那样.
要更新Cordova框架本身:
npm update -g cordova
Run Code Online (Sandbox Code Playgroud)
要在Android项目中更新库:
cordova platform update android
Run Code Online (Sandbox Code Playgroud)
使用"--release"选项构建新版本后:
cordova build android --release
Run Code Online (Sandbox Code Playgroud)
我只有未签名的版本.奇怪......
那么如何重用现有的密钥库(以前由keytool生成并由Cordova 4.0.0使用)来获取签名APK?
Max*_*xim 50
看起来Cordova 5.0.0使用Gradle构建自动化系统而不是Ant.因此,在构建期间不会使用文件"/platforms/android/ant.properties"中定义的密钥库的原始设置.因此,我们将获得未签名的APK.
要解决此问题,我们需要告诉Gradle也使用现有的密钥库.对build.gradle的研究为我们提供了有用的信息,我们需要提供signatureConfigs.
但是在这个文件中这样做是不明智的,因为它被标记为自动生成,它应该没有任何编辑.
所以最后我找到了解决它的方法.对象"signingConfigs"将从文件构造,文件名存储在cdvReleaseSigningPropertiesFile中.与文档相对应,此变量的默认值为" 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
Run Code Online (Sandbox Code Playgroud)
为保存在项目根目录中的密钥库指定了示例中的路径.它具有Windows风格...在Linux的情况下,您将需要使用单斜杠(不像上面的示例中那样使用双反斜杠).
此外,您可以设置自己的签名设置文件路径.要了解更多信息,请查看cordova文档的边缘版本.
Ron*_*ein 44
根据官方文档 (v5.1.1 +),我刚刚添加了一个build.json
{
"android": {
"release": {
"keystore": "android.keystore",
"storePassword": "storepassword",
"alias": "mykey",
"password" : "password",
"keystoreType": ""
}
}
}
Run Code Online (Sandbox Code Playgroud)
和我现有的android.keystore文件在根cordova文件夹中.
cordova build android --release会做的伎俩,不需要钩子,然后可以在./platform/android/build/outputs/apk中找到已知的apk文件作为android-release.apk
.
对于cordova 5.1.1+,请参阅Ronny Elflein r11lein回答/sf/answers/2168620541/
目前的答案是好的(通过@maxim),但我们希望保持平台特定的文件夹不受影响,因此我们可以将其保持在版本控制之外.所以我创建了这个Hook来自动复制android文件夹中的"release-signing.properties"文件.
因此,首先,将您的密钥库放在项目根目录中.然后在cordova项目的根目录中的文件夹config中创建"release-signing.properties".内容(示例中的storeFile路径是为保存在项目根目录中的密钥库指定的.它具有Windows样式...如果是Linux,则需要使用单斜杠):
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
Run Code Online (Sandbox Code Playgroud)
然后,添加如果不存在"hooks"文件夹中的"after_prepare"文件夹,并在其中创建一个名为"copy_assets.js"的文件.内容:
#!/usr/bin/env node
// Files to be copied, with source and destination
var ncp = require('ncp').ncp,
transfers = [
{
'source': './config/android/release-signing.properties',
'destination': './platforms/android/release-signing.properties'
}
];
ncp.limit = 16;
transfers.forEach(function(transfer) {
ncp(transfer.source, transfer.destination, function (err) {
if (err) {
return console.error(err);
}
console.log('====== Assets moved from ' + transfer.source + ' to ' + transfer.destination + ' ======');
});
});
Run Code Online (Sandbox Code Playgroud)
如果您没有在项目中使用ncp,请在项目文件夹根目录中打开命令promt并运行命令(您需要在项目根目录中创建一个packages.json文件):
npm install ncp
Run Code Online (Sandbox Code Playgroud)
然后,您可以运行:
cordova build android --release
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23980 次 |
| 最近记录: |