所以我在应用程序清单中添加了一些东西,我看到我的应用程序标签上有一个警告:
在SDK版本23及更高版本上,您的应用数据将在应用安装时自动备份和恢复.考虑添加属性android:fullBackupContent以指定@xml资源,该资源配置要备份的文件.
然后我搜索了那个.显然,只有2个标签:<include>和<exclude>.我不想从备份中排除任何文件,因为我没有任何本地依赖文件,我不需要任何<include>标签
<include>:指定要备份的一组资源,而不是让系统默认备份应用程序中的所有数据.
当我看到如果我没有放任何<include>标签,那么系统将会back up all data in your app by default,这正是我想要的.
现在我有了这个问题:我应该添加backup_content.xml文件,但是因为默认设置是好的,所以是空的,或者根本不添加文件?(在这种情况下Android Studio会抱怨)
现在宣布杰克谷歌澄清了Java与Android相关的可预见的未来.但是对Scala和其他基于JVM的语言开发人员有什么影响.特别是:
所有这些问题归结为一个问题:未来可以将Scala用于Android开发而不会牺牲新Scala功能和新Android工具链的优势吗?
相关阅读:
请在评论或答案中分享相关链接
相关问题:
有关:
请投票给Jack工具功能请求:
编辑:
我试图推理(不回答)我的问题,希望如果我错了,专家会纠正我.
下面是一个假设的Jack构建流程,其中包含一些额外的块,这些块是根据我的逻辑和我从可用文档中学到的内容添加的.
基本假设是Dalvik支持Java 7字节码指令.如果这是正确的Java 8指令不能直接传递给Dalvik,它们应该以某种方式转换为Java 7.(可能类似于Scala编译器总是这样做).
问题是转型发生在哪里?似乎Jill现在不能处理Java 8字节码,因此可能发生在假设流程的块(3)中.如果这是正确的,那么只有Java源项目文件需要进行转换,并且对第二个问题的回答是 - 否则,在Jill能够执行之前,不能使用库中的Java 8类(如果可能的话) .那就是我们不能使用Scala 12+.
如果在块(6)中执行所有代码优化而不是对第一个问题的答案是 - 是.转换为库.jar的Scala代码可以从Jack优化中受益.但初步应将其转换为.jayce(类似AST的表示),这将增加构建时间.
最后,Jack生成.dex Dalvik字节码,以保持与较旧的Dalvik运行时兼容(ART也使用Dalvik字节码).因此,三维问题的答案是:是的,可以使用Java 8功能.但仅限于项目Java源代码.App仍与任何运行时兼容.但是由于转换为Java 7(Dalvik字节码),Java 8的优势被删除.
根据LiveData文档:
LiveData类具有以下优点:
...
始终是最新数据:如果生命周期再次启动(如从后端堆栈返回到启动状态的活动),它将收到最新的位置数据(如果尚未生成).
但有时候我不需要这个功能.
例如,我在ViewModel中跟随LiveData,在Activity中跟踪Observer:
//LiveData
val showDialogLiveData = MutableLiveData<String>()
//Activity
viewModel.showMessageLiveData.observe(this, android.arch.lifecycle.Observer { message ->
AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton("OK") { _, _ -> }
.show()
})
Run Code Online (Sandbox Code Playgroud)
现在每次旋转后都会出现旧的对话框.
有没有办法在处理后清除存储的值或者根本没有使用LiveData?
尝试使用Android Studio 3 Canary 5与Architecture Components和Kotlin构建示例时会发出此警告.
谁能告诉我原因?
谢谢,Ove
编辑#1:这是Dan Lew不久前制作的一个样本
https://github.com/dlew/android-architecture-counter-sample
的build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 25
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "net.danlew.counter"
minSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
compile "com.android.support:recyclerview-v7:${rootProject.ext.supportLibVersion}"
compile "com.android.support:design:${rootProject.ext.supportLibVersion}"
compile "com.android.support:cardview-v7:${rootProject.ext.supportLibVersion}"
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile …Run Code Online (Sandbox Code Playgroud) android kotlin android-studio android-architecture-components
虽然我有一个更新的android工作室我收到以下错误但我找不到Gradle文件夹中的gradle 4.1但是当我检查文件 - >项目结构 - > gradle插件是4.
Error:Could not find com.android.tools.build:gradle:4.1.
Searched in the following locations:
file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/android/tools/build/gradle/4.1/gradle-4.1.pom
file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/android/tools/build/gradle/4.1/gradle-4.1.jar
https://jcenter.bintray.com/com/android/tools/build/gradle/4.1/gradle-4.1.pom
https://jcenter.bintray.com/com/android/tools/build/gradle/4.1/gradle-4.1.jar
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1/gradle-4.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1/gradle-4.1.jar
Run Code Online (Sandbox Code Playgroud)
我的build.gradle文件就是这个.我把它设置为23因为我需要在5.0.1手机上运行它.
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.example.threewire.myapplication"
minSdkVersion 10
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:23.1.1' …Run Code Online (Sandbox Code Playgroud) 在Google最近发布的Android Architecture Components库中,我们在Transformations类中有两个静态函数.虽然map功能很直接且易于理解,但我发现很难正确理解该switchMap功能.
可以在此处找到switchMap的官方文档.
有人可以用一个实际的例子解释如何以及在哪里使用switchMap功能?
是否可以在INRoom中使用SQLite的条件?
我正在尝试从我的数据库中选择一个项目列表,其中某列的值(在本例中为TEXT列)与一组过滤器值中的任何一个匹配.根据我的知识,这很容易在SQL和SQLite中完成,只需IN在SELECT语句中添加一个条件(参见此处).但是,我似乎无法使它与Room合作.
我一直收到这个错误:
Error:(70, 25) error: no viable alternative at input 'SELECT * FROM Table WHERE column IN :filterValues'
Run Code Online (Sandbox Code Playgroud)
(@Query调用DAO 注释方法的输入filterValues)
我现在尝试了三种不同的方法:
List<String>String[]String,但格式化为(value_1, value_2, ..., value_n)特别是最后一个应该可以很容易地工作,因为它将(或者至少应该)直接转换为SELECT * FROM Table WHERE column IN (value_1, value_2, ..., value_n),SELECT如果您只是直接访问数据库,这就是您手动写出的确切方式.
我试图理解使用/不使用@JvmStatic与何时使用其中任何一个之间的区别.
所以,使用Kotlin和Java,我可以这样做:
TestKotlin.kt
class TestKotlin {
companion object {
val someString = "hello world"
}
}
Run Code Online (Sandbox Code Playgroud)
然后由Java调用,如下所示:
TestJava.java
public class TestJava {
String kotlinStaticString = TestKotlin.Companion.getSomeString();
}
Run Code Online (Sandbox Code Playgroud)
但是,有这个选项2:
TestKotlin.kt V2
class TestKotlin {
companion object {
@JvmStatic // <-- notice the @JvmStatic annotation
val someString = "hello world"
}
}
Run Code Online (Sandbox Code Playgroud)
然后,从Java调用它,如下所示:
TestJava.java V2
public class TestJava {
String kotlinStaticString = TestKotlin.getSomeString();
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
谢谢!
我是Android Studio的新手,我不知道为什么我的工具栏没有按照https://developer.android.com/training/appbar/setting-up所描述的那样显示 我知道已经有一些像我这样的问题了stackoverflow但它们不适用于我的项目.因此,我非常感谢解决这个问题.截图:
java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListener
at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:180)
at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:61)
at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:118)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.android.uipreview.ModuleClassLoader.loadClass(ModuleClassLoader.java:213)
at android.support.v7.widget.ViewUtils.isLayoutRtl(ViewUtils.java:58)
at android.support.v7.widget.Toolbar.onMeasure_Original(Toolbar.java:1578)
at android.support.v7.widget.Toolbar.onMeasure(Toolbar.java)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:590)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:343)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:384)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:544)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$3(RenderTask.java:678)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"> …Run Code Online (Sandbox Code Playgroud)