我升级到Android工作室3.1,我得到以下错误:
Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner), sources=[Unknown source file], tool name=Optional.of(D8)}
Run Code Online (Sandbox Code Playgroud)
这是我的gradle配置:
compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
//...
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,我的目标27已经领先于它抱怨的24个?我该怎么做才能解决这个问题?如果我改为1.8 java不会让我失去很多客户?为什么我在升级android studio之前没有收到此错误.
我不知道这是关于我最近投入的LifecycleObserver类,它是在kotlin中,现在我将其更改为java但在清理项目后仍然得到相同的错误:
public class LifeCycleAwareObserver implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onAppBackgrounded() {
AnalyticsUtils.trackStartSession(true);
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppForegrounded() {
AnalyticsUtils.trackStartSession(false);
}
Run Code Online (Sandbox Code Playgroud)
}
如何追踪错误的来源,以便我可以修复它?
这是我的版本依赖项:
project.ext {
firebase_version …
Run Code Online (Sandbox Code Playgroud) 对于Mac上的git版本1.9.3(Apple Git-50)如何删除git子模块?我正在阅读很多过时的信息,许多开发人员告诉我他们不会工作.目前的方式是什么?会git deinit pathToSubModule
做的伎俩?
我认为可行的步骤在这里,但评论说他们不会.
让我解释一下我目前的情况以及我需要完成的工作.我已经安装了快速存储库并将其添加到我的项目的子模块中.此代码已经签入,其他人正在使用它.我现在需要做的是分叉相同的Quick存储库并将其托管在我公司拥有的更安全的github上(所以完全是其他私有github).在分叉之后我想将该fork添加为gitSubmodule并让它替换我之前安装的当前Quick子模块.
更新:我已经读过以下是关于最新git版本的正确方法请确认一下?
To remove a submodule added using:
git submodule add blah@blah.com:repos/blah.git lib/blah
Run:
git rm lib/blah
That's it.
For old versions of git (circa ~1.8.5) use:
git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah
Run Code Online (Sandbox Code Playgroud) 我决定是否使用方形或Gson的Moshi来序列化和反序列化模型数据.
我总是不喜欢Gson的一件事是我认为它使用的反射在Android上可能很慢?莫希也使用反射吗?
moshi vs Gson的优点和缺点是什么?
我觉得它们很相似.以此语句为例,创建一个typeAdapter:
class CardAdapter {
@ToJson String toJson(Card card) {
return card.rank + card.suit.name().substring(0, 1);
}
@FromJson Card fromJson(String card) {
if (card.length() != 2) throw new JsonDataException("Unknown card: " + card);
char rank = card.charAt(0);
switch (card.charAt(1)) {
case 'C': return new Card(rank, Suit.CLUBS);
case 'D': return new Card(rank, Suit.DIAMONDS);
case 'H': return new Card(rank, Suit.HEARTS);
case 'S': return new Card(rank, Suit.SPADES);
default: throw new JsonDataException("unknown suit: " + card);
} …
Run Code Online (Sandbox Code Playgroud) 存在用于快速框架公共回购这里.我希望能够将它分成私有企业GitHub存储库.分叉将允许所有分支保留.
另一种方法是克隆repo并将只有一个分支推送到企业,但后来我失去了没有源/源的所有分支.
更新:我最终将所有分支推入企业git.如果你只是做一个git push yourRemoteName myNewBranch那么它会将代码推送到企业git上的那个分支,同时在企业GitHub中创建该分支.
从匕首2 文档我注意到你可以有一个带@Singleton
注释的类.标记类的目的是什么,@Singleton
因为我试图在我的代码中执行此操作,但不生成单例对象.我不清楚用这个注释标记我的类的用途.
请从文档中关注以下声明:
注入类上的@Singleton注释也可用作文档.它提醒潜在的维护者,这个类可能被多个线程共享.*
@Singleton
class CoffeeMaker {
...
}
Run Code Online (Sandbox Code Playgroud)
更新:在查看froger_mcs答案后,我看到在Dagger 2中你可以通过模块或构造函数注入提供注射.因此,可以注入以下类,尽管不在模块中,
@Singleton
public class MyClass {
@Inject
public MyClass() {
}
}
Run Code Online (Sandbox Code Playgroud)
在这个版本中,构造函数是为我们注入的,在Android活动中,您只需执行以下操作即可获得:
@Inject
MyClass myClass;
//then in onCreate actually inject(this) from your graph of course.
Run Code Online (Sandbox Code Playgroud) 通过这样的标签的android sdk看时注意到:
<eat-comment/>
Run Code Online (Sandbox Code Playgroud)
它是干什么用的?例如,对它的引用如下:
https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml
我最近升级了android studio但我无法找到android studio 3.1中报告的以下问题的来源:
Warning: The rule `-keep public class *extends java.lang.annotation.Annotation {
Run Code Online (Sandbox Code Playgroud)
这个警告似乎可能被切断,而且缺少信息.但它看起来像一个proguard问题,虽然我在构建调试变量时收到此警告.我检查了我的proguard文件,我没有完全匹配的行.我搜索了整个项目.关于根本原因的任何想法?
我有时会看到android gradle文件中的apt依赖范围是什么?
一个例子看起来像这样?
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
defaultConfig {
applicationId "org.ligboy.test.card.module1"
minSdkVersion 14
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
final DAGGER_VERSION = '2.0.2'
dependencies {
compile "com.google.dagger:dagger:${DAGGER_VERSION}"
apt "com.google.dagger:dagger-compiler:${DAGGER_VERSION}"//what is this scope
provided 'org.glassfish:javax.annotation:10.0-b28'
}
Run Code Online (Sandbox Code Playgroud)
在顶级build.gradle文件中,它具有以下全局依赖关系:
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
}
Run Code Online (Sandbox Code Playgroud)
注意在依赖关系部分有一个apt范围?我只知道编译,包和提供的范围.编译包括编译时和程序包中的依赖项,前提是说只在编译时包含库并在打包时丢弃它,因此它不包含在最终构建中.和Package是相反的,它包括包中的依赖,而不是在编译时.但是什么是apt依赖范围,我们显然需要com.neenbedankt.android-apt才能工作,所以我知道它基于android.
更新:为什么我不能使用提供的依赖范围而不是apt范围?他们有什么不同?
我为那些需要更多信息的人创建了一个关于匕首依赖范围的教程.
我试着搜索,但我仍然有点失落.我通常通过Activity
via接口或a 来片段化片段通信BroadcastReceiver
.
无论如何,我的问题是什么用getTargetFragment
?有人可以提供用例或只是一个简单的例子,以便我能理解它的用法吗?
我在gradle中有两个构建版本但由于某种原因,每当我将以下标志更改为false时,我都会收到标题错误消息:
ext.enableCrashlytics = false
Run Code Online (Sandbox Code Playgroud)
错误本身完成如下:
Process: com.mobile.myapp.staging, PID: 5439
java.lang.RuntimeException: Unable to create application com.mobile.myapp.UI.myappApplication: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4710)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install …
Run Code Online (Sandbox Code Playgroud)