我有一个在Android上发布的Unity3D游戏,到目前为止它运行良好。但是,Android Vitals仪表板现在报告很多崩溃。这是详细信息:
By Android version: Android 9 4500 100.0%
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
java.lang.Error: FATAL EXCEPTION [Thread-360]
Unity version : 2017.3.1p3
Device model : Google Pixel
Device fingerprint: google/sailfish/sailfish:9/PQ2A.190305.002/5240760:user/release-keys
Caused by
at lt.b (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:2)
at ls.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:1)
at lu.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:18)
at com.google.android.gms.ads.internal.util.ar.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:10)
at kx.a (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:7)
at kx.run (com.google.android.gms.policy_ads_fdr_dynamite@30000@30000.238272502.238272502:2)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
at ac.loadClass (com.google.android.gms.dynamite_dynamiteloader@16089081@16.0.89 (100400-239467275):4)
at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
Run Code Online (Sandbox Code Playgroud)
我的AndroidResolverDependencies.xml档案:
<dependencies>
<packages>
<package>com.android.support:customtabs:[26.0.0, 27.2.0[</package>
<package>com.android.support:support-v4:[26.0.0, 27.2.0[</package>
<package>com.google.android.gms:play-services-ads:17.2.0</package>
<package>com.google.android.gms:play-services-analytics:11.8.0</package>
<package>com.google.android.gms:play-services-base:[10.2.1, 12.1.0[</package>
<package>com.google.android.gms:play-services-location:[10.2.1, 12.1.0[</package>
<package>com.google.firebase:firebase-messaging:[10.2.1, 12.1.0[</package>
</packages> …Run Code Online (Sandbox Code Playgroud) 我在这里看到了很多关于Facebook Graph API的问题,但我仍然没有找到使用它进行简单"登录"/"注销"操作的解决方案.看起来单一登录风格造成的混乱比利益更多.
我想知道是否有可能出现以下情况:
accessToken/ expirationDate创建).authorize:delegate:方法使用SSO执行登录(应用程序进入后台,登录在"全局"范围(Facebook App/Mobile Safari)中进行,请求用户凭据.accessToken和expirationDate保存到NSUserDefaults).logout:方法(现在已经退出,都accessToken和expirationDate从被删除NSUserDefaults)我意识到,当我打电话时logout:,我确实accessToken从我的App范围注销Facebook(无效),而不是从global范围(Facebook App/Mobile Safari)注销.在5.)当我尝试再次登录时,应用程序转到后台,并且像往常一样在Facebook App/Mobile Safari中再次登录尝试,但是我得到一个屏幕,说我已经登录:
你已经授权了
....按"好"继续.登录为...(不是吗?).
对于刚刚在我的应用程序中注销的用户来说,这是一种奇怪的行为.我的问题是:
"我可以从我的应用程序内部真正退出facebook(我的意思是'全球'范围)吗?这会影响使用facebook凭据的其他应用程序.但是,如果我不能这样做,我怎么能避免'奇怪'行为'在上面描述?
谢谢
我已经google了一下,但找不到一个简单的Image Viewer类可以在我的MonoTouch应用程序中使用.
我不需要显示图像缩略图也不需要显示完整的相册(带有多张照片).
我只需要一个图像查看器来显示UIImageView,允许常见的全屏/缩放操作.
显然,这种观众可以使用来实现UIViewController与子类UIGestureRecognizer,UIScrollView并UINavigationBar挂羊头卖狗肉,但我不想推倒重来.有没有人知道可用的开源组件?
在新的Xamarin Component Store中托管这样的组件也很有用
谢谢
假设我定义了以下协议:
//用户界面对象的基本协议:
@protocol UIObjectProtocol <NSObject>
@property (assign) BOOL touchable;
@end
Run Code Online (Sandbox Code Playgroud)
//对象持有的用户界面对象的基本协议holder:
@protocol UIHeldObjectProtocol <UIObjectProtocol>
@property (readonly) id holder;
@end
Run Code Online (Sandbox Code Playgroud)
以下类层次结构:
//用户界面对象的基类,用于合成touchable属性
@interface UIObject : NSObject <UIObjectProtocol> {
BOOL _touchable;
}
@end
@implementation UIObject
@synthesize touchable=_touchable;
@end
Run Code Online (Sandbox Code Playgroud)
在这一点上,一切都很好.然后我创建一个UIObject名为的子类UIPlayingCard.本质上,UIPlayingCard符合UIObjectProtocol它,因为它的超类也是如此.
现在假设我想要UIPlayingCard遵守UIHeldObjectProtocol,所以我做了以下事情:
@interface UIPlayingCard : UIObject <UIHeldObjectProtocol> {
}
@end
@implementation UIPlayingCard
-(id)holder { return Nil; }
@end
Run Code Online (Sandbox Code Playgroud)
请注意,UIPlayingCard符合UIHeldObjectProtocol,传递符合UIObjectProtocol.但是我得到了编译器警告UIPlayingCard:
警告:属性'touchable'需要定义方法'-touchable' …
Xamarin 发布了对async/的支持,await它真正简化了移动平台中响应式UI的开发.我想利用它并从现在开始使用async/await东西来提高代码的编程水平.
但是,由于我对C#比较新,并且在我无法在我的代码中找到'hooks'之前没有使用async/ await我可以调用async方法.我知道事件处理程序是典型的地方(IoC发生的地方),但想象一下以下场景:
我想在加载ViewController时启动后台任务(而不是按下按钮时).
async Task PerformMyTaskAsync ()
{
// ...
await ... // another async API
// ...
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// .. initialize UI
await PerformMyTaskAsync ();
}
Run Code Online (Sandbox Code Playgroud)
很显然,我不能等待为PerformMyTaskAsync在ViewDidLoad因为ViewDidLoad既不是异步方法,也不是事件处理程序.
当视图控制器加载(或出现,无论如何)时,启动后台任务的"替代"方法是什么?
我想转换JSON字符串
"{ \"birthday\": \"1988-03-18\", \"address\": { \"state\": 24, \"city\": 8341, \"country\": 1 } }"
Run Code Online (Sandbox Code Playgroud)
至
"{ \"address\": { \"city\": 8341, \"country\": 1, \"state\": 24 }, \"birthday\": \"1988-03-18\" }"
Run Code Online (Sandbox Code Playgroud)
注意:我没有使用排序版本进行通信(因为密钥顺序并不重要),我需要一个排序版本来执行本地测试(通过比较JSON字符串).
编辑: I4V指出一个使用Json.Net的解决方案,我宁愿使用一个不需要包含任何第三方库的解决方案(实际上我在我的应用程序中使用内置的System.Json)
我张贴由I4V +一些测试提供的解决方案要点这里.谢谢你们.
CONTEXT
我正在开发目前在iPad设备上运行的填字游戏应用程序.Apple最近发布了iPhone 6和iPhone 6+设备,幸运的是它拥有更大的屏幕,因此可以合法地运行我的游戏(我已经在iPhone 5S设备上测试了我的游戏,如果发现用户运行起来不舒服在这样的屏幕尺寸).
通过这种方式,我决定将我的应用程序迁移到Universal二进制文件,其中包括对iPhone 6,iPhone 6 Plus和iPad设备的支持.
题
或至少:
我正在使用Unity3D制作的游戏,由于二进制文件的大小,我正在考虑仅针对64位设备的想法(因此,避免使用胖二进制文件中的armv7和armv7s切片).由于第三方框架(特别是谷歌),Bitcode目前不是一个选项,因此64位定位是我的最后手段.
在平台状态中,据说"所以今后,我们将允许您向商店提交64位应用程序,从今年晚些时候的iOS 9开始."这让我觉得它目前是可行的.
我见过一些关于黑客的线索,UIRequiredDeviceCapabilities但没有成功.
我的Xcode版本是Version 7.1.1 (7B1005).
有人知道提交64个应用程序的实际步骤是什么吗?
编辑:
让我说清楚一下:
我的应用程序是目前在App Store都可以使用armv7和arm64架构.
arm64-only更新(降级,删除支持armv7)?armv7设备的用户在App Store中查找我的应用,会发生什么?用户将被允许下载我的应用程序的前一版本(同时支持一armv7和arm64)?谢谢
由于App Store上的100MB空中下载限制,我不想丢失移动设备上的应用程序安装.
这样,在我向App Store提交应用程序更新之前,我总是检查App Store File SizesiTunes Connect中当前版本的部分,以确保二进制文件大小不会超过OTA下载限制.
以下是iTunes Connect为我上一次的应用程序构建显示的内容,该内容已在App Store上发布:
以下是App Store在iPhone 5S设备上显示的内容:
鉴于此,我可以假设App Store上显示的"大小"字段是指应用程序的"安装大小".
Apple是否根据"安装大小"(显示给App Store页面上的用户显示为"大小")或App Store File SizesiTunes Connect中显示的"下载大小"来应用OTA下载限制?
我将我的iPhone和SDK升级到iOS 4.0.1,现在我的应用程序运行方式与在iOS 3.x中运行的方式不同.
我的应用程序使用UIImagePickerController与自定义cameraOverlayView(我将在这篇文章中压制).重点是我需要在全屏模式下看到iphone相机.为了直接解决这个问题,我会提供一些代码和截图来解释发生了什么.
我创建了一个基于视图的应用程序中使用名为"CameraTransform" Xcode的模板项目,所以我得到了两个类:CameraTransformAppDelegate和CameraTransformViewController,OK!在我CameraTransformViewController的viewDidAppear方法中,我输入以下代码:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
//[self configurePicker_FirstAttempt:picker]; Use this!
//[self configurePicker_SecondAttempt:picker]; Use this too!
[self presentModalViewController:picker animated:YES];
}
- (void)configurePicker_FirstAttempt:(UIImagePickerController*) picker {
picker.showsCameraControls = NO;
picker.navigationBarHidden = YES;
// not needed (use defaults)
//picker.toolbarHidden = YES;
//picker.wantsFullScreenLayout = YES;
}
- (void)configurePicker_SecondAttempt:(UIImagePickerController*) picker {
// Transform values for full screen support
CGFloat cameraTransformX = …Run Code Online (Sandbox Code Playgroud) ios ×4
iphone ×4
c# ×2
xamarin.ios ×2
xcode ×2
.net ×1
64-bit ×1
admob ×1
android ×1
app-store ×1
async-await ×1
camera ×1
crash ×1
download ×1
facebook ×1
image ×1
ios4 ×1
json ×1
logout ×1
objective-c ×1
ota ×1
photo ×1
properties ×1
protocols ×1
screen ×1
size ×1
sorting ×1
string ×1
transform ×1
uiview ×1
viewer ×1
xamarin ×1