[mythtv] Android build Crashes after Updates to mythtv/external and required system libraries

David Hampton mythtv at love2code.net
Mon Aug 6 02:45:16 UTC 2018


On Sun, 2018-08-05 at 21:01 -0500, David Engel wrote:
> On Sun, Aug 05, 2018 at 06:47:59PM -0400, Peter Bennett wrote:
> > On 08/05/2018 06:28 PM, Mark Spieth wrote:
> > > On 8/6/2018 4:50 AM, Peter Bennett wrote:
> > > > 
> > > > 
> > > > On 08/05/2018 12:12 PM, David Hampton wrote:
> > > > > On Sun, 2018-08-05 at 12:00 -0400, David Hampton wrote:
> > > > > > On Sun, 2018-08-05 at 11:20 -0400, Peter Bennett wrote:
> > > > > > > The android version will no longer compile. It is failing
> > > > > > > because
> > > > > > > it
> > > > > > > cannot find samplerate or libbluray. There may be others,
> > > > > > > I don't
> > > > > > > know.
> > > > > > > 
> > > > > > > The thing with android is, the build cannot use Linux
> > > > > > > packages that
> > > > > > > are
> > > > > > > installed by ansible. All of the libraries needed are
> > > > > > > built in the
> > > > > > > packaging code using makelibs.sh. If you have removed
> > > > > > > some
> > > > > > > libraries
> > > > > > > from the MythTV source, then we have to add code to
> > > > > > > makelibs.sh to
> > > > > > > download the source and compile it for android. For
> > > > > > > libbluray maybe
> > > > > > > we
> > > > > > > can just disable it in the configure step, but samplerate
> > > > > > > seems to
> > > > > > > be
> > > > > > > required. I did not get past this point in the compile,
> > > > > > > there may
> > > > > > > be
> > > > > > > others that are required.
> > > > > > 
> > > > > > Hi Peter,
> > > > > > 
> > > > > > I think I forgot to commit my packaging changes that build
> > > > > > the
> > > > > > additional libraries for android.  I know I had android
> > > > > > compiling
> > > > > > here
> > > > > > before I committed my changes.  I'll get back to you
> > > > > > shortly.
> > > > > 
> > > > > I just committed my changes to the packaging repository.
> > > > > 
> > > 
> > > great! Saves me the trouble.
> > > > > David
> > > > > 
> > > > > 
> > > > 
> > > > I can build libraries, build mythtv and install.
> > > > 
> > > > Running mythfrontend from android gives the error "Your
> > > > application
> > > > encountered a fatal error and cannot continue. There is no
> > > > message
> > > > in the log that tells me what the problem is.
> > > > 
> > > > Log: https://pastebin.com/fVUUVa3N
> > > 
> > > 08-05 14:25:29.250 20805 20805 W System.err: Caused by:
> > > java.lang.UnsatisfiedLinkError: dlopen failed: library
> > > "libbluray.so"
> > > not found
> > > 
> > > This is the last invokation. must be a naming error or check in
> > > the apk
> > > (unzip -l xxx.apk) that it exists.
> > > 
> > > add the new so's to the mythfrontend pro file, otherwise they
> > > arent
> > > installed. name has probably changed (no myth prefix probably).
> > > 
> > > Ill investigate this sometime during the day at work.
> > > 
> > > HTH
> > > Mark
> > > 
> > 
> > I checked - libbluray, libsamplerate and liblzo are not in the apk.
> > libbluray.so and liblzo.so are in the directory
> > packaging/android/mythinstall64/lib/.
> > libsamplerate.so never got created, but the compile worked so I
> > suspect that
> > it was statically linked.
> 
> Peter, you can use readelf like this to check which shared libraries
> are needed.
> 
> ~/android/android-ndk/my-android-toolchain64/bin/aarch64-linux-
> android-readelf --dynamic mythinstall64/lib/libmythfrontend.so

readelf on mythinstall64/lib/libmythtv-30.so shows that its looking for
libbluray.so, libxml2.so, and liblzo2.so.  My last commit added two of
those to mythfrontend.pro, but missed libxml2.so.

> You can also use nm like this to confirm that libsamplerate was
> included.
> 
> ~/android/android-ndk/my-android-toolchain64/bin/aarch64-linux-
> android-nm mythinstall64/lib/libmythfrontend.so

Looking at nm on mythinstall64/lib/libmyth-30.so, I see the samplerate
functions like src_new listed with text addresses:

00000000001ae220 T src_new

They should be already linked into libmyth-30.so since they're showing
as T (text) symbols with addresses instead of as U (unknown) symbols.

David




More information about the mythtv-dev mailing list