geometer / FBReaderJ

Official FBReaderJ project repository
http://www.fbreader.org/FBReaderJ/
1.83k stars 802 forks source link

Project doesn't build #253

Open itkach opened 9 years ago

itkach commented 9 years ago

Instructions in HowToBuild do not result in successful build, at least on Linux. First, there's no dbg target:

BUILD FAILED
Target "dbg" does not exist in the project "FBReaderJ". 

Total time: 0 seconds

debug target does exist and compiles a bunch of native libs for various architectures first, then proceeds to fail as follows:

BUILD FAILED
/home/itkach/android-sdk-linux/tools/ant/build.xml:601: The following error occurred while executing this line:
/home/itkach/FBReaderJ/third-party/android-filechooser/code/build.xml:46: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var

Ok, copying local.properties with src.dir and ndk.dir set from project root:

cp local.properties third-party/android-filechooser/code

Same error, this time for third-party/drag-sort-listview/library/. Copying local.properties again, trying to build again. Another error:

[getbuildtools] Using latest Build Tools: 19.1.0
     [echo] Resolving Build Target for DragSortListView...

BUILD FAILED
/home/itkach/android-sdk-linux/tools/ant/build.xml:601: The following error occurred while executing this line:
/home/itkach/android-sdk-linux/tools/ant/build.xml:542: Unable to resolve project target 'android-5'

android-5 is Android 2.0, if I'm not mistaken - the one that never really shipped and not available in SDK manager. Ok, changing this (in third-party/drag-sort-listview/library/project.properties) to android-7

No luck:

-build-setup:
[getbuildtools] Using latest Build Tools: 19.1.0
     [echo] Resolving Build Target for DragSortListView...
[gettarget] Project Target:   Android 2.1
[gettarget] API level:        7
     [echo] ----------
     [echo] Creating output directories if needed...
    [mkdir] Created dir: /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/bin/rsObj
    [mkdir] Created dir: /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/bin/rsLibs
     [echo] ----------
     [echo] Resolving Dependencies for DragSortListView...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------
[dependency] API<=15: Adding annotations.jar to the classpath.

-code-gen:
[mergemanifest] No changes in the AndroidManifest files.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] No changed resources. R.java and Manifest.java untouched.
     [echo] ----------
     [echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.

-pre-compile:

-compile:
    [javac] Compiling 10 source files to /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/bin/classes
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:10: error: package android.support.v4.widget does not exist
    [javac] import android.support.v4.widget.CursorAdapter;
    [javac]                                 ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:28: error: cannot find symbol
    [javac] public abstract class DragSortCursorAdapter extends CursorAdapter implements DragSortListView.DragSortListener {
    [javac]                                                     ^
    [javac]   symbol: class CursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:58: error: cannot find symbol
    [javac]         Cursor old = super.swapCursor(newCursor);
    [javac]                      ^
    [javac]   symbol:   variable super
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:56: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:70: error: cannot find symbol
    [javac]         super.changeCursor(cursor);
    [javac]         ^
    [javac]   symbol:   variable super
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:68: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:79: error: cannot find symbol
    [javac]         notifyDataSetChanged();
    [javac]         ^
    [javac]   symbol:   method notifyDataSetChanged()
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:89: error: cannot find symbol
    [javac]         return super.getItem(mListMapping.get(position, position));
    [javac]                ^
    [javac]   symbol:   variable super
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:87: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:94: error: cannot find symbol
    [javac]         return super.getItemId(mListMapping.get(position, position));
    [javac]                ^
    [javac]   symbol:   variable super
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:92: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:99: error: cannot find symbol
    [javac]         return super.getDropDownView(mListMapping.get(position, position), convertView, parent);
    [javac]                ^
    [javac]   symbol:   variable super
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:97: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:104: error: cannot find symbol
    [javac]         return super.getView(mListMapping.get(position, position), convertView, parent);
    [javac]                ^
    [javac]   symbol:   variable super
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:102: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:131: error: cannot find symbol
    [javac]             notifyDataSetChanged();
    [javac]             ^
    [javac]   symbol:   method notifyDataSetChanged()
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:157: error: cannot find symbol
    [javac]         notifyDataSetChanged();
    [javac]         ^
    [javac]   symbol:   method notifyDataSetChanged()
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:189: error: cannot find symbol
    [javac]         return super.getCount() - mRemovedCursorPositions.size();
    [javac]                ^
    [javac]   symbol:   variable super
    [javac]   location: class DragSortCursorAdapter
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:187: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/ResourceDragSortCursorAdapter.java:106: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/ResourceDragSortCursorAdapter.java:111: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java:138: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java:319: error: cannot find symbol
    [javac]         return super.convertToString(cursor);
    [javac]                     ^
    [javac]   symbol: method convertToString(Cursor)
    [javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java:311: error: method does not override or implement a method from a supertype
    [javac]     @Override
    [javac]     ^
    [javac] 24 errors

BUILD FAILED
/home/itkach/android-sdk-linux/tools/ant/build.xml:601: The following error occurred while executing this line:
/home/itkach/android-sdk-linux/tools/ant/build.xml:720: The following error occurred while executing this line:
/home/itkach/android-sdk-linux/tools/ant/build.xml:734: Compile failed; see the compiler error output for details.

Total time: 6 seconds

At this point I give up.

itkach commented 9 years ago

this is on master at d73f7816cf5a1cf4280a4a676143b4dda0f39e3e

ch0psticks commented 9 years ago

Hi itkach, I also encountered this issue on the mater at 83ee0db , and I have figured it out now.

Those compiling issues can be categorised in 3 classes:

1. SDK/DNK path

As you mentioned, just copy the file [FBReader-root]/local.properties to the third part projects' directory[FBReader-root]/third-party/[prject_directory]/

2. API Version

On this issue:

BUILD FAILED
/Users/xxx/android-sdk-macosx/tools/ant/build.xml:601: The following error occurred while executing this line:
/Users/xxx/android-sdk-macosx/tools/ant/build.xml:542: Unable to resolve project target 'android-5'

We just modify related projects' roject.properties file, and change to android-14 or other supported API level.

3. Extra Library

The last issue:

...

[buildconfig] Generating BuildConfig class.
-pre-compile:

-compile:
[javac] Compiling 10 source files to /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/bin/classes
[javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:10: error: package android.support.v4.widget does not exist
[javac] import android.support.v4.widget.CursorAdapter;
[javac]                                 ^
[javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:28: error: cannot find symbol
[javac] public abstract class DragSortCursorAdapter extends CursorAdapter implements DragSortListView.DragSortListener {
[javac]                                                     ^
[javac]   symbol: class CursorAdapter
[javac] /home/itkach/FBReaderJ/third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:58: error: cannot find symbol
[javac]         Cursor old = super.swapCursor(newCursor);
[javac]                      ^

...

The keywords:

[javac] ....../third-party/drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java:10: error: package android.support.v4.widget does not exist

So I just copied the android-support-v4.jar to drag-sort-listview project, and the problem was solved.

cp ~/android-sdk-macosx/extras/android/support/v4/android-support-v4.jar  [FBReaderJ_project]/third-party/drag-sort-listview/library/libs/
itkach commented 9 years ago

@ch0psticks thank you, copying android-support-v4.jar is what I was missing. That first compilation error that pointed at android.support.v4 somehow escaped me.