Can't compile to Android

I am trying to compile to Android but I get an error. First I tried with my game but now I am trying with a new project and the error is the same, so I guess that something is not configured properly.

I am on Windows (but I have a similar or the same problem in Linux before…).
Cocos 3.10, JDK 8u45, NDK r10e, SDK tools 24.4.1, Andorid 6.0 (API 23).

This is the end of the output:

-code-gen:
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] Found 1 AIDL files.
     [aidl] Compiling 1 AIDL files.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...
     [echo] ----------
     [echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.

-pre-compile:

-compile:
    [javac] Compiling 29 source files to C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\bin\classes
    [javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:9: error: package org.apache.http does not exist
    [javac] import org.apache.http.Header;
    [javac]                       ^
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:10: error: package org.apache.http.message does not exist
    [javac] import org.apache.http.message.BasicHeader;
    [javac]                               ^
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:47: error: cannot find symbol
    [javac]     public void onFailure(int i, Header[] headers, byte[] errorResponse, Throwable throwable) {
    [javac]                                  ^
    [javac]   symbol:   class Header
    [javac]   location: class DataTaskHandler
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:57: error: cannot find symbol
    [javac]     public void onSuccess(int i, Header[] headers, byte[] binaryData) {
    [javac]                                  ^
    [javac]   symbol:   class Header
    [javac]   location: class DataTaskHandler
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:109: error: cannot find symbol
    [javac]     public void onFailure(int i, Header[] headers, Throwable throwable, File file) {
    [javac]                                  ^
    [javac]   symbol:   class Header
    [javac]   location: class FileTaskHandler
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:119: error: cannot find symbol
    [javac]     public void onSuccess(int i, Header[] headers, File file) {
    [javac]                                  ^
    [javac]   symbol:   class Header
    [javac]   location: class FileTaskHandler
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:255: error: cannot find symbol
    [javac]                     Header[] headers = null;
    [javac]                     ^
    [javac]   symbol: class Header
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:259: error: cannot find symbol
    [javac]                         List<Header> list = new ArrayList<Header>();
    [javac]                              ^
    [javac]   symbol: class Header
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:259: error: cannot find symbol
    [javac]                         List<Header> list = new ArrayList<Header>();
    [javac]                                                           ^
    [javac]   symbol: class Header
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:260: error: cannot find symbol
    [javac]                         list.add(new BasicHeader("Range", "bytes=" + fileLen + "-"));
    [javac]                                      ^
    [javac]   symbol: class BasicHeader
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:261: error: cannot find symbol
    [javac]                         headers = list.toArray(new Header[list.size()]);
    [javac]                                                    ^
    [javac]   symbol: class Header
    [javac] C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:263: error: cannot access HttpEntity
    [javac]                     task.handle = downloader._httpClient.get(Cocos2dxHelper.getActivity(), url, headers, null, task.handler);
    [javac]                                                         ^
    [javac]   class file for org.apache.http.HttpEntity not found
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: C:\Users\Kam\Documents\CocosProjects\Prueba\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java uses unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
    [javac] 12 errors
    [javac] 3 warnings

BUILD FAILED
C:\Cocos\tools\android-sdk-windows\tools\ant\build.xml:597: The following error occurred while executing this line:

C:\Cocos\tools\android-sdk-windows\tools\ant\build.xml:716: The following error occurred while executing this line:

C:\Cocos\tools\android-sdk-windows\tools\ant\build.xml:730: Compile failed; see the compiler error output for details.

Total time: 2 seconds
Error running command, return code: 1.

Any help? Thanks.

1 Like

In the newest Android SDK version, 23, the following libraries have been removed.

org.apache.http.Header;
org.apache.http.message.BasicHeader;

We are also trying to compile for android-23 (6.0) and also get the same errors.

The “old” library/libraries are available in the following folder of your ADT-BUNDLE:
X:\adt-bundle\sdk\platforms\android-23\optional

It is called “org.apache.http.legacy.jar”.

We havn’t been able to solve the compilation yet. Trying to figure it out.

Solved it. You need to copy a file into your project.

Copy from this folder where you have your Android SDK:
[YOUR DRIVE LETTER]:\adt-bundle\sdk\platforms\android-23\optional

Name of the file to copy:
org.apache.http.legacy.jar

Copy this file into your project folder at location:
[YOUR PROJECT PATH]\cocos2d\cocos\platform\android\java\libs

Now the project can build with the org.apache.http.legacy.jar file and compilation succeeds.

4 Likes

Thanks for the answer. Anyway, I could compile using SDK 21, so all good for now.

For a Cocos Studio project (with Cocos2d-x 3.10)
Copy the “org.apache.http.legacy.jar” file into your project folder at location:
[YOUR COCOS STUDIO PROJECT PATH]\proj.android\libs

Awesome work RexopaxSoftware. Thank you.

It’s worked.
Tks u,RexopaxSoftware (Y)

I created project using cocos creator v 1.0.3 and i am getting this error
i don’t know where to paste “org.apache.http.legacy.jar” file
here is my error log

-compile:
[javac] Compiling 29 source files to C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\bin\classes
[javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:9: error: package org.apache.http does not exist
[javac] import org.apache.http.Header;
[javac]                       ^
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:10: error: package org.apache.http.message does not exist
[javac] import org.apache.http.message.BasicHeader;
[javac]                               ^
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:47: error: cannot find symbol
[javac]     public void onFailure(int i, Header[] headers, byte[] errorResponse, Throwable throwable) {
[javac]                                  ^
[javac]   symbol:   class Header
[javac]   location: class DataTaskHandler
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:57: error: cannot find symbol
[javac]     public void onSuccess(int i, Header[] headers, byte[] binaryData) {
[javac]                                  ^
[javac]   symbol:   class Header
[javac]   location: class DataTaskHandler
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:109: error: cannot find symbol
[javac]     public void onFailure(int i, Header[] headers, Throwable throwable, File file) {
[javac]                                  ^
[javac]   symbol:   class Header
[javac]   location: class FileTaskHandler
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:119: error: cannot find symbol
[javac]     public void onSuccess(int i, Header[] headers, File file) {
[javac]                                  ^
[javac]   symbol:   class Header
[javac]   location: class FileTaskHandler
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:255: error: cannot find symbol
[javac]                     Header[] headers = null;
[javac]                     ^
[javac]   symbol: class Header
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:259: error: cannot find symbol
[javac]                         List<Header> list = new ArrayList<Header>();
[javac]                              ^
[javac]   symbol: class Header
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:259: error: cannot find symbol
[javac]                         List<Header> list = new ArrayList<Header>();
[javac]                                                           ^
[javac]   symbol: class Header
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:260: error: cannot find symbol
[javac]                         list.add(new BasicHeader("Range", "bytes=" + fileLen + "-"));
[javac]                                      ^
[javac]   symbol: class BasicHeader
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:261: error: cannot find symbol
[javac]                         headers = list.toArray(new Header[list.size()]);
[javac]                                                    ^
[javac]   symbol: class Header
[javac] C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java:263: error: cannot access HttpEntity
[javac]                     task.handle = downloader._httpClient.get(Cocos2dxHelper.getActivity(), url, headers, null, task.handler);
[javac]                                                         ^
[javac]   class file for org.apache.http.HttpEntity not found
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: C:\Users\omera\Documents\CocosHelloWorld\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\src\org\cocos2dx\lib\Cocos2dxDownloader.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 12 errors
[javac] 3 warnings

Hi, @slackmoehrle
(This problem comes for Android 6 and can be resolved by copying the legacy lib as the guy in some above post told)

Will the library being currently used will be updated in some months!
May be this can be taken up as an improvements for any of the next releases.


@zhangxm can you take a look at this thread, please.

Thanks guys, i created an issue for it.

2 Likes

That worked for me too on both Mac and Windows.
thanks.

For a Cocos Creator project, copy org.apache.http.legacy.jar into [YOUR COCOS CREATOR PROJECT PATH]\build\jsb-default\frameworks\cocos2d-x\cocos\platform\android\java\libs.

Great work finding this work-around guys. I hope Cocos fixes this one soon! Android 23 is going to be used a ton.

Hi, right now, I can’t build my Android version because of linker errors with Cocos2dxDownloader.

I can’t find org.apache.http.legacy.jar on my Mac. Suggestions on where to get it? Thanks!

org.apache.http.legacy.jar.zip (234.9 KB)

this is org.apache.http.legacy.jar

put into the -->cocos/platform/android/java