小编Arc*_*nes的帖子

6
推荐指数
3
解决办法
1755
查看次数

如何将签名配置添加到 Multi-FlavorDimensions (ProductFlavors)?

例如,我有一个 gradle 构建,如下所示:

signingConfigs {
        configFlavor1 {
        keyAlias 'alias1'
        keyPassword 'password1'
        storeFile file('location1')
        storePassword 'password1'
        v1SigningEnabled true
        v2SigningEnabled true
    }

    configFlavor2 {
        keyAlias 'alias2'
        keyPassword 'password2'
        storeFile file('location2')
        storePassword 'password2'
        v1SigningEnabled true
        v2SigningEnabled true
    }

    configFlavor3 {
        keyAlias 'alias3'
        keyPassword 'password3'
        storeFile file('location3')
        storePassword 'password3'
        v1SigningEnabled true
        v2SigningEnabled true
    }
}

flavorDimensions "dimen1", "dimen2"
productFlavors {
    flavor1 {
        dimension "dimen1"
    }
    flavor2 {
        dimension "dimen1"
    }
    testing {
        dimension "dimen2"
    }
    dev {
        dimension "dimen2"
    }
    prod {
        dimension "dimen2" …
Run Code Online (Sandbox Code Playgroud)

android gradle android-productflavors android-flavordimension android-signing

5
推荐指数
0
解决办法
283
查看次数

在 MVVM 中,谁的工作是决定导航流?视图模型还是视图?

在 Android 上下文中,当收到响应时,决策点是否应该在 ViewModel 中,类似于我的 ViewModel:

if (response.isSuccess()) {
    nextScreenLiveData.value = GO_TO_NEXT_SCREEN
} else if(response.isNeedAnotherScreen()) {
    anotherScreenLiveData.value = ANOTHER_SCREEN
} else {
    backToBeforeScreen = BACK_TO_BEFORE_SCREEN
}
Run Code Online (Sandbox Code Playgroud)

然后所有这些 LiveData 将在 Activity/Fragment 中被观察到。意味着每个 LiveData 有一个观察者。

或者最好在我的 ViewModel 中做这样的事情:

liveData.value = response
Run Code Online (Sandbox Code Playgroud)

然后在我的活动/片段中做出决定:

liveData.observe(this, Observer { response ->
   if (response.isSuccess()) {
        goToNextScreen()
    } else if(response.isNeedAnotherScreen()) {
        goToAnotherScreen()
    } else {
        goBack()
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢。

android mvvm android-viewmodel android-architecture-components android-jetpack

5
推荐指数
0
解决办法
1590
查看次数

让所有东西都成为回收者视图是一个好主意吗?

在 Android 中将所有内容都设为 RecyclerView 是个好主意吗?

如果您考虑一下,所有滚动 UI 都可以由具有多个 viewType 的 RecyclerView 组成。

这是好事还是坏事?

android android-recyclerview

5
推荐指数
1
解决办法
296
查看次数

何时使用coroutineScope与SupervisorScope?

有人可以解释这两者之间到底有什么区别吗?

什么时候使用另一种?

提前致谢。

kotlin kotlin-coroutines

5
推荐指数
5
解决办法
631
查看次数

Android 环境中密封类对性能有何影响?

在 Android 中,由于性能问题,建议不要使用枚举。直到最近,情况仍然如此,Google IO 2018 中宣布枚举现在可以安全使用,尽管对于性能更高的应用程序仍然建议避免使用它们。

我的问题是:

我们可以在 android 中广泛使用 kotlin 密封类吗?

密封类似乎是枚举的扩展。如果是这样,我们应该使用类似于枚举的密封类吗?

提前致谢。

performance enums android kotlin sealed-class

5
推荐指数
2
解决办法
2602
查看次数

如何单元测试改造调用?

例如,我有一个改造界面,例如:

interface SampleService {
    fun getSomething(@body someBody: SomeBody)
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个使用这个接口的类,例如:

class UserRequester(val service: SampleService) {
     fun doGetSomething(someValue: String) {
         val response = service.getSomething(SomeBody(someValue))
         // ...
     }
 }
Run Code Online (Sandbox Code Playgroud)

我想测试这个类,但不知道如何模拟它。

我正在尝试以下操作:

val mockSampleService = mock()
val userRequester = UserRequester(mockSampleService)
val requestBody = SomeBody(someString))
  when(mockSampleService.getSomething(requestBody)).return(myExpectedValue)
....
Run Code Online (Sandbox Code Playgroud)

我的问题是,由于我在函数内部创建了请求对象,因此我无法使模拟 when().thenReturn() 工作,因为我在技术上传递了两个不同的对象。

我应该如何测试这个?提前致谢。

android unit-testing mockito retrofit2

5
推荐指数
1
解决办法
4063
查看次数

使用 Room.inMemoryDatabaseBuilder() 的完美用例是什么?

因此,我正在创建这个应用程序,其中有大量个人信息和数据,这些信息和数据不应保留在设备中以避免安全问题。在了解 Room 时,我发现了这一点,Room.inMemoryDatabaseBuilder()正如文档所述:

为内存数据库创建 RoomDatabase.Builder。当进程被终止时,存储在内存数据库中的信息就会消失。一旦建立了数据库,您应该保留对它的引用并重新使用它。

我想知道这是否适合我的情况。由于数据只会存在于内存中,不会存储在设备中。

这似乎是个好主意。我唯一担心的是,我还没有在实际应用程序中看到它的实现。我看到的唯一用例Room.inMemoryDatabaseBuilder()是用于测试(因此您不必担心每次测试运行时的数据库清理)。

有人可以提供一些建议吗?我们将不胜感激。

非常感谢。

android android-room android-architecture-components

5
推荐指数
1
解决办法
3337
查看次数

如何使用 Gitlab CI/CD 生成签名发布 APK?

我正在试验 GitLab 的 CI/CD,并正在研究如何生成签名版本 APK。

我在这里阅读了这篇文章。

它提出了以下建议:

- ./gradlew assembleRelease
    -Pandroid.injected.signing.store.file=$(pwd)/my.keystore
    -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD
    -Pandroid.injected.signing.key.alias=$KEY_ALIAS
    -Pandroid.injected.signing.key.password=$KEY_PASSWORD
Run Code Online (Sandbox Code Playgroud)

并将变量存储在 Gitlab CI/CD 变量中。

但是每次我运行管道时,它总是会导致:

* What went wrong:
Execution failed for task ':app:packageRelease'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: java.lang.RuntimeException: 
com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "/tmp/Lp7GrQLJ/0/XXXXX/sample-android-project/keystore": Keystore was tampered with, or password was incorrect
Run Code Online (Sandbox Code Playgroud)

有人可以在这里指导我吗?我可能做错了什么?

android gitlab

5
推荐指数
1
解决办法
2928
查看次数

iOS:如何在 Framework 中添加 Assets 文件夹以及如何在代码中访问它们?

I create an iOS app and added a framework to it. The generated framework doesn't have an assets folder like the generate Single View App. So I made an Assets folder inside the framework folder and drag and drop it to xcode, choose the target as my framework.

I tried using the asset but the asset doesn't show up. Can show one show me how to correctly do this? is it possible to create an assets folder inside a …

ios ios-frameworks swift

5
推荐指数
1
解决办法
4502
查看次数