小编Dap*_*app的帖子

如何使用 Gradle Kotlin DSL 从 gradle 脚本中调用单独的 .gradle 文件中的函数?

基本上我想这样做:

使用其他 gradle 文件中的 Gradle 函数

也就是说,从一个 gradle 脚本中调用另一个函数中的一个函数。问题是我的 build.gradle 使用 Kotlin (build.gradle.kts),而我的函数所在的脚本仍然是 groovy。

我按照上面的 groovy-to-groovy 链接进行操作,但我无法使用 Kotlin DSL 使其工作。

在我的常规文件,functions.gradle 中,我有:

def buildVersionName() {
        //Do some stuff
}
Run Code Online (Sandbox Code Playgroud)

ext {
    buildVersionName = this.&buildVersionName
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的 build.gradle.kts 脚本中,我有:

apply(from = "functions.gradle")
project.ext.buildVersionName()
Run Code Online (Sandbox Code Playgroud)

当我同步时,我收到错误:

Unresolved reference: buildVersionName
Run Code Online (Sandbox Code Playgroud)

groovy gradle kotlin gradle-kotlin-dsl

10
推荐指数
1
解决办法
4047
查看次数

如何使用 KotlinPoet 获取 PropertySpec 的正确 TypeName

使用 KotlinPoet,为了生成用于向类和构造函数添加属性的 PropertySpec,您需要一个 TypeName 对象。

TypeMirror.asTypeName() KotlinPoet 函数已弃用,因为它并不总是对 Kotlin 类型正确工作。

但我找不到一个关于如何使用 kotlinpoet-metadata API 获取 Kotlin 类(例如 kotlin.String)的正确 TypeName 的示例,正​​如弃用消息所述的那样。

kotlinpoet-metadata API 的文档似乎也完全损坏(转到https://square.github.io/kotlinpoet/interop-kotlinx-metadata/#interop-with-kotlinx-metadata并单击 API 部分下的任何内容)

有谁有如何用一些 kotlinpoet-metadata 代码替换 TypeMirror.asTypeName() 来获取 TypeName 的示例,以便我可以创建 PropertySpec?

kotlin kapt kotlinpoet

8
推荐指数
1
解决办法
1428
查看次数

获取Google Play应用内订阅的截止日期

针对Android应用的新应用内订阅产品的实施似乎与常规托管/非托管产品相同,但是(afaik)获取订阅的到期日期仅可通过Google Play Android Develope基于HTTP的API获得.那部分让我一无所知.

使用Google API Java客户端库获取过期日期的任何实施示例都将是一个巨大的帮助.

java android subscriptions in-app-purchase

7
推荐指数
1
解决办法
1467
查看次数

使用kapt和gradle时无法调试注释处理器

我正在构建一个注释处理器,我最近使用kotlin-kapt插件从使用默认的annotationProcessor类型转换为kapt.

我正在使用该命令调试我的处理器

./gradlew --no-daemon -Dorg.gradle.debug=true :app:clean :app:compileDebugJavaWithJavac
Run Code Online (Sandbox Code Playgroud)

(完整说明:https://stackoverflow.com/a/42488641/502463)

然后运行远程调试配置.当我使用annotationProcessor时,我可以点击断点,并进行调试.使用kapt,我的处理器运行,但我无法调试它.没有触发断点.

我的kotlin版本是1.1.2-3

remote-debugging annotation-processing kotlin kapt annotation-processor

7
推荐指数
1
解决办法
2108
查看次数

每次在Android Studio和Gradle中都必须重建项目

我在Android Studio 0.5.4和Gradle 0.9.2中有一个多项目构建设置,依赖于多个Android库项目和Java项目,我注意到Gradle认为我的代码即将完成,即使我已经制作了变化.

如果我更改了xml布局文件,我可以构建并运行并且更改生效.但是对于代码更改,我必须使用Build-> Rebuild Project.

android build gradle android-studio

6
推荐指数
2
解决办法
2263
查看次数

Android O(API 26)预览模拟器无法启动

我下载了Android Studio 3.0 Canary 1预览版并使用AVD管理器下载了Android O x86系统映像.当我使用向导设置AVD时,使用Pixel手机作为硬件.当我启动模拟器时,它只会永久挂在启动屏幕上.

android emulation android-virtual-device android-studio android-8.0-oreo

6
推荐指数
1
解决办法
2719
查看次数

在strings.xml中使用long值时,Lint给出"格式错误类型"

我的项目在strings.xml中使用字符串声明,类似于:

<string name="file_size">File Size (%1$dMB)</string>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我正在使用

getResources().getString(R.string.file_size, getFileSize());
Run Code Online (Sandbox Code Playgroud)

其中getFileSize()返回long.林特给我这个错误:

"在file_size中格式化参数'#1'的参数类型错误:转换为'd',接收时间长(方法调用中的参数#2)"

这里发生了什么?Android文档说:

在此输入图像描述

java android lint

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

Android:全屏系统可见性搞砸了窗口插图

我正在编写一个应用程序,它有一个活动和一堆片段,其中一个片段是全屏的。为了实现这一点,我正在尝试使用系统 UI 可见性标志。

对于全屏片段,我设置了可见性:

layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)

一旦我这样做,窗口插图就会更改为似乎没有任何意义的值。然后,当我退出那个全屏片段时,我的视图中出现了错误的填充(基于奇怪的插图)

在此处输入图片说明

有谁知道这里发生了什么?我理解窗口插图的方式一定是错误的,因为这种行为似乎完全违反直觉。任何见解将不胜感激。

要查看我为说明问题而编写的测试应用程序的完整源代码,请访问此处:

https://github.com/dapp/visibilitytest

user-interface android android-fragments

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

在与Kotlin兼容的新Android Q Preview SDK中

当我尝试更新我的kotlin项目以针对Android Q构建时,我得到

失败:构建失败,发生异常。

  • 出了什么问题:由于使用不受支持的插件版本包含Kotlin模块,因此不支持New Gradle Sync

  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。与--scan一起运行以获取完整的见解。

  • https://help.gradle.org上获得更多帮助

2秒内失败

android kotlin android-10.0

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

Kotlin 协程暂停 fun + Retrofit 抛出“未找到 Retrofit 注解”错误

我试图在 2.5.1-SNAPSHOT 中使用 Retrofit 的协程支持,但我不断遇到奇怪的异常。

我的改造服务类别有:

@GET("weather")
suspend fun getForecast(@Query("q") query: String, @Query("num_of_days") numDays: String = "1",
                @Query("format") format : String = "json", @Query("key") apiKey: String = API_KEY)
        : Weather
Run Code Online (Sandbox Code Playgroud)

当我尝试调用它时,我得到:

2019-05-18 13:57:01.507 27422-27477/com.my.app  E/MainPresenter$onResume$$inlined$CoroutineExceptionHandler: Something went wrong: No Retrofit annotation found. (parameter #5)
    for method WeatherService.getForecast
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,因为错误出在参数 #5 上,但只有 4 个参数。有人以前见过这个吗?

另请注意,这是用于调试构建

minifyEnabled false
Run Code Online (Sandbox Code Playgroud)

所以我怀疑它是proguard...

android coroutine kotlin retrofit

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

我可以以编程方式选择Android布局文件夹吗?

我正在构建一个Android应用程序,根据屏幕大小调整大小,使用不同的布局文件夹(即大,xlarge等).

唯一的问题是我想为用户提供一种在小屏幕和大屏幕布局之间切换的方法,以防万一它们有一个无法识别xlarge标签的预蜂窝平板电脑,或者设备更接近手机大小但是仍然足够大,用户想要使用平板电脑布局.

有没有办法可以创建一个按钮来切换布局文件夹?我仍然想使用基于屏幕大小的自动文件夹选择,我只是希望能够强制应用程序使用一个文件夹或另一个.

那可能吗?

directory layout android dynamic screen-size

4
推荐指数
1
解决办法
1796
查看次数