protobufs finally are functional

This commit is contained in:
Kevin Gorham 2018-10-11 03:19:01 -04:00
parent 2acde837c7
commit 89a64f6d6d
5 changed files with 77 additions and 8 deletions

View File

@ -27,7 +27,7 @@ android {
// Note: we use string primitives for dependencies rather than something fancy (like buildSrc
// variables) so that we can leverage the built-in lint check that alerts us about new versions
dependencies {
compile(kotlin("stdlib-jdk7", KotlinCompilerVersion.VERSION))
implementation(kotlin("stdlib-jdk7", KotlinCompilerVersion.VERSION))
implementation(project(":zcash-android-welding"))
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
implementation("androidx.appcompat:appcompat:1.0.0")

View File

@ -1,5 +1,7 @@
import org.jetbrains.kotlin.config.KotlinCompilerVersion
apply(from = "custom-tasks.gradle.kts")
plugins {
id("com.android.library")
id("kotlin-android-extensions")
@ -24,17 +26,15 @@ android {
}
}
sourceSets["main"].java.srcDirs("build/generated/source/wire")
}
dependencies {
compile(kotlin("stdlib-jdk7", KotlinCompilerVersion.VERSION))
implementation(kotlin("stdlib-jdk7", KotlinCompilerVersion.VERSION))
implementation("com.squareup.wire:wire-runtime:2.3.0-RC1")
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
implementation("com.android.support:appcompat-v7:28.0.0")
testImplementation("junit:junit:4.12")
androidTestImplementation("com.android.support.test:runner:1.0.2")
androidTestImplementation("com.android.support.test.espresso:espresso-core:3.0.2")
}
repositories {
mavenCentral()
}
}

View File

@ -0,0 +1,64 @@
val protoSrcDir = "src/main/proto"
val protoDestDir = "build/generated/source/wire"
val jniSrcDir = "src/main/rust"
val jniDestDir = "build/rust/target"
fun fileTreeWith(dir: String, vararg include: String): ConfigurableFileTree {
return fileTree(mapOf("dir" to dir, "include" to include))
}
buildscript {
dependencies {
classpath("com.squareup.wire:wire-compiler:2.3.0-RC1")
}
repositories {
mavenCentral()
}
}
val generateProtobufClasses: TaskProvider<Task> = tasks.register("generateProtobufClasses").apply {
configure {
doFirst {
println("**** CREATING PROTOS ****")
delete(protoDestDir)
mkdir(protoDestDir)
}
description = "Generate Java classes from protocol buffer (.proto) schema files for use with Square's Wire library"
fileTreeWith(protoSrcDir, "**/*.proto").forEach { file ->
doLast {
javaexec {
main = "com.squareup.wire.WireCompiler"
classpath = buildscript.configurations.getByName("classpath")
args = listOf("--proto_path=$protoSrcDir", "--java_out=$protoDestDir", file.path)
}
}
}
inputs.files(fileTreeWith(protoSrcDir, "**/*.proto"))
outputs.files(fileTreeWith(protoDestDir, "**"))
}
}
val generateJniLibs: TaskProvider<Task> = tasks.register("generateJniLibs").apply {
configure {
doFirst {
println("**** CREATING JNI LIBS ****")
delete(jniDestDir)
mkdir(jniDestDir)
}
description = "Generate *.so files for connecting to the Rust wallet logic through the JNI"
doLast {
exec {
commandLine("./build-rust.sh")
}
}
inputs.files(fileTreeWith(jniSrcDir, "**/*"))
outputs.files(fileTreeWith(jniDestDir, "**/*.so"))
}
}
tasks["preBuild"]!!.dependsOn(generateProtobufClasses)
tasks["preBuild"]!!.dependsOn(generateJniLibs)

View File

@ -0,0 +1,6 @@
package cash.z.wallet.sdk.proto;
message WalletData {
required string name = 1;
required int32 id = 2;
optional string emails = 3;
}

View File

@ -7,7 +7,6 @@ pub extern "C" fn test_response(input: *const c_char) -> c_int {
magic_number
}
/// JNI interface
#[cfg(target_os="android")]
#[allow(non_snake_case)]