我正在使用.jar库在该库中编写Android库(.aar).
为了避免依赖重复,我使用ShadowJar插件进行重新打包,如下所示:
task shadowJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
System.out.println("Relocating packages...")
relocate 'retrofit' , 'com.codecraft.retrofit'
relocate 'org.simpleframework.xml', 'com.codecraft.org.simpleframework.xml'
relocate 'com.squareup.okhttp' , 'com.codecraft.com.squareup.okhttp'
}
Run Code Online (Sandbox Code Playgroud)
在使用Android库(.aar)的应用程序中,我具有下面显示的库的依赖性,仅用于测试我没有依赖性重复问题.
dependencies {
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta1'
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在Android上运行应用程序时,我遇到了以下错误
错误:警告:忽略匿名内部类的InnerClasses属性错误:(com.bea.xml.stream.util.CircularQueue $ 1)没有Error:关联的EnclosingMethod属性.这个类可能是由一个没有以现代.class文件格式为目标的Error:编译器生成的.推荐的错误:解决方案是使用最新的编译器错误从源代码重新编译类,而不指定任何"-target"类型选项.忽略错误的结果:此警告是对此类的反射操作将错误地错误:指示它 不是内部类.错误:处理"javax/xml/XMLConstants.class"时出错:错误:错误建议或错误使用核心类(java.*或javax.*)错误:未构建核心库时.错误:这通常是由于在使用IDE(例如Error:Eclipse)时无意中在应用程序的项目中包含了一个核心库文件Error :. 如果你确定你不是故意定义一个Error:core class,那么这就是错误的最可能解释:继续.错误:但是,您实际上可能正在尝试在核心错误:命名空间中定义一个类,您可能已采用该命名空间,例如,错误:来自非Android虚拟机项目.这将是最大错误:肯定不起作用.它至少会危害错误:您的应用程序与该平台的未来版本的兼容性.错误:合法性通常也是有问题的.错误:如果您真的打算构建一个核心库 - 这只是错误:适合作为创建完整虚拟机的一部分错误:分发,而不是编译应用程序 - 然后使用错误:" - core-library "选项可以禁止显示此错误消息.错误:如果您继续使用"--core-library"但实际上是错误:构建应用程序,那么请预先警告您的应用程序错误:在某些时候仍然无法构建或运行.请错误:为愤怒的客户做好准备,例如,他们发现您的错误:应用程序在升级其操作错误:系统后停止运行.你应该为这个问题负责.错误:如果您合法地使用恰好位于Error:core包中的某些代码,那么最简单的安全替代方法是Error:重新打包该代码.也就是说,将有问题的类移动到Error:您自己的包命名空间.这意味着它们永远不会出现错误:与核心系统类冲突.JarJar是一个可以帮助错误的工具:你在这方面的努力.如果你发现你不能这样做,那么错误:这表明你所在的路径最终会出错:导致痛苦,痛苦,悲伤和悲伤.错误:1错误; 中止:app:transformClassesWithDexForDebug FAILED错误:任务':app:transformClassesWithDexForDebug'的执行失败.
com.android.build.api.transform.TransformException:java.lang.RuntimeException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:java.lang.UnsupportedOperationException
请注意,如果我只添加改进依赖项,则不会出现此问题
dependencies {
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
}
Run Code Online (Sandbox Code Playgroud)
是什么原因以及如何解决这个错误?
我写了一个使用Lambda表达式的简单示例.代码工作正常,直到我对它进行单元测试.一旦我运行单元测试,它就会因为下面的错误而失败
Android Studio 2.2预览版3
编译器发生异常(1.8.0_76-release).在检查错误数据库(http://bugs.java.com)是否有重复项后,请通过Java错误报告页面(http://bugreport.java.com)向Java编译器提交错误.在报告中包含您的计划和以下诊断.谢谢.com.sun.tools.javac.code.Symbol $ CompletionFailure:找不到java.lang.invoke.MethodType的类文件
:app:compileDebugJavaWithJavac FAILED
FAILURE:构建因异常而失败.
出了什么问题:任务执行失败':app:compileDebugJavaWithJavac'.
编译失败; 请参阅编译器错误输出以获取详细信
尝试:使用--stacktrace选项运行以获取堆栈跟踪.使用--info或--debug选项运行以获取更多日志输出.
建筑失败
RxDefer.java
import rx.Observable;
import rx.Subscriber;
class RxDefer {
private Observable<Integer> getInt() {
return Observable.create(new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super Integer> aSubscriber) {
if (aSubscriber.isUnsubscribed())
return;
aSubscriber.onNext(42);
aSubscriber.onCompleted();
}
});
}
void createDefer() {
Observable.defer(RxDefer.this::getInt).subscribe(aInteger -> {
System.out.println(String.valueOf(aInteger));
});
}
}
Run Code Online (Sandbox Code Playgroud)
RxDeferTest.java
@RunWith(PowerMockRunner.class)
@PrepareForTest(RxDefer.class)
public class RxDeferTest {
@Test
public void createDefer() {
RxDefer defer = new …
Run Code Online (Sandbox Code Playgroud) 我的Android设备上遇到了一个奇怪的问题(或者可能是意外的行为).
问题是我正在我的DialogFragment中监听配置更改,如下所示:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Do something secret here :)
}
Run Code Online (Sandbox Code Playgroud)
我添加android:configChanges
了Activity,它负责显示对话框片段
<activity
android:name=".SecretActivity"
android:configChanges="orientation|screenSize"
android:windowSoftInputMode="adjustResize" />
Run Code Online (Sandbox Code Playgroud)
事实上,当我旋转设备时,我正从系统中获得回调,但并非在所有情况下.正如你在onConfigurationChanged( )
旋转90度时所看到的图片中所看到的那样,以及360度,在其他情况下它不会被调用.
这是预期的行为吗?如果是,我如何检测所有旋转(90,180,270,360)?
我正在创建基于XMPP协议的android聊天应用程序.Smack用作XMPP客户端库.在应用程序中,消息存储在SQLite数据库中.
如何实现消息缓存(例如在Facebook messenger中完成)?如果服务器下载20上有新消息并向用户显示,如果没有来自本地数据库的显示.如果用户再次向上滚动,请检查数据库和服务器并显示下20条消息.
有可用的开源示例吗?