升级到API 22并支持lib版本22后,我收到以下警告:
警告:与依赖项"com.android.support:support-annotations"冲突.app(22.0.0)和测试app(21.0.3)的已解决版本有所不同.
Gradle本身更宽容,但Android Studio并没有那么多.
我没有使用21.0.3声明的依赖项...是使用21.0.3的依赖库之一而谷歌忘了用批处理的其余部分更新它?
我build.gradle
的附加功能被删除了
android {
compileSdkVersion 22
buildToolsVersion '22'
defaultConfig {
applicationId "com.REDACTED.android"
minSdkVersion 14
targetSdkVersion 22
renderscriptSupportModeEnabled true
versionName '1.0.0'
versionCode 100
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
zipAlignEnabled true
signingConfig signingConfigs.debug
}
}
dependencies {
provided 'org.projectlombok:lombok:1.16.2'
googleCompile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:support-v13:22.0.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.android.support:palette-v7:22.0.0'
compile 'com.android.support:support-annotations:22.0.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:6.1.0'
compile …
Run Code Online (Sandbox Code Playgroud) 我的android项目使用lombok 1.16.0构建正常,但是一旦我将我的依赖项更改为目标1.16.2,我在使用lombok注释时到处都会出现以下错误:
Error:(20, 1) error: package javax.annotation does not exist
Android SDK不包含所有javax包.我想知道的是,如果这是1.16.2中的错误,还是我现在必须添加一个依赖javax.annotation
?
注意:这是在带有Lombok插件0.8.8的Android Studio中
我有一个使用lombok的基于Gradle的项目.我已将此项目导入IntelliJ IDEA 14.1(使用导入外部模型导入方法).我可以在Gradle中没有问题地运行JUnit4单元测试,但IntelliJ似乎在看到Lombok生成的Getters时遇到了问题.这使我无法在IDEA中运行测试.
为了确保它不是一个设置问题,我创建了一个非常简单的项目,并确认在简单的测试项目中出现了同样的问题.
我的版本:Gradle:gradle-2.3-all通过Gradle包装器
Intellij IDEA:IU-141.713
Lombok插件:0.9.2
我在这里错过了什么?
更新通过看不出我的意思是身体不可见.我是说这个:
/home/meeee/workspace/junit-lombok-idea/lib/src/main/java/com/example/jumbokea/Main.java
Error:(10, 11) java: cannot find symbol
symbol: method setIntField(int)
location: variable sc of type com.example.jumbokea.SomeClass
Error:(12, 41) java: cannot find symbol
symbol: method getIntField()
location: variable sc of type com.example.jumbokea.SomeClass
Error:(14, 33) java: constructor AnotherClass in class com.example.jumbokea.AnotherClass cannot be applied to given types;
required: no arguments
found: float,com.example.jumbokea.SomeClass
reason: actual and formal argument lists differ in length
Error:(16, 46) java: cannot …
Run Code Online (Sandbox Code Playgroud) 我正在使用ApkToolAndroidManifest.xml
在APK文件中进行解码并且它工作得很好但是我怎么能再次编码它,就像之前编码一样,应用了一些更改后呢?例如(在我的情况下)更改应用程序标签.
我有2个模块的一个项目:一个应用程序(JAVA)与构建类型debug
,release
以及enterprise
和科特林库(release
以及debug
由应用程序使用).
我正在使用AndroidX并且在我的内容中有以下内容gradle.properties
:
android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)
如果我通过Gradle运行项目,我会收到一堆编译错误(预期).但是,如果我尝试在Android Studio(3.2 Beta 5)中使用它,特别是在尝试与Gradle模型同步时,我会得到:
Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@release/compileClasspath': …
Run Code Online (Sandbox Code Playgroud) android android-studio android-studio-3.2 androidx android-jetifier
我正在使用一个使用AccountManager存储帐户和凭据的Android应用程序.我遇到的一个问题是,即使我将一堆String值传递给AccountManager的addAccountExplicitly数据包.
我已经检查以确保捆绑包不是空的,并且在添加帐户之前它包含值.大部分时间都是这种情况,但每当我查询这些值时,我偶尔会得到null.
在我刚删除帐户并重新添加后,空返回值更常见.
我在OnAccountsUpdateListener实现的onAccountsUpdated方法中进行查询,因此应该添加该帐户并且很好,对吧?
谢谢你的帮助
AuthenticatorActivity
// in the AuthenticatorActivity
Bundle userData = new Bundle();
userData.put (k1, v1);
userData.put (k2, v2);
userData.put (k3, v3);
userData.put (k4, v4);
userData.put (k1, v1);
Account a = new Account ("acc name", "com.account.type");
AccountManager am = AccountManager.get(this);
OnAccountsUpdateListener listener = new OnAccountsUpdateListener() {
@Override
public void onAccountsUpdated(Account[] accounts) {
Account mine = findAccount(accounts, account); // match account name
notifySignedIn(mine); // tell …
Run Code Online (Sandbox Code Playgroud) 所以我想获取YouTube视频的元数据(比如说这个:) https://www.youtube.com/watch?v=qlTA3rnpgzU
.
我要对它进行编码并将其包装在另一个URL中,如下所示: http://www.youtube.com/oembed?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DqlTA3rnpgzU&format=json
我的界面定义如下所示:
public interface YoutubeApi {
@GET ("oembed")
YoutubeMetaData metaData (@Query (QUERY_VIDEO_URL) final String url,
@Query(QUERY_FORMAT) final String alwaysJson);
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,花花公子,但我不想在这里指定除JSON之外的任何格式(format = json是这个url的固定部分).
有没有办法在我的接口声明中指定它并将我的接口减少到:
public interface YoutubeApi {
@GET ("oembed")
@Magic ("format=json")
YoutubeMetaData metaData (@Query (QUERY_VIDEO_URL) final String url);
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
在您声明重复之前,请阅读问题.
只有最新版本的构建工具才会出现这种情况.旧版本不显示此问题.我已经尝试过在其他问题上提供的解决方案,用于多种定义@AnimRes
.到目前为止没有任何帮助,这就是我发布一个新问题的原因.相同症状,不同原因,不同解决方案.
我可以在使用buildToolsVersion 22.0.1
时构建没有问题,但是当我切换到buildToolsVersion 23
构建失败时出错
意外的顶级异常:com.android.dex.DexException:多个dex文件定义Landroid/support/annotation/AnimRes; 在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)在com.android.dx.merge.DexMerger.mergeClassDefs (DexMerger.java:535)在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)在com.android.dx.merge.DexMerger.merge(DexMerger.java:189)在com.android. dx.command.dexer.Main.mergeLibraryDexBuffers在com.android.dx.command.dexer.Main(Main.java:502)在com.android.dx.command.dexer.Main.runMonoDex(Main.java:334).运行(Main.java:277)在com.android.dx.command.dexer.Main.main(Main.java:245)在com.android.dx.command.Main.main(Main.java:
这是我的依赖项列表:
provided 'org.projectlombok:lombok:1.16.4'
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:support-v13:23.0.0'
compile 'com.android.support:cardview-v7:23.0.0'
compile 'com.android.support:palette-v7:23.0.0'
compile 'com.google.code.findbugs:jsr305:2.0.1'
compile 'com.google.guava:guava:18.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.4'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.squareup:otto:1.3.8'
compile 'org.jsoup:jsoup:1.7.2'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.getbase:floatingactionbutton:1.10.0'
compile 'com.nispok:snackbar:2.10.10'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.2'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.12'
compile 'de.hdodenhof:circleimageview:1.3.0'
Run Code Online (Sandbox Code Playgroud)
为了确保每个人(包括Espresso)使用相同版本的support-annotations
我在我的构建文件中有以下内容:
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.0.0'
} …
Run Code Online (Sandbox Code Playgroud) 背景:我有一个带通知的应用程序,我想支持LED通知(并且它工作正常).在我的首选项中,我允许用户自定义LED通知.
问题:如果设备不支持它们,我不想显示LED自定义选项,因为它可能会让用户感到困惑(如果你只有廉价的机器人,你不知道什么是LED通知).是否有可用于检测设备是否支持它的API?
如果有"旧"和"新"方式,我可能更喜欢旧的方式,因为我支持的最低API级别为4.
谢谢
LED通知:如果启用,当显示屏关闭时,手机的LED指示灯将闪烁以显示通知.
我已经实现了我的AccountManager身份验证器和服务以及整个交易,这一切似乎都运行良好.
但是,有一个小问题:我只希望我的应用程序的单个帐户存在于帐户管理器中,但似乎无法找到限制此方法的方法.
在添加新帐户之前,我是唯一可以进行搜索并删除当前帐户(按类型)的解决方案吗?
我目前的代码:
private void removeAccounts()
{
Account [] accounts = mAcctMgr.getAccountsByType (mAccountType);
if (accounts.length == 0) return;
final Handler handler = new Handler ();
AccountManagerCallback<Boolean> callback = new AccountManagerCallback<Boolean>()
{
@Override
public void run(AccountManagerFuture<Boolean> arg0)
{
// nada
}
};
for (Account a : accounts) {
mAcctMgr.removeAccount (a, callback, handler);
}
}
Run Code Online (Sandbox Code Playgroud)
我绝不会称之为优雅的解决方案,但此刻似乎是唯一有效的方法.