plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' id 'org.qtproject.qt.qtjennyPlugin' } /** * # Using `GenerateProxies` in Gradle * * The `GenerateProxies` task allows generating JNI proxy classes from JAR files. * There are two ways to configure it: * * ## 1. Using `jsonConfigFile` * You can specify a JSON configuration file that contains proxy generation settings. * This file should follow a structured format defining JAR paths, namespaces, and class names. * * **Example:** * GenerateProxies { * // Check sample-android-qt/qtjenny.proxyConfig.json to see the format * jsonConfigFile = "path/to/qtjenny.proxyConfig.json" * } * * - The JSON file must contain fields like: * - `outputDirectory` → The directory where proxies will be generated. * - `headerOnly` → Whether to generate only headers. * - `jarFiles` → A list of JAR file configurations with `namespace`, `path`, and `fullClassNames`. * * ## 2. Using `JarFile` Directly * Instead of a JSON file, you can manually specify JAR files and their associated class names. * * **Example:** * GenerateProxies { * JarFile { * it.namespace = "standard::space" // Optional namespace * it.path = "path/to/jar/myjar.jar" // Path to the JAR file * it.fullClassNames = "io.package.MyClass, io.package.OuterClass.InnerClass" // Classes to generate proxies for * } * * JarFile { * it.path = "path/to/jar/utilJar.jar" * it.fullClassNames = "com.pack.ServiceClass" * } * .... * * headerOnly = true // Default is false * outputDirectory = "path/to/outputFolder" * } * * ## Notes: * - Use fully qualified class names in `fullClassNames` to avoid conflicts. * - The generated files will be placed in the specified `outputDirectory`. */ GenerateProxies { // Fill in with the adequate way JSON or JarFile } android { ndkVersion "26.2.11394342" namespace = "io.github.landerlyoung.jennysampleapp" defaultConfig { applicationId "com.young.jennysampleapp" compileSdk 34 minSdkVersion 21 targetSdkVersion 34 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { cppFlags "-std=c++11 -fvisibility=hidden" } } } lintOptions { abortOnError false } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } kotlinOptions { jvmTarget = '1.8' } applicationVariants.configureEach { variant -> variant.externalNativeBuildProviders*.configure { ndkBuild -> ndkBuild.dependsOn variant.javaCompileProvider.name } } } import org.jetbrains.kotlin.gradle.internal.KaptTask tasks.withType(KaptTask).configureEach { task -> def suffix = task.name.contains("kaptDebug") ? "debug" : "release" annotationProcessorOptionProviders.add([new CommandLineArgumentProvider() { @Override Iterable asArguments() { return ["jenny.templateBuildDirectory=" + project.file('templates') + "/" + suffix] } }]) } kapt { arguments { arg("jenny.outputDirectory", project.file('src/main/cpp/gen')) } } dependencies { compileOnly project(':annotation') kapt project(':compiler') } dependencies { implementation "androidx.core:core-ktx:1.3.2" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.2' // noinspection GradleDependency implementation 'com.squareup.okhttp3:okhttp:3.14.7' testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation 'androidx.annotation:annotation:1.1.0' }