Kri*_*raj 3 android gradle android-gradle-plugin
我有以下项目结构
MyProject
|-- build.gradle
|-- client.private
|-- server.public
|-- app
| |-- build.gradle
| |-- lint.xml
| |-- proguard-project.txt
| |-- project.properties
| `-- src
Run Code Online (Sandbox Code Playgroud)
并希望包含client.private和server.public文件到最终apk的assets文件夹,但遗憾的是无法这样做.
在我的中有以下内容 app/build.gradle
...
android {
...
applicationVariants.all { variant ->
variant.mergeAssets.doLast {
copy {
from(['../client.private', '../server.public'])
into("${buildDir}/assets/${variant.dirName}")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它只复制文件app/build/assets/debug,它没有与apk打包.
EDITED
请尝试使用sourceSets.(路径编辑)
android {
sourceSets {
main {
assets.srcDirs = ['../client.private','../server.public']
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以检查每个资产目录的路径.
afterEvaluate {
android.sourceSets.main.assets.srcDirs.each{println it}
}
Run Code Online (Sandbox Code Playgroud)
更新(正确的解决方案)
最后!我想我已经明白评论的意思了
android {
...
...
applicationVariants.all { variant ->
variant.mergeResources.doLast {
copy {
from (["../client.private", "../server.public"])
into ("$outputDir/raw")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
较旧的解决方案(有效但不是理想的解决方案)
我无法找到将单个文件包含在源集中的方法,因此下一个技巧是尝试将文件复制到文件夹raw中
该解决方案基于此reddit 线程
task copyKeyStores(type: Copy) {
from files(["../client.private", "../server.public"])
into 'src/main/res/raw'
}
tasks.copyKeyStores.execute()
Run Code Online (Sandbox Code Playgroud)
注意:根据reddit 线程中的评论之一,有一种更好的方法,但我无法弄清楚。
| 归档时间: |
|
| 查看次数: |
3993 次 |
| 最近记录: |