我正在使用Android Studio 3.2 Beta5将我的项目迁移到AndroidX.当我重建我的应用程序时,我遇到了这些错误:
错误:[TAG]无法解析变量'$ {animal.sniffer.version}'
错误:[TAG]无法解析变量'$ {junit.version}'
完全清洁和重建不起作用!有人知道怎么修这个东西吗?请帮我.
gradle.properties
android.enableJetifier=true
android.useAndroidX=true
Run Code Online (Sandbox Code Playgroud)
的build.gradle
buildscript {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0-beta05'
classpath 'com.google.gms:google-services:4.0.1'
classpath "io.realm:realm-gradle-plugin:5.3.1"
classpath 'io.fabric.tools:gradle:1.25.4'
classpath 'com.google.firebase:firebase-plugins:1.1.5'
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
应用程序/的build.gradle
apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'io.fabric' …Run Code Online (Sandbox Code Playgroud) android android-studio android-studio-3.0 android-studio-3.2 androidx
我刚刚更新到Android Studio 3.4 Canary 5.然后我打开我现有的项目(在Android Studio 3.3 beta上完美运行)并收到此错误:
ERROR: Unsupported method: AndroidProject.getVariantNames().
The version of Gradle you connect to does not support that method.
To resolve the problem you can change/upgrade the target version of Gradle you connect to.
Alternatively, you can ignore this exception and read other information from the model.
Run Code Online (Sandbox Code Playgroud)
完全清理和重建,无效缓存和重新启动,重新导入项目不起作用.
gradle-wrapper.properties:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
Run Code Online (Sandbox Code Playgroud)
build.gradle(项目级别):
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
}
Run Code Online (Sandbox Code Playgroud)
关于Android Studio
Android Studio 3.4 Canary 5
Build #AI-183.4284.36.34.5141831, built on …Run Code Online (Sandbox Code Playgroud) 昨天,谷歌宣布Android Studio 3.1现在可以在稳定发布渠道下载.所以我决定尝试一下.
在此之前,我的项目已成功构建,但在我将AS升级到com.android.tools.build:gradle:3.1.0gradle构建工具并com.android.tools.build:gradle:3.1.0(它强制升级gradle包装器4.4)后,它失败并出现以下异常:
java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: Failed to find byte code for android/hardware/camera2/CameraManager$TorchCallback
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)
at sun.reflect.GeneratedMethodAccessor309.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at …Run Code Online (Sandbox Code Playgroud) android android-studio android-gradle-plugin android-studio-3.1
在Java中,我们可以创建一个这样的utils类:
final class Utils {
public static boolean foo() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但是如何在Kotlin做到这一点?
我尝试过使用里面的函数object:
object Utils {
fun foo(): Boolean {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
但是当从Java代码调用此方法时,需要添加INSTANCE.例如:Utils.INSTANCE.foo().
然后我改为将其声明为顶级函数(不带class或object):
@file:JvmName("Utils")
@file:JvmMultifileClass
fun foo(): Boolean {
return true
}
Run Code Online (Sandbox Code Playgroud)
然后我可以Utils.foo()从Java代码调用.但是从Kotlin代码我得到了Unresolved reference编译器错误.它只允许foo()直接使用功能(没有Utils).
那么在Kotlin中声明utils类的最佳方法是什么?请帮我!
所以我有一个带有活动的应用程序。该应用程序会在开始时检查 Internet 连接。如果没有 Internet 连接,它将显示一个带有刷新页面按钮的屏幕。问题是我的 API 调用 (Axios) 位于componentDidMount()第一次渲染后仅调用一次的位置。有什么办法可以重新加载页面,以便它调用componentDidMount再次?
我的意思是完全刷新。顺便说一句,我正在使用 EXPO。任何帮助表示赞赏。抱歉,没有示例,如果可能的话,我只是想了解一下
我正在使用Android Studio 3.4(金丝雀9),当我构建应用程序时,它失败并出现以下错误
任务:app:transformClassesAndResourcesWithR8ForDebug
R8是一项实验功能。如果您遇到任何问题,请使用“收缩器(R8)”作为组件名称,通过https://issuetracker.google.com提交错误。您可以通过使用'android.enableR8 = false'更新gradle.properties来禁用R8。
AGPBI:{“种类”:“警告”,“文本”:“缺少类:java.lang.instrument.ClassFileTransformer”,“源”:[{}],“工具”:“ D8”}
任务:app:transformClassesAndResourcesWithR8ForDebug失败
失败:构建失败,发生异常。
- 出了什么问题:任务':app:transformClassesAndResourcesWithR8ForDebug'的执行失败。
超出了GC开销限制
当我通过把禁用R8 android.enableR8=false到gradle.properties。一切正常。
那么如何在不禁用R8 Shrinker的情况下解决此错误呢?因为我真的很想测试R8的功能。
我正在创建一个react-native项目作为我的博客的示例,但是当我升级24.0.0到sdk版本时意外遇到错误react-native v50.0.
app.json:
{
"name": "TipCalculator",
"displayName": "rn_tip_calculator",
"expo": {
"name": "TipCalculator",
"slug": "rn-tip-calculator",
"sdkVersion": "24.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
package.json:
{
"name": "rn_tip_calculator",
"version": "0.0.1",
"private": true,
"author": "GeniusDoan <nhoxbypass@gmail.com> (https://github.com/nhoxbypass)",
"repository": "https://github.com/HCMUS-IceTeaViet-SE/rn_tip_calculator",
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"expo": "^24.0.0",
"react": "^16.0.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-24.0.0.tar.gz",
"react-native-deprecated-custom-components": "^0.1.0",
"react-native-i18n": "^1.0.0",
"react-native-segmented-control-tab": "^3.0.1"
},
"devDependencies": {
"babel-jest": "19.0.0",
"babel-preset-react-native": "1.9.1",
"jest": "19.0.2",
"react-test-renderer": "16.0.0"
},
"jest": {
"preset": "react-native"
}
}
Run Code Online (Sandbox Code Playgroud)
这个问题在2017年11月是众所周知的,我已经阅读了很多关于Github的问题,它发生在react-native …
在本文档中,Google表示:
当用户卸载您的应用程序时,系统会从内部存储中删除所有应用程序的文件.
但是在更新应用程序版本时(例如从v1.0到v1.1),它是否会自动清除应用程序缓存(或内部存储中的任何其他数据)?
因为当我监控我公司的应用程序时,/cache每次我们发布和用户更新到新的应用程序版本时,该文件夹都会下降趋势.
我在手机上进行了测试,看到应用缓存确实减小了尺寸.但我不确定所有设备也是一样的.
我有一个模拟类的静态方法的测试用例java.lang.System:
@Test
fun `getLocalTime()`() {
// Arrange
val staticMock = Mockito.mockStatic(System::class.java)
Mockito.`when`(System.currentTimeMillis()).thenReturn(1000L)
// Action
val res = deviceTimeProvider.getLocalTime()
// Assert
Truth.assertThat(res).isEqualTo(1000L)
staticMock.close()
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行测试时,我得到了这个错误:
org.mockito.exceptions.base.MockitoException:不可能模拟 java.lang.System 的静态方法以避免干扰类加载,从而导致无限循环
为什么会出现这种情况?我如何模拟java.lang.System类的方法?
我想为我的照片(如Facebook的预览照片)创建预览缩略图。我的计划:
Bitmap为显示。最后,我提出了基于Q42.ImagePreview的解决方案。
我将这些部分拆分为固定标题:
0xFFD8)0xFFE0)动态部分是:
0xFFC0):因为它包含宽度/高度字节。0xFFDA)。0xFFD9)但是它只能在我的其中1台设备上使用,而不能在其他设备上使用。
那么,如何生成可在Android和iOS设备上使用的固定的,通用的和标准的JPEG标头?
谢谢。
更多详情:
生成缩小的数据流:
使用BitmapFactory&从原始图像创建缩放的位图(最大尺寸为30px,保持宽高比)Matrix
压缩缩放位图质量64使用Bitmap#compress()并储存byte[] thumbData。
将thumbData上面的子数组从头到尾排列0xFFDA。(SOS,图像数据和EOI)并存储在中byte[] body。
以代表宽度和高度的4个字节为前缀body,转换为Base64字符串并发送。
在正常工作的设备中,其大小thumbData比其他不工作的设备长。霍夫曼表,SOS和图像数据部分则有所不同,请参见:
在2张图像照片之间进行差异检查