Re: How to build intermediate classes.jar

Skip to first unread message


Apr 20, 2016, 10:48:03 PM4/20/16
to Android Building
I'v found out that classes.jar has been made after build all android with "make -j<number>".
Before android-m, I can make classes.jar with just "mm" on library folder.

2016년 4월 19일 화요일 오후 12시 46분 45초 UTC+9, KYUNG HO KIM 님의 말:

I used the classes.jar in intermediate folder for developing some applications on eclipse that including below static or shared java library. (eg. test, test2 lib)
The library used the, below.
But after I using android-M source, there's no classes.jar file in intermediate folder.

How can I build the classes.jar as before?
Or how I can I build the jar file including class files when we build the static or shared java library on android build to use on eclipse or other java IDE??
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)

include $(call all-makefiles-under,$(LOCAL_PATH))

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)

include $(call all-makefiles-under,$(LOCAL_PATH))


Anushree Ganjam

Sep 8, 2016, 10:42:03 AM9/8/16
to Android Building
Even I am facing the same issue. Were you able to solve it ?
Please help 

Jiyong Park

Sep 20, 2016, 10:26:35 AM9/20/16
to Android Building
From Android-M, the default compiler for java source code is changed from javac to jack. As explained in, jack does not generate the intermediate classes.jar files. It directly generates classes.dex files from *.java files.

Furthermore, using such intermediate files (such as classes.jar) is not a very good idea. As an app developer, you should depend on SDK/NDK only.

pingkai pang

Dec 1, 2016, 10:22:43 AM12/1/16
to Android Building
Hi Jiyong,

Same issue.

My I ask how we can build our own static library and share with others?
In Android N, only generate .jack file, not classes.jar?

Deepak Garg

Jan 25, 2017, 11:58:12 AM1/25/17
to Android Building
in Android M, you can achieve that by using LOCAL_JACK_ENABLED = disabled variable in your makefile.

In Android N it is more is broken and the solution to this is yet to come in AOSP mainline of Android N.
Solution is available in master.

Checked in 7.1.1 Android N.

You need to make use of javac-check target. This has been implemented for this purpose.

make javac-check-$(LOCAL_MODULE)

So, if your module name is "ABCD"

make javac-check-ABCD

This generates a classes-full-debug.jar, in the common\obj\JAVA_LIBRARIES\ABCD_intermediates.

This is the jar which you can use in your Studio environment.

Most important, this solution is not yet visible in any of the tags on Android N branch. It is part of the master hence you need to add this solution to your branch manually.

On Thursday, April 21, 2016 at 8:18:03 AM UTC+5:30, KYUNG HO KIM wrote:


Aug 14, 2017, 12:50:38 PM8/14/17
to Android Building
Thank you, I have solved the problem.but how can i get release version class.jar file?

在 2017年1月26日星期四 UTC+8上午12:58:12,Deepak Garg写道:

Vamsee Krishnaa

Feb 11, 2019, 11:04:16 AM2/11/19
to Android Building

On Thursday, April 21, 2016 at 8:18:03 AM UTC+5:30, KYUNG HO KIM wrote:
[1/1] /home/vamsi/ctos/out/soong/.minibootstrap/minibp /home/vamsi/ctos/out/soong/.bootstrap/
[55/56] glob prebuilts/ndk/stl.bp
[80/80] /home/vamsi/ctos/out/soong/.bootstrap/bin/soong_build /home/vamsi/ctos/out/soong/
/home/vamsi/ctos/out/ is missing, regenerating...
/home/vamsi/ctos/out/ is missing, regenerating...
[535/951] including system/sepolicy/ ...
system/sepolicy/ warning: Be careful when using the SELINUX_IGNORE_NEVERALLOWS flag. It does not work in user builds and using it will not stop you from failing CTS.
[951/951] including vendor/xiaomi/msm8956-common/ ...
build/make/core/Makefile:28: warning: overriding commands for target `/home/vamsi/ctos/out/target/product/hydrogen/system/framework/qcrilhook.jar'
build/make/core/ warning: ignoring old commands for target `/home/vamsi/ctos/out/target/product/hydrogen/system/framework/qcrilhook.jar'
[ 99% 5300/5301] glob vendor/qcom/opensource/interfaces/display/config/1.6/src
ninja: error: '/home/vamsi/ctos/out/target/common/obj/JAVA_LIBRARIES/sap-api-java-static_intermediates/classes-header.jar', needed by '/home/vamsi/ctos/out/target/common/obj/APPS/Bluetooth_intermediates/classes-full-debug.jar', missing and no known rule to make it
12:22:20 ninja failed with: exit status 1

#### failed to build some targets (02:13 (mm:ss)) ####

having issue with missing sap-api-java-static_intermediates/classes-header.jar 

Vaibhav S

Jan 19, 2022, 9:25:53 PMJan 19
to Android Building
Perfect answer!!

For someone who's working with Android.bp files.
Use make javac-check-MODULE_NAME to generate the classes.jar.

And if you wanna use it in the Android.bp file, write a java_import module.
java_import {
    name: "random_jar_name",
    jars: ["libs/classes.jar"], // You can rename classes.jar in case if you're importing multiple jars in your Android.bp
    sdk_version: "current",
    installable: false, // This is not really needed,

Now, use this java_import module's name inside static_libs list.
static_libs: [

That's it.
Reply all
Reply to author
0 new messages