如何在本机中显示动画gif.这就是我尝试过的.
<Image source={{uri: "loading"}} />
它适用于.png文件,但是当我使用.gif文件时,它是空白的.我在某处尝试将.gif重命名为.png,但只显示动画gif的一帧而没有动画.有任何想法吗?
根据以下SO帖子,最近compile已经成为implementation:在gradle中实现和编译之间有什么区别
我的问题是我应该使用什么而不是compileOnly?上面的帖子没有解决该gradle配置问题.我知道我仍然可以使用,compileOnly但推荐的配置是什么,不会很快弃用?
似乎包含的所有配置都..compile..将被替换..implementation...我试过implementationOnly但不被Android Studio接受.
android gradle android-studio build.gradle android-gradle-plugin
在Android Studio的"依赖关系"选项卡的"模块设置"中,您可以选择库文件的范围."编译"和"提供"有什么区别?
我正在尝试添加mopub.但是当我这样做时,构建清单会添加一个库标签,然后说它不知道它是什么.如果我删除链接,一切正常.
compile('com.mopub:mopub-sdk:4.16.0@aar') {
transitive = true
}
Run Code Online (Sandbox Code Playgroud)
<library android:name="moat-mobile-app-kit" />
错误:(34)找到未知元素
错误:E:\ Web\Studio\Opus\app\build\intermediates\manifests\full\live\debug\AndroidManifest.xml:找到34个未知元素
错误:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.AaptException:AAPT2链接失败:
错误:com.android.builder.internal.aapt.AaptException:AAPT2链接失败:错误:任务':app:processLiveDebugResources'的执行失败.无法执行aapt
kapt在声明依赖项时,Gradle和之间有什么区别implementation,以及何时应该使用其中一个而不是另一个?
例子:
//Room Components
implementation "androidx.room:room-runtime:$rootProject.roomVersion"
kapt "androidx.room:room-compiler:$rootProject.roomVersion"
// dagger
implementation "com.google.dagger:dagger:$rootProject.ext.daggerVersion"
kapt "com.google.dagger:dagger-android processor:$rootProject.ext.daggerVersion"
Run Code Online (Sandbox Code Playgroud) 我正在学习Gradle如何工作,我无法理解它如何解决项目传递依赖.
目前,我有两个项目:
无论我如何尝试,当我构建projectB时,gradle不包含projectB的编译或运行时类路径中的任何projectA依赖项(X和Y).我只是通过在projectB的构建脚本中包含projectA的依赖项来设法使它工作,在我看来这没有任何意义.这些依赖项应自动附加到projectB.我很确定我错过了什么,但我无法弄清楚是什么.
我已经读过"lib dependencies",但它似乎只适用于此处描述的本地项目,而不适用于外部依赖项.
这是我在根项目中使用的build.gradle(包含projectA和projectB的那个):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.3'
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
group = 'com.company'
repositories {
mavenCentral()
add(new org.apache.ivy.plugins.resolver.SshResolver()) {
name = 'customRepo'
addIvyPattern "ssh://.../repository/[organization]/[module]/[revision]/[module].xml"
addArtifactPattern "ssh://.../[organization]/[module]/[revision]/[module](-[classifier]).[ext]"
}
}
sourceSets {
main {
java {
srcDir 'src/'
}
}
}
idea.module { downloadSources = true }
// task that create sources jar
task sourceJar(type: Jar) {
from sourceSets.main.java
classifier 'sources'
} …Run Code Online (Sandbox Code Playgroud) 我刚刚创建了一个库并上传到bintray和jcenter.
在我的测试应用程序中,此库作为模块添加:
implementation project(':dropdownview')
一切都井井有条.
将库模块上传到jcenter后,我改为使用它:
implementation 'com.asksira.android:dropdownview:0.9.1
然后,当库尝试调用依赖于另一个库的方法时,会发生运行时错误:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.transitionseverywhere.TransitionSet" on path: DexPathList[[zip file "/data/app/com.asksira.dropdownviewdemo-6fj-Q2LdwKQcRAnZHd2jlw==/base.apk"],nativeLibraryDirectories=[/data/app/com.asksira.dropdownviewdemo-6fj-Q2LdwKQcRAnZHd2jlw==/lib/arm64, /system/lib64, /system/vendor/lib64]]
Run Code Online (Sandbox Code Playgroud)
(我按照本指南发布了库.我在使用相同的方法之前已经发布了3个库,它们都运行良好;但这是我第一次在我自己的库中包含另一个第三方库依赖项.)
然后我尝试更改我的库的第三方库依赖项
implementation 'com.andkulikov:transitionseverywhere:1.7.9'
至
compile 'com.andkulikov:transitionseverywhere:1.7.9'
(请注意,这不是app对我的库的依赖,而是我的库到另一个库)
然后再次上传到版本0.9.2的bintray.
implementation 'com.asksira.android:dropdownview:0.9.2
这次它工作了吗?!
这是Android Studio/Gradle的某种错误(但Google表示他们将在compile2018年底删除...),或者我做错了什么?
可在此处找到v0.9.1的完整源代码.
请注意,我并没有直接访问任何方法app来TransitionsEverywhere.具体来说,ClassNotFoundException当我点击DropDownView,并DropDownView调用expand()哪个是public内部方法时发生.
为了消除等因素的影响,以下是我已经改变之前试过的东西implementation来compile,根本没有运气:
dependencies android gradle android-studio android-gradle-plugin
我有一个库项目(A)引用另一个jar文件(B.jar),但是在生成aar文件之后,jar文件(B.jar)没有捆绑在输出aar文件中,当使用这个aar文件时,我得到了a NoClassDefFoundError.
有没有办法让gradle捆绑输出aar文件中的所有依赖类?这是我的build.gradle:
apply plugin: 'com.android.library'
repositories {
mavenCentral()
}
android {
buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':common')
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的项目添加一个"房间".
当我尝试构建项目时,我收到一个错误:
错误:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败.java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex
我已经做了什么:
错误:任务':app:transformClassesWithMultidexlistForDebug'的执行失败.java.io.IOException:无法写[C:\ Users\user1\AndroidStudioProjects\git\mobile\app\build\intermediates\multi-dex\debug\componentClasses.jar](无法读取[C:\ Users]\user1.gradle\caches\transforms-1\files-1.1\support-core-utils-26.1.0.aar\a6c34f6784b0b6bc5c2fc7a7815426da\jars\classes.jar(;;;;;;**.class)](重复邮编entry [classes.jar:android/support/v4/content/PermissionChecker $ PermissionResult.class]))
如果我从项目中删除"房间",则构建没有错误.
我正在使用Android Studio 3,gradle构建工具3.0.0.
这是我的build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
}
}
repositories {
mavenCentral()
}
android {
compileSdkVersion 23
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "trsnet.gtp2.com"
minSdkVersion 17
targetSdkVersion 23
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile …Run Code Online (Sandbox Code Playgroud) 我知道注释用于修改代码而不实际是代码,例如:
@Author(
name = "Benjamin Franklin",
date = "3/27/2003"
)
Run Code Online (Sandbox Code Playgroud)
但我不明白如何使用注释比只说 name = "Benjamin Franklin" 更好/更清晰/更简洁?添加注解如何加强代码?
编辑:对不起,另一个问题,但我知道@Override 可以帮助防止/跟踪调用方法或类时的拼写错误,但它是如何做到的?它对实际程序有帮助吗?
android ×6
gradle ×5
dependencies ×2
android-room ×1
annotations ×1
build ×1
build-system ×1
build.gradle ×1
java ×1
kotlin ×1
mopub ×1
react-native ×1