@@ -32,6 +32,7 @@ class GenerateLibs extends DefaultTask {
3232 private final String [] buildEnvs = System . getProperty(' envs' )?. split(' ,' )
3333 private final boolean forWindows = buildEnvs?. contains(' windows' )
3434 private final boolean forLinux = buildEnvs?. contains(' linux' )
35+ private final boolean forAndroid = buildEnvs?. contains(' android' )
3536 private final boolean forMac = buildEnvs?. contains(' macos' )
3637 private final boolean forMacArm64 = buildEnvs?. contains(' macosarm64' )
3738
@@ -103,7 +104,8 @@ class GenerateLibs extends DefaultTask {
103104 }
104105
105106 // Generate platform dependant ant configs and header files
106- def buildConfig = new BuildConfig (' imgui-java' , tmpDir, libsDirName, jniDir)
107+ String soFileName = ! forAndroid ? ' imgui-java' : ' imgui-java64' // Android generates libimgui-java.so otherwise which isn't expected
108+ def buildConfig = new BuildConfig (soFileName, tmpDir, libsDirName, jniDir)
107109 BuildTarget [] buildTargets = []
108110
109111 if (forWindows) {
@@ -118,6 +120,12 @@ class GenerateLibs extends DefaultTask {
118120 buildTargets + = linux64
119121 }
120122
123+ if (forAndroid) {
124+ buildTargets + = new BuildTarget (Os.Android , Architecture.Bitness . _32, new String [] {" **/*.c" }, new String [0 ],
125+ new String [] {" **/*.cpp" }, new String [0 ], new String [0 ], " " , " -O2 -Wall -D__ANDROID__" , " -O2 -Wall -D__ANDROID__" ,
126+ " -lm -Wl,-z,max-page-size=0x4000 -stdlib=libc++ -lc++_shared" );
127+ }
128+
121129 if (forMac) {
122130 buildTargets + = createMacTarget(Architecture . x86)
123131 }
@@ -137,12 +145,15 @@ class GenerateLibs extends DefaultTask {
137145 BuildExecutor . executeAnt(jniDir + ' /build-windows64.xml' , commonParams)
138146 if (forLinux)
139147 BuildExecutor . executeAnt(jniDir + ' /build-linux64.xml' , commonParams)
148+ if (forAndroid) // Contrary to the name, this builds all four ABIs (arm64, arm, x86, x86_64)
149+ BuildExecutor . executeAnt(jniDir + ' /build-android32.xml' , commonParams)
140150 if (forMac)
141151 BuildExecutor . executeAnt(jniDir + ' /build-macosx64.xml' , commonParams)
142152 if (forMacArm64)
143153 BuildExecutor . executeAnt(jniDir + ' /build-macosxarm64.xml' , commonParams)
144-
145- BuildExecutor . executeAnt(jniDir + ' /build.xml' , ' -v' , ' pack-natives' )
154+ // Exclude android because android packages into aar, not jar
155+ if (! forAndroid)
156+ BuildExecutor . executeAnt(jniDir + ' /build.xml' , ' -v' , ' pack-natives' )
146157
147158 if (forWindows)
148159 checkLibExist(" windows64/imgui-java64.dll" )
0 commit comments