Misconfiguration for Android 4.1 and platform plugin android-8?

Alex Leutgöb privat at alexleutgoeb.com
Fri Oct 5 07:25:59 UTC 2012


Thanks BogDan, what's the meaning of "use only on Android API 8" in detail? I'm building my apps with SDK API Level 8 (both minimumSDK and targetSDK) as I want to support Android 2.2 too. If I use android-9 would it still be possible to run the apps on Android 2.2 devices? To what does the android-X version actually refer?

Thanks,
Alex



On 04.10.2012, at 19:09, BogDan <bog_dan_ro at yahoo.com> wrote:

> Hi,
> 
>   For android API-9+ you should use android-9 plugin instead, android-8 it must be 
> use only on Android API 8, starting with API-9 AAssetManager_xxxxx methods have
> public APIs that why we have different plugins.
> 
> Cheers,
> BogDan.
> 
> 
> 
> ----- Original Message -----
>> From: Alex Leutgöb <privat at alexleutgoeb.com>
>> To: necessitas-devel at kde.org
>> Cc: 
>> Sent: Wednesday, October 3, 2012 1:45 PM
>> Subject: Misconfiguration for Android 4.1 and platform plugin android-8?
>> 
>> Hi all,
>> 
>> I usually build my Necessitas-based apps using the libraries from the installer 
>> and linking them by myself. Due to compatibility reasons I use the platform 
>> plugin android(GL)-8. There was no problem at all till updating my Nexus 7 to 
>> Android 4.1.1 (also verified this with a Galaxy Nexus 4.1.1). Since then my apps 
>> crash on startup while "trying to load lib libandroid-8.so" with the 
>> message:
>> 
>> 10-03 12:13:29.525: E/AndroidRuntime(2523): Caused by: 
>> java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1306]:   124 
>> cannot locate '_ZN7android12AssetManager7openDirEPKc'...
>> 
>> So I did a bit of investigation regarding this symbol in the different Android 
>> versions.
>> 
>> Using nm and looking for the missing symbol within the pre-installed libraries:
>> 
>> 
>> v2.3 (Galaxy Ace / Huawei Ascend G300):
>> #################################
>> 
>> libandroid.so
>>          U _ZN7android12AssetManager7openDirEPKc
>> libandroid_runtime.so
>>          U _ZN7android12AssetManager7openDirEPKc
>> libutils.so
>> 000131f4 T _ZN7android12AssetManager7openDirEPKc
>> 
>> 
>> v4.0.3 (Emulator):
>> ##############
>> 
>> libandroid.so
>>          U _ZN7android12AssetManager7openDirEPKc
>> libandroid_runtime.so
>>          U _ZN7android12AssetManager7openDirEPKc
>> libutils.so
>> 000161f4 T _ZN7android12AssetManager7openDirEPKc
>> 
>> 
>> 4.1 (Nexus 7):
>> ###########
>> 
>> libandroid.so
>>          U _ZN7android12AssetManager7openDirEPKc
>> libandroid_runtime.so
>>          U _ZN7android12AssetManager7openDirEPKc
>> libandroidfw.so
>> 00018490 T _ZN7android12AssetManager7openDirEPKc
>> 
>> 
>> So from my understanding "U" (undefined) means that the library links 
>> to this symbol, it's however not included in the lib; "T" means an 
>> entry in the (textual) symbol table, meaning it is included. As we can see the 
>> symbol moved from libutils to libandroidfw in 4.1, reading information from the 
>> "android-8.pro" the library only links to libutils 
>> ("-lutils").
>> 
>> If I'm using android-9 everything is working (android-9 is linking against 
>> "-landroid" not "-lutils"), so I also used read-elf to check 
>> symbol visibility between the installer shipped platform plugins:
>> 
>> libandroid-8.so
>> 0xcd9c <AAssetManager_openDir>: @0x4cad8
>> 4880: 0000cd9d    48 FUNC    LOCAL  HIDDEN     8 AAssetManager_openDir
>> 
>> libandroid-9.so
>> 00067e18  00017716 R_ARM_JUMP_SLOT   00000000   AAssetManager_openDir
>> 375: 00000000     0 FUNC    GLOBAL DEFAULT  UND AAssetManager_openDir
>> 923: 00000000     0 FUNC    GLOBAL DEFAULT  UND AAssetManager_openDir
>> 
>> Telling me that the symbol is hidden in android-8 (although there exists an 
>> "asset_manager.cpp" file in android-8 sources.
>> 
>> 
>> So to recap (sorry for the long explanation!), it would be of interest if 
>> someone of you guys can reproduce the linker error at runtime (android-8 on 
>> Android 4.1). Is this probably a misconfiguration of the current platform 
>> plugin? Do we need to link android-8 against android.so (like android-9 does) 
>> too?
>> 
>> Many thanks,
>> Alex
>> 
>> 
>> _______________________________________________
>> Necessitas-devel mailing list
>> Necessitas-devel at kde.org
>> https://mail.kde.org/mailman/listinfo/necessitas-devel
>> 



More information about the Necessitas-devel mailing list