Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit11e1a2b

Browse files
committed
Rework for use in toolchain beta 2
1 parent7672207 commit11e1a2b

File tree

2 files changed

+39
-36
lines changed

2 files changed

+39
-36
lines changed
Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
2+
//
3+
// Injects Swift relevant tasks into gradle build process
4+
// Mostly these are performed by scripts in ~/.gradle/scripts
5+
// installed when the plugin is installed by "create_scripts.sh"
6+
//
7+
18
packagenet.zhuoweizhang.swiftandroid
29

310
importorg.gradle.api.*
@@ -6,9 +13,8 @@ import org.gradle.api.tasks.*
613
publicclassSwiftAndroidPluginimplementsPlugin<Project> {
714
@Override
815
publicvoidapply(Projectproject) {
9-
Task writeNdkConfigTask= createWriteNdkConfigTask(project,"writeNdkConfigSwift")
10-
Task compileSwiftTask= createCompileSwiftTask(project,"compileSwift")
11-
compileSwiftTask.dependsOn("writeNdkConfigSwift")
16+
Task generateSwiftTask= createGenerateSwiftTask(project,"generateSwift")
17+
Task compileSwiftTask= createCompileSwiftTask(project,"compileSwift")
1218
Task copySwiftStdlibTask= createCopyStdlibTask(project,"copySwiftStdlib")
1319
Task copySwiftTask= createCopyTask(project,"copySwift")
1420
copySwiftTask.dependsOn("compileSwift","copySwiftStdlib")
@@ -20,47 +26,41 @@ public class SwiftAndroidPlugin implements Plugin<Project> {
2026
project.afterEvaluate {
2127
// according to Protobuf gradle plugin, the Android variants are only available here
2228
// TODO: read those variants; we only support debug right now
23-
Task compileNdkTask= project.tasks.getByName("compileDebugNdk")
24-
compileNdkTask.dependsOn("copySwift")
29+
Task compileNdkTask= project.tasks.getByName("compileDebugNdk")
30+
compileNdkTask.dependsOn("copySwift")
31+
Task preBuildTask= project.tasks.getByName("preBuild")
32+
preBuildTask.dependsOn("generateSwift")
2533
Task cleanTask= project.tasks.getByName("clean")
2634
cleanTask.dependsOn("cleanSwift")
2735
}
2836
}
29-
publicstaticFilegetNdkRoot() {
30-
returnnewFile(System.getenv("ANDROID_NDK_HOME"))
31-
}
32-
33-
publicstaticFilegetSwiftRoot() {
34-
returnnewFile("which swift".execute().text).
35-
parentFile.parentFile
36-
}
3737
publicstaticStringgetScriptRoot() {
3838
returnSystem.getenv("HOME")+"/.gradle/scripts/"
3939
}
4040

41-
publicstaticTaskcreateCopyStdlibTask(Projectproject,Stringname) {
42-
return project.task(type:Exec, name) {
43-
commandLine(System.getenv("HOME")+"/.gradle/scripts/copy-libraries.sh",
44-
"src/main/jniLibs/armeabi-v7a")
45-
}
46-
}
41+
publicstaticTaskcreateGenerateSwiftTask(Projectproject,Stringname) {
42+
return project.task(type:Exec, name) {
43+
commandLine(getScriptRoot()+"generate-swift.sh")
44+
workingDir("src/main/swift")
45+
}
46+
}
47+
publicstaticTaskcreateCompileSwiftTask(Projectproject,Stringname) {
48+
return project.task(type:Exec, name) {
49+
commandLine(getScriptRoot()+"swift-build.sh")
50+
workingDir("src/main/swift")
51+
}
52+
}
53+
publicstaticTaskcreateCopyStdlibTask(Projectproject,Stringname) {
54+
return project.task(type:Exec, name) {
55+
commandLine(getScriptRoot()+"copy-libraries.sh",
56+
"src/main/jniLibs/armeabi-v7a")
57+
}
58+
}
4759
publicstaticTaskcreateCopyTask(Projectproject,Stringname) {
4860
return project.task(type:Copy, name) {
4961
from("src/main/swift/.build/debug")
5062
include("*.so")
5163
into("src/main/jniLibs/armeabi-v7a")
5264
}
5365
}
54-
publicstaticTaskcreateWriteNdkConfigTask(Projectproject,Stringname) {
55-
return project.task(type:Exec, name) {
56-
commandLine("bash","-c",'echo\"export ANDROID_NDK_HOME=\\\"$ANDROID_NDK_HOME\\\"\" >~/.swift-android-ndk-home')
57-
}
58-
}
59-
publicstaticTaskcreateCompileSwiftTask(Projectproject,Stringname) {
60-
return project.task(type:Exec, name) {
61-
commandLine("bash","-c","SWIFT_EXEC=\""+
62-
System.getenv("HOME")+"/.gradle/scripts/swiftc-android.sh\" swift build")
63-
workingDir("src/main/swift")
64-
}
65-
}
6666
}

‎src/main/scripts/create_scripts.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ And add this to the module's build.gradle:
2929
3030
apply plugin: 'net.zhuoweizhang.swiftandroid'
3131
32+
This version of the plugin requires https://github.com/SwiftJava/java_swift
33+
with a tag > 2.1.0 *** Check for "pinning" files created by Swift PM. **
34+
3235
Consult https://github.com/SwiftJava/swift-android-kotlin for an example.
3336
3437
DOC
@@ -72,7 +75,7 @@ export JAVA_HOME="$JAVA_HOME"
7275
if [[ ! -f /tmp/genswift/genswift.class ]]; then
7376
mkdir -p /tmp/genswift &&
7477
cd "\$SWIFT_INSTALL/swift-android-gradle/src/main/scripts" &&
75-
$JAVA_HOME/bin/javac -d /tmp/genswift genswift.java &&
78+
"\$JAVA_HOME/bin/javac" -d /tmp/genswift genswift.java &&
7679
cd - >/dev/null
7780
fi &&
7881
@@ -91,15 +94,15 @@ PERL
9194
9295
# Compile bindings
9396
rm -rf /tmp/bindings && mkdir /tmp/bindings &&
94-
\$JAVA_HOME/bin/javac -parameters -d /tmp/bindings\`find . -type f | grep /swiftbindings/\` &&
97+
"\$JAVA_HOME/bin/javac" -parameters -d /tmp/bindings\`find . -type f | grep /swiftbindings/\` &&
9598
9699
# Pack bindings into a jar
97100
cd - >/dev/null && cd /tmp/bindings &&
98-
\$JAVA_HOME/bin/jar cf bindings.jar\`find . -type f -name '*.class'\` && cd - >/dev/null &&
101+
"\$JAVA_HOME/bin/jar" cf bindings.jar\`find . -type f -name '*.class'\` && cd - >/dev/null &&
99102
100103
# Code gen classes in jar to Swift using genswift.java
101-
\$JAVA_HOME/bin/jar tf /tmp/bindings/bindings.jar | grep /swiftbindings/ | sed 's@\\.class\$@@' |\
102-
\$JAVA_HOME/bin/java -cp /tmp/genswift:/tmp/bindings/bindings.jar\
104+
"\$JAVA_HOME/bin/jar" tf /tmp/bindings/bindings.jar | grep /swiftbindings/ | sed 's@\\.class\$@@' |\
105+
"\$JAVA_HOME/bin/java" -cp /tmp/genswift:/tmp/bindings/bindings.jar\
103106
genswift 'java/lang|java/util|java/sql' Sources ../java
104107
105108
SCRIPT

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp