我使用英特尔 XDK 创建混合应用程序。我将 PlayStore 的应用程序 ID 用作 gkg4.pro.obs
现在,最近我使用 Cordova 切换到 Visual Studio 2015,但是,每当我尝试使用此 ID(即 gkg4.pro.obs)时,编译时都会出现退出代码 8 错误。
如果我正在尝试 gkg.pro.obs 即 id 中没有数字,它工作正常。
我无法将 ID 更改为它已经存在的应用程序。
这个问题有什么解决办法吗?请帮忙
我使用英特尔 XDK 创建混合应用程序。我将 PlayStore 的应用程序 ID 用作 gkg4.pro.obs
现在,最近我使用 Cordova 切换到 Visual Studio 2015,但是,每当我尝试使用此 ID(即 gkg4.pro.obs)时,编译时都会出现退出代码 8 错误。
如果我正在尝试 gkg.pro.obs 即 id 中没有数字,它工作正常。
我无法将 ID 更改为它已经存在的应用程序。
这个问题有什么解决办法吗?请帮忙
这是 Cordova 的限制,Cordova 要求包名称必须类似于com.company.Name。Visual Studio 使用 Cordova CLI 构建和打包应用程序,因此应用程序 ID 不是格式 com.company.Name 会引发构建错误。请注意 VS2013 CPT3.0 是 Cordova 4.0.0
解决方法: 在 C:\Users\[username]\.cordova\lib\npm_cache\cordova-android\3.6.4\package\bin\lib\create.js(Cordova 的一部分)中检查 Android 包名称,您可以修改要使用的包名称验证正则表达式 (!/^[a-zA-Z 0-9 ]+(.[a-zA-Z0-9][a-zA-Z0-9_]*)+$/.test( package_name)) 在下面的方法中。
function validatePackageName(package_name) {
//Make the package conform to Java package types
//Enforce underscore limitation
if (!/^[a-zA-Z]+(\.[a-zA-Z0-9][a-zA-Z0-9_]*)+$/.test(package_name)) {
return Q.reject('Package name must look like: com.company.Name');
}
//Class is a reserved word
if(/\b[Cc]lass\b/.test(package_name)) {
return Q.reject('class is a reserved word');
}
return Q.resolve();
}
进行上述更改后,清理解决方案并重建项目。
请注意,这只是临时修复,安装 Cordova 将覆盖此文件。