我正在构建一个依赖于自定义库的Android应用程序,Gradle只在我使用项目依赖项时才愿意包含我的自定义库,而不是在我使用文件依赖项来包含库的jar文件时.我正在使用API levee 19 SDK构建我的应用程序和库.
失败的dependencies部分来自build.gradle:
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile files('libs/MyLibrary.jar')
}
Run Code Online (Sandbox Code Playgroud)
如果我使用上面的dependencies部分,MyLibrary.jar中的类都不包含在构建apk文件中,通过提取其classes.dex和运行dexdump进行验证.我还验证了所有类都存在于我正在使用的jar文件中.
如果我使用以下dependencies部分,那么MyLibrary中的所有类都包含在apk文件中:
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile project(':MyLibrary')
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Android Studio 0.4.0,Gradle 1.9,我认为Gradle插件是0.7.1.
这里发生了什么?我真的想用API级别18 sdk构建我的应用程序以测试兼容性,但除非我能够将jar文件用于我的库,否则我无法工作.
我正在附加一个UIToolbar我UITextView的inputAccessoryView,为了添加一个按钮来解除键盘.这种方法效果很好,当设备处于纵向模式时看起来很正确.但是,当设备处于横向模式时,我无法确定如何将工具栏的大小调整为用于工具栏的较低高度.
我在文本视图的委托-textViewShouldBeginEditing:方法中添加了工具栏:
if (!textView.inputAccessoryView) {
UIToolbar *keyboardBar = [[UIToolbar alloc] init];
keyboardBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;
keyboardBar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissKeyboard:)];
[keyboardBar setItems:[NSArray arrayWithObjects:spaceItem, doneButton, nil]];
[spaceItem release];
[doneButton release];
[keyboardBar sizeToFit];
textView.inputAccessoryView = keyboardBar;
[keyboardBar release];
}
Run Code Online (Sandbox Code Playgroud)
不过,我在横向模式下从这段代码中得到了奇怪的行为.如果我在横向模式下开始编辑,则工具栏具有横向高度,但"完成"按钮从屏幕上拉出一半.如果我然后旋转到纵向模式,完成按钮将被绘制在正确的位置,当我旋转回横向模式时它仍然保持在正确的位置.
如果我在纵向模式下开始编辑,工具栏将以纵向高度绘制,但"完成"按钮将绘制在正确的位置.如果我然后旋转到横向模式,工具栏将保持纵向高度,但"完成"按钮仍至少绘制在正确的位置.
有关如何在设备旋转时调整大小的建议吗?我真的希望有一种更自动的方式,而不是在一个视图控制器的旋转事件中手动插入高度幻数.
是否可以让Xcode从Xcode 4.6自动在我的iOS设备上启动应用程序,而无需将其调试器附加到应用程序?我正在开发一个自动构建系统,因此不能手动启动应用程序.
我在Product - > Perform Action菜单下找到了Run Without Building,但仍然附加了调试器.我可以编辑方案让Xcode等到应用程序在连接调试器之前手动启动,但这基本上与我想要的相反.
如何以编程方式从Safari中运行的Javascript代码生成按键事件?看起来WebKit使用DOM 3级模型从Javascript创建键盘事件,而DOM 3级键盘事件模型不支持keypress事件.还有其他方法可以使用吗?
我正在寻找尽可能纯粹的Safari/WebKit DOM解决方案.我真的不想修改网页,我也不想在外部库上添加依赖项.我需要激活任何现有的按键处理程序,因此无法添加新的处理程序并直接调用它.
看起来WebKit具有在其UIEvent类中定义的keypress事件的keyCode和charCode属性,但它们是只读的.有没有办法设置这些属性?以下不起作用:
var evt = document.createEvent('UIEvents');
evt.initUIEvent('keypress', true, true, window, 0);
evt.keyCode = 114; // 'r'
evt.charCode = 114;
alert("keyCode = " + evt.keyCode + ", charCode = " + evt.charCode); // both 0
Run Code Online (Sandbox Code Playgroud)
在调用initUIEvent时设置detail属性似乎也没有任何效果.
我正在尝试为我的代码编写单元测试,该代码使用反射对要存根进行测试的对象调用隐藏方法:
methodUnderTest(Arg argument) {
Method toCall = Arg.class.getMethod("toCall");
Object val = toCall.invoke(argument);
// Do stuff with val...
}
Run Code Online (Sandbox Code Playgroud)
是否可以创建一个可传递给此方法的模拟Arg,使我可以对toCall()调用进行存根处理?
Arg不是我要创建的对象,因此无法更改其方法的可访问性。
我正在尝试将iOS 8的新活动跟踪功能添加到我的应用程序中,但我无法看到来自我的跟踪的任何消息.我正在使用Xcode 6.2 beta 4在运行iOS 8.2 beta 4的iPod touch上驱动我的应用程序.
os_activity_initiate("activity", OS_ACTIVITY_FLAG_DEFAULT, ^{
os_trace_debug("test tracing");
doAThing(); // breakpoint on this line
});
Run Code Online (Sandbox Code Playgroud)
当我到达断点时,我试试
(lldb) thread info
thread #11: tid = 0x3b41, ...
Run Code Online (Sandbox Code Playgroud)
就像文章描述的那样,但我没有看到任何关于活动的消息.
我正在使用AVSampleBufferDisplayLayer解码和显示从服务器流式传输的H.264视频。当我的应用进入后台并返回到前台时,解码过程就会搞砸并且AVSampleBufferDisplayLayer失败。我看到的错误是:
H.264 decoding layer has failed: Error Domain=AVFoundationErrorDomain
Code=-11847 "Operation Interrupted" UserInfo=0x17426c500
{NSUnderlyingError=0x17805fe90 "The operation couldn’t be completed.
(OSStatus error -12084.)",
NSLocalizedRecoverySuggestion=Stop other operations and try again.,
NSLocalizedDescription=Operation Interrupted}
Run Code Online (Sandbox Code Playgroud)
还有其他人遇到这样的问题AVSampleBufferDisplayLayer吗?这是什么意思?
AVSampleBufferDisplayLayer收到错误后,我尝试销毁并创建一个新错误,但是随后我开始从H.264解码器收到其他错误:
Error Domain=AVFoundationErrorDomain Code=-11821 "Cannot Decode"
UserInfo=0x1740e9700 {AVErrorMediaSubTypeKey=(1635148593),
NSLocalizedFailureReason=The media data could not be decoded. It may be damaged.,
NSUnderlyingError=0x174247680 "The operation couldn’t be completed. (OSStatus error -12909.)",
AVErrorMediaTypeKey=vide,
AVErrorPresentationTimeStampKey=CMTime: {7/30 = 0.233},
NSLocalizedDescription=Cannot Decode}
Run Code Online (Sandbox Code Playgroud)
在AVSampleBufferDisplayLayer失败之前,我没有收到任何这些错误。
我正在尝试为Firefox构建一个XPCOM扩展,我需要为Firefox 4和Firefox 5构建单独的dll,以链接其不同版本的xulrunner SDK.有没有办法可以使用单个vcproj从单个项目的不同配置生成两个输出文件?配置之间的唯一区别是include和lib路径中xulrunner SDK的目录.
据我所知,VS2010一次只能构建一个配置.我已经尝试为该项目添加一个新平台,但它只会让我添加预定义的平台(x64,Itanium).
谢谢你的任何建议.
我有一个视图控制器显示一个带有 UITextView 的视图,我想在键盘出现时调整视图的大小,以便键盘不会覆盖 UITextView。我几乎在所有情况下都能正常工作。据我所知,我仍然在 iPad 上看到一些奇怪的东西,只有当视图控制器出现在 ModalPresentationStyleFormSheet 中时,而且只有在 LandscapeRight 方向上。
我的视图控制器的 -keyboardWillShow 的相关部分:
// We'll store my frame above the keyboard in availableFrame
CGRect availableFrame = self.view.frame;
// Find the keyboard size
NSDictionary *userInfo = [notification userInfo];
NSValue keyboardFrameScreenValue = userInfo[UIKeyboardFrameBeginUserInfoKey];
CGRect keyboardFrameScreen = [keyboardFrameScreenValue CGRectValue];
CGRect keyboardFrame = [self.view convertRect:keyboardFrameScreen fromView:nil];
CGSize keyboardSize = keyboardFrame.size;
// Figure out how much of my frame is covered by the keyboard
CGRect screenBounds = [self.view convertRect:[UIScreen mainScreen].bounds
fromView:nil];
CGRect myBoundsScreen = [self.view …Run Code Online (Sandbox Code Playgroud) keyboard screen-rotation modalviewcontroller ios uimodalpresentationstyle
我正在开发一个流畅的API,并尝试利用Java的通用方法来提供一个优雅的API来处理我的用户的类型转换.由于类型擦除,我遇到了一些麻烦.
这是我的界面的简化版本,显示了我遇到的问题:
interface Query<T extends Query<T>> {
T execute();
Query<T> appendClause();
}
interface A<T extends A> extends Query<T> { }
class AImpl implements A<A> {
A execute() { ... }
Query<A> appendClause() { ... }
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误AImpl.appendClause().编译器说它A不在其范围内,应该扩展Query.据我所知,我的声明,AImpl实现A<A>该方法A 不延长Query<A>.
在这里得到另一个答案后,我尝试通过更改AImpl为:分解任何潜在的无法解析的递归:
class AImpl implements A<AImpl> {
AImpl execute() { ... }
Query<AImpl> appendClause() { ... }
}
Run Code Online (Sandbox Code Playgroud)
现在我收到一个错误编译A,说"类型参数T不在其范围内".
有人对如何处理这个问题有任何建议吗?Java的泛型让我很头疼.
编辑
我把A的定义改为了
interface A<T extends A<T>> extends …Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式将导入任务添加到.csproj文件,但我不想使用Microsoft.Build.BuildEngine对象来执行此操作,因为VS将弹出有关正在修改的项目文件的警告视觉工作室.
我已经看过几页[1] [2]建议IVsBuildPropertyStorage接口让我访问.csproj文件的MSBuild部分,但是我无法弄清楚如何做到这一点,或者它是否真的可能真的.看起来我需要指定我想要访问的属性的名称,但我不知道如何解决这个问题.为"导入"属性调用GetPropertyValue()不会返回已设置的项目文件的任何内容,我希望最终结果如何显示:
EnvDTE.Project proj = ...;
var sol = Package.GetGlobalService(typeof(VsSolution)) as IVsSolution;
IVsHierarchy hier;
sol.GetProjectOfUniqueName(p.UniqueName, out hier);
var storage = hier as IVsBuildPropertyStorage;
string val;
storage.GetPropertyValue("Import", String.Empty,
(uint)_PersistStorageType.PST_PROJECT_FILE, out val);
// val is null
Run Code Online (Sandbox Code Playgroud)
[1] https://mpfproj.svn.codeplex.com/svn/9.0/Tests/UnitTests/ProjectTest.cs
[2] http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/e1983591-120a-4a2f-A910-e596dd625e68
谢谢.我很感激我能得到的任何建议.
ios ×5
java ×3
msbuild ×2
xcode ×2
android ×1
generics ×1
gradle ×1
h.264 ×1
javascript ×1
keyboard ×1
lldb ×1
mockito ×1
msbuild-task ×1
reflection ×1
safari ×1
uikeyboard ×1
uitextview ×1
unit-testing ×1
visual-c++ ×1