小编Gre*_*reg的帖子

为什么Gradle只包含我的库中具有项目依赖性的类

我正在构建一个依赖于自定义库的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文件用于我的库,否则我无法工作.

java android gradle android-studio

8
推荐指数
1
解决办法
4970
查看次数

旋转设备时如何让我的inputAccessoryView调整大小?

我正在附加一个UIToolbarUITextViewinputAccessoryView,为了添加一个按钮来解除键盘.这种方法效果很好,当设备处于纵向模式时看起来很正确.但是,当设备处于横向模式时,我无法确定如何将工具栏的大小调整为用于工具栏的较低高度.

我在文本视图的委托-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)

不过,我在横向模式下从这段代码中得到了奇怪的行为.如果我在横向模式下开始编辑,则工具栏具有横向高度,但"完成"按钮从屏幕上拉出一半.如果我然后旋转到纵向模式,完成按钮将被绘制在正确的位置,当我旋转回横向模式时它仍然保持在正确的位置.

如果我在纵向模式下开始编辑,工具栏将以纵向高度绘制,但"完成"按钮将绘制在正确的位置.如果我然后旋转到横向模式,工具栏将保持纵向高度,但"完成"按钮仍至少绘制在正确的位置.

有关如何在设备旋转时调整大小的建议吗?我真的希望有一种更自动的方式,而不是在一个视图控制器的旋转事件中手动插入高度幻数.

uitextview uikeyboard ios

7
推荐指数
1
解决办法
4214
查看次数

我可以在没有调试的情况下从Xcode运行iPhone应用程序吗?

是否可以让Xcode从Xcode 4.6自动在我的iOS设备上启动应用程序,而无需将其调试器附加到应用程序?我正在开发一个自动构建系统,因此不能手动启动应用程序.

我在Product - > Perform Action菜单下找到了Run Without Building,但仍然附加了调试器.我可以编辑方案让Xcode等到应用程序在连接调试器之前手动启动,但这基本上与我想要的相反.

xcode ios

6
推荐指数
3
解决办法
6229
查看次数

如何使用Javascript在Safari中生成按键事件?

如何以编程方式从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属性似乎也没有任何效果.

javascript safari

5
推荐指数
2
解决办法
1万
查看次数

我可以使用Mockito对通过反射调用的方法进行存根吗?

我正在尝试为我的代码编写单元测试,该代码使用反射对要存根进行测试的对象调用隐藏方法:

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不是我要创建的对象,因此无法更改其方法的可访问性。

java reflection unit-testing mockito

5
推荐指数
1
解决办法
1748
查看次数

如何在调试器中查看os_trace消息?

我正在尝试将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)

就像文章描述的那样,但我没有看到任何关于活动的消息.

xcode ios lldb activity-tracing

5
推荐指数
0
解决办法
693
查看次数

为什么AVSampleBufferDisplayLayer会因操作中断(-11847)而失败?

我正在使用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失败之前,我没有收到任何这些错误。

h.264 ios video-toolbox

5
推荐指数
1
解决办法
1181
查看次数

在Visual Studio中的单个构建操作中构建项目的多个配置

我正在尝试为Firefox构建一个XPCOM扩展,我需要为Firefox 4和Firefox 5构建单独的dll,以链接其不同版本的xulrunner SDK.有没有办法可以使用单个vcproj从单个项目的不同配置生成两个输出文件?配置之间的唯一区别是include和lib路径中xulrunner SDK的目录.

据我所知,VS2010一次只能构建一个配置.我已经尝试为该项目添加一个新平台,但它只会让我添加预定义的平台(x64,Itanium).

谢谢你的任何建议.

msbuild visual-studio visual-c++

4
推荐指数
1
解决办法
1727
查看次数

如何找到键盘未覆盖的视图部分 (UIModalPresenationStyleFormSheet)?

我有一个视图控制器显示一个带有 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

4
推荐指数
1
解决办法
896
查看次数

如何为我的流畅API构建接口层次结构?

我正在开发一个流畅的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)

java generics fluent-interface

4
推荐指数
1
解决办法
331
查看次数

如何使用IVsBuildPropertyStorage添加MSBuild导入?

我正在尝试以编程方式将导入任务添加到.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

谢谢.我很感激我能得到的任何建议.

msbuild msbuild-task visual-studio

1
推荐指数
1
解决办法
1320
查看次数