我有一个库项目 - 让我们称之为lib1
具有自定义flavorDimensions
指定的。更准确地说,存在buld
具有实际风味full
和 的维度production
。
此库由另一个库项目 ( lib2
) 使用,没有flavorDimensions
指定自定义,app
项目依赖于lib2
但不直接到lib1
。
要告诉我使用lib2
哪种口味,lib1
我可以指定missingDimensionStrategy 'build', 'full'
. 伟大的。任务完成了吧?
嗯,不是真的......项目不会同步,因为app
项目不知道它lib1
应该使用哪种风格???我还需要将 放到missingDimensionStrategy 'build', 'full'
应用程序项目中。您可以想象,如果您尝试构建一个模块化良好的应用程序。这一行实际上将出现在每个 build.gradle 中,它传递地依赖于lib1
.
这是应该的吗?我不能在全球某个地方告诉 gradle 使用什么口味吗?我想添加依赖debugApi project (path:':xxx', configuration: 'fullDebug')
等,但这不起作用...... :(
有人可以给点建议吗?谢谢。
看起来 android.provider.Settings.System.VOLUME_SETTINGS 字段已从 Android SDK 中删除。我找不到有关它的任何信息,但该应用程序无法在 sdk 版本设置为 23 的情况下进行编译。此外,在developer.android.com 上也缺少该字段。然而,在页面的缓存版本中它是存在的。有人能证实这一点吗?
谢谢。
我正在开发一个使用架构组件的项目,我有一个关于正确使用 LifecycleObserver 模式的问题。
\n\n问题是:我什么时候应该取消注册观察者以及如果没有调用取消注册会发生什么?
\n\n简单直接的用例可以如下所示:
\n\npublic class MyActivity extends LifecycleActivity {\n\n @Override\n protected void onCreate(@Nullable Bundle savedInstanceState) {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 super.onCreate(savedInstanceState);\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 ...\n getLifecycle().addObserver(someLifecycleObserver);\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\n @Override\n protected void onDestroy() {\n super.onDestroy();\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 ...\n getLifecycle().removeObserver(someLifecycleObserver);\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n这可能是不费吹灰之力并且正确使用的。但随着观察者的增多,就会出现很多这样的样板代码。
\n\n好的,现在让我们将 Dagger 添加到其中。我们可以让 Dagger 将这个“someLifecycleObserver”对象注入到 Activity(以及片段等其他地方)。
\n\n简单的 Dagger 模块如下所示:
\n\n@Module\npublic class ConfigurationManagerModule {\n\n @Provides\n @ActivityScope\n SomeManager provideSomeManager(final AppCompatActivity activity, final Object otherDependency) {\n return new SomeManager(activity, otherDependency);\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n然后在Activity中我们需要注册/注销观察者。但如果我们可以取消注册并让 Dagger 来完成呢?
\n\n @Provides\n @ActivityScope\n SomeManager provideSomeManager(final AppCompatActivity activity, final Object otherDependency) {\n …
Run Code Online (Sandbox Code Playgroud) 之前,我使用ndkBuld在Android上我构建本地代码的时候能够将参数传递到化妆定义要使用多个CPU内核。如果我想使用 4 个内核,我可以添加这样的东西
externalNativeBuild {
ndkBuild {
arguments "-j4", "APP_SHORT_COMMANDS=true"
abiFilters "armeabi-v7a"
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以建议我如何用 Cmake 和 Ninja 做类似的事情吗?cmake 配置是否有一些等效参数?
externalNativeBuild {
cmake {
arguments "-DANDROID_STL=c++_static"
abiFilters getAbis()
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢。