我非常熟悉iOS应用程序的崩溃日志是如何被象征化的,但这个是一个令人头疼的问题.
我的MyApp版本为2345,通过TestFlight作为测试版发布,使用Xcode 7.2(7C68)中的普通存档然后上传到App Store流程.
当我在xcarchive中为二进制文件执行dwarfdump时,我得到以下结果:
dwarfdump --uuid MyApp.app/MyApp
UUID: 0BDA6D6F-3C0D-339E-842F-C2CB04199E10 (armv7) MyApp.app/MyApp
UUID: B2A69BEC-DF5E-33EA-A9E0-490EBF03074C (arm64) MyApp.app/MyApp
Run Code Online (Sandbox Code Playgroud)
这是dSYM文件的dwarfdump:
dwarfdump --uuid MyApp.app.dSYM
UUID: 0BDA6D6F-3C0D-339E-842F-C2CB04199E10 (armv7) MyApp.app.dSYM/Contents/Resources/DWARF/MyApp
UUID: B2A69BEC-DF5E-33EA-A9E0-490EBF03074C (arm64) MyApp.app.dSYM/Contents/Resources/DWARF/MyApp
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
但是,我通过Organize> Crashes for build 2345收到了一个崩溃,它具有不同的二进制UUID:
0x100054000 - 0x1000fffff myapp arm64 <3715db2438743cf5aac1742d9a214c2c> /var/mobile/Containers/Bundle/Application/7313BC02-3F90-4F94-82E2-CBDC941E5D68/MyApp.app/myapp
0x100144000 - 0x1001e7fff AWSCore arm64 <c2aa13236d0437b98194c0487db69e68> /var/mobile/Containers/Bundle/Application/7313BC02-3F90-4F94-82E2-CBDC941E5D68/blink.app/Frameworks/AWSCore.framework/AWSCore
....
Run Code Online (Sandbox Code Playgroud)
我确信崩溃报告是针对相同的构建,但UUID在这里是3715db2...我期待它的时候b2a69bec...
我确实启用了bitcode,所以我尝试从Organizer Archive页面下载dSYMs(尽管我已经构建了arm64,因此Apple不应该这样做)并且它在崩溃报告中为其他UUID /二进制文件检索了dSYM但是没有myapp二进制文件.实际上,myapp二进制文件是唯一没有下载相应dSYM的二进制文件!
所以有几个问题:
3715db2438743cf5aac1742d9a214c2cmyapp二进制文件的版本来自哪里?我希望淡出视图,因为它在父UIScrollview中滚动.淡出动画开始时,滚动视图停止滚动.当淡入淡出完成时,它会跳转到正确的位置.
我的淡出是通过animateWithDuration和块对象实现的,在scrollViewWillBeginDragging中检测到页面更改时触发.
有谁知道如何使它们同时发生?为了清楚起见,我没有"动画化"UIScrollView滚动 - 而是通过用户交互滑动来实现.
编辑:
这是我用来淡化UIView的代码.此代码位于UIViewController派生类中,该类是UIScrollView的委托.当用户开始拖动他的手指时,我想淡出subView.但是当用户开始拖动手指时,子视图会淡化并且滚动停止.在subView完全淡出后,滚动视图将捕捉到用户手指所在的位置.
-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView
{
[UIView animateWithDuration:0.5
animations:^
{
self.subView.alpha = 0.0f;
}
completion:^(BOOL finished) { }];
}
Run Code Online (Sandbox Code Playgroud) 在OpenGL(特别是OpenGL ES 2.0)中,每次绑定一个新的VBO时都需要调用glVertexAttribPointer吗?
例如:
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer1);
glVertexAttribPointer(ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, sizeof(vertexStruct), (void*)offsetof(vertexStruct,position));
glEnableVertexAttribArray(ATTRIB_POSITION);
glVertexAttribPointer(ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(vertexStruct), (void*)offsetof(vertexStruct,color);
glEnableVertexAttribArray(ATTRIB_COLOR);
glDrawElements(GL_TRIANGLE_STRIP, sizeof(indices)/sizeof(GLubyte), GL_UNSIGNED_BYTE, (void*)0);
// If vertexBuffer2 has the exact same attributes as vertexBuffer1
// is this legal or do the calls to glVertexAttribPointer (and glEnableVertexAttribArray)
// required again?
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer2);
glDrawElements(GL_TRIANGLE_STRIP, sizeof(indices)/sizeof(GLubyte), GL_UNSIGNED_BYTE, (void*)0);
Run Code Online (Sandbox Code Playgroud)
我知道有些VAO可以解决不必调用glVertexAttribPointer但我想知道在OpenGL中这样做是否可行?
我知道如何检测你的iOS应用程序是否被盗版的问题已经出现了几十次,而且普遍的共识是:
但是,那些成为(从谷歌借用一个术语)吸血鬼的海盗呢?那些盗用你的应用程序并且实际上花费你钱的人,因为你的应用程序非常依赖服务器端?是否有推荐的方法来检测是否有人在没有付费的情况下使用您的应用程序?Apple是否为付费应用本身提供任何收据验证(不是应用内购买)?
我在App Store中看到允许您下载其他游戏的游戏.它不是应用程序切换到App Store下载其他游戏,而是在应用程序本身内部启动嵌入式App Store.
Zoo Country是执行此操作的应用程序的示例.
我知道将某人带到应用程序商店下载另一个应用程序的唯一方法是做这样的事情,但这会切换应用程序:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]];
Run Code Online (Sandbox Code Playgroud)
Zoo Country如何嵌入App Store?