我有一个 cordova 应用程序,当它在设备中编译和运行时运行良好,但是当我将它上传到应用程序商店时。 “构建无效”。我还收到了来自苹果的邮件:iTunes Connect
Dear Developer,
We identified one or more issues with a recent delivery for your app, APP_NAME.
请更正以下问题,然后重新上传。
1.) This bundle is invalid - The Info.plist file for /Payload/APP_NAME.app/www/js/cordova-ios/tests/spec/unit/fixtures/org.test.plugins.dummyplugin/src/ios/Custom.framework is missing or could not be read.
2.) Invalid Bundle - The bundle at '/Payload/APP_NAME.app/www/js/cordova-ios/tests/spec/unit/fixtures/org.test.plugins.dummyplugin/src/ios/Custom.framework' does not contain a bundle executable.
3.) This bundle is invalid - The Info.plist file for /Payload/APP_NAME.app/www/js/cordova-ios/tests/spec/unit/fixtures/org.test.plugins.dummyplugin/src/ios/CustomEmbeddable.framework is missing or could not be read.
4.) Invalid Bundle - The bundle at '/Payload/APP_NAME.app/www/js/cordova-ios/tests/spec/unit/fixtures/org.test.plugins.dummyplugin/src/ios/CustomEmbeddable.framework' does not contain a bundle executable.
好像找不到原因。构建如何在本地设备上工作,但在构建、存档和上传时,它的构建无效。
提前致谢:)
我的配置文件内容:
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.docandtrack.app" version="2.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Doc and Track</name>
<description>
An App for Truckers to use the Doc and Track system
</description>
<author email="email" href="endpoint link">
Doc and Track
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="SplashScreen" value="screen" />
<platform name="android">
<allow-intent href="market:*" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="FadeSplashScreen" value="false" />
<preference name="SplashScreenDelay" value="1500" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<splash density="land-hdpi" src="res/android/screen.9.png" />
<splash density="land-ldpi" src="res/android/screen.9.png" />
<splash density="land-mdpi" src="res/android/screen.9.png" />
<splash density="land-xhdpi" src="res/android/screen.9.png" />
<splash density="port-hdpi" src="res/android/screen.9.png" />
<splash density="port-ldpi" src="res/android/screen.9.png" />
<splash density="port-mdpi" src="res/android/screen.9.png" />
<splash density="port-xhdpi" src="res/android/screen.9.png" />
<icon density="ldpi" src="res/android/icon-ldpi.png" />
<icon density="mdpi" src="res/android/icon-mdpi.png" />
<icon density="hdpi" src="res/android/icon-hdpi.png" />
<icon density="xhdpi" src="res/android/icon-xhdpi.png" />
<icon density="xxhdpi" src="res/android/icon-xxhdpi.png" />
<icon density="xxxhdpi" src="res/android/icon-xxxhdpi.png" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<preference name="BackupWebStorage" value="none" />
<preference name="deployment-target" value="10.0" />
<splash height="480" src="res/ios/screen/Default~iphone.png" width="320" />
<splash height="960" src="res/ios/screen/Default@2x~iphone.png" width="640" />
<splash height="1024" src="res/ios/screen/Default-Portrait~ipad.png" width="768" />
<splash height="2048" src="res/ios/screen/Default-Portrait@2x~ipad.png" width="1536" />
<splash height="768" src="res/ios/screen/Default-Landscape~ipad.png" width="1024" />
<splash height="1536" src="res/ios/screen/Default-Landscape@2x~ipad.png" width="2048" />
<splash height="1136" src="res/ios/screen/Default-568h@2x~iphone.png" width="640" />
<splash height="1334" src="res/ios/screen/Default-667h.png" width="750" />
<splash height="2208" src="res/ios/screen/Default-736h.png" width="1242" />
<splash height="1242" src="res/ios/screen/Default-Landscape-736h.png" width="2208" />
<icon height="20" src="res/ios/icon-20.png" width="20" />
<icon height="40" src="res/ios/icon-20@2x.png" width="40" />
<icon height="180" src="res/ios/icon-60@3x.png" width="180" />
<icon height="120" src="res/ios/icon-60@2x.png" width="120" />
<icon height="167" src="res/ios/icon-83.5@2x.png" width="167" />
<icon height="152" src="res/ios/icon-76@2x.png" width="152" />
<icon height="76" src="res/ios/icon-76.png" width="76" />
<icon height="80" src="res/ios/icon-40@2x.png" width="80" />
<icon height="60" src="res/ios/icon-60.png" width="60" />
<icon height="87" src="res/ios/icon-29@3x.png" width="87" />
<icon height="58" src="res/ios/icon-29@2x.png" width="58" />
<icon height="29" src="res/ios/icon-29.png" width="29" />
<icon height="114" src="res/ios/icon-57@2x.png" width="114" />
<icon height="57" src="res/ios/icon-57.png" width="57" />
<icon height="100" src="res/ios/icon-50@2x.png" width="100" />
<icon height="50" src="res/ios/icon-50.png" width="50" />
<icon height="144" src="res/ios/icon-72@2x.png" width="144" />
<icon height="72" src="res/ios/icon-72.png" width="72" />
<icon height="1024" src="res/ios/icon-1024.png" width="1024" />
</platform>
<plugin name="cordova-plugin-whitelist" spec="1" />
<plugin name="cordova-plugin-splashscreen" spec="~3.1.0" />
<plugin name="cordova-plugin-file-transfer" spec="~1.5.0" />
<plugin name="cordova-plugin-datepicker" spec="~0.9.3" />
<plugin name="cordova-plugin-statusbar" spec="~2.1.0" />
<plugin name="cordova-plugin-dialogs" spec="~1.2.0" />
<plugin name="docandtrack-image-plugin" />
<plugin name="com.transistorsoft.cordova.background-geolocation" spec="https://github.com/transistorsoft/cordova-background-geolocation.git" />
<edit-config file="*-Info.plist" mode="merge" target="NSMotionUsageDescription">
<string>Using the accelerometer increases battery-efficiency by intelligently toggling location-tracking only when the device is detected to be moving</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
<string>Photo library is required for storing documents</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
<string>Camera is required for storing documents</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSLocationAlwaysAndWhenInUseUsageDescription">
<string>Background location-tracking is required for route mapping</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
<string>Location tracking is required for route mapping</string>
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="NSLocationUsageDescription">
<string>Location tracking is required for route mapping</string>
</edit-config>
<preference name="cordova-background-geolocation-license" value="xxxxxxxxxxx" />
<preference name="cordova-background-geolocation-orderId" value="xxxxxxxxxxxx" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#2C3642" />
<preference name="StatusBarStyle" value="blackopaque" />
<preference name="DisallowOverscroll" value="true" />
<plugin name="cordova-plugin-inappbrowser" spec="~1.4.0" />
<plugin name="cordova-plugin-file" spec="^5.0.0" />
<plugin name="cordova-plugin-camera" spec="^4.0.2" />
<plugin name="cordova-android-support-gradle-release" spec="^1.3.0">
<variable name="ANDROID_SUPPORT_VERSION" value="27.+" />
</plugin>
<plugin name="cordova-plugin-sim" spec="~1.3.3" />
<plugin name="cordova-plugin-crosswalk-webview" spec="^2.2.0">
<variable name="XWALK_VERSION" value="23+" />
<variable name="XWALK_LITEVERSION" value="xwalk_core_library_canary:17+" />
<variable name="XWALK_COMMANDLINE" value="--disable-pull-to-refresh-effect" />
<variable name="XWALK_MODE" value="embedded" />
<variable name="XWALK_MULTIPLEAPK" value="true" />
</plugin>
<plugin name="cordova-plugin-device" spec="^2.0.2" />
<engine name="android" spec="^6.3.0" />
<engine name="ios" spec="~4.5.4" />
</widget>
更多信息:
我的cordova版本是8.0.0 安装的平台:
已安装的平台: 安卓6.3.0 iOS 4.5.4
我的 www 文件夹结构屏幕截图:
这是我的js文件夹内容:
最佳答案
问题是您的 js 文件夹中有整个 cordova-ios 库代码。由于您拥有所有 cordova-ios 代码,它还包含测试,其中包括 dummyplugin 测试,它具有未通过 Apple 验证的无效自定义框架。
您不必添加它,无论是 cordova-android 还是您那里的任何插件和库。现在删除整个 cordova-ios 文件夹并重新构建您的应用程序。
所需的 cordova-ios 代码和插件代码由 cordova prepare 命令生成并复制到正确的 appName/platforms/ios/www文件夹。
关于ios - cordova 应用程序中缺少框架的 Info.plist 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984925/
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序