Search Unity

android plugin developemnt

Discussion in 'Android' started by hsc65, Sep 30, 2010.

  1. hsc65

    hsc65

    Joined:
    Sep 23, 2010
    Posts:
    14
    I am developing Unity Android plugin to use the java function from c#.
    When the apk is loaded to the handset, the error mesage is as follows :

    09-30 21:55:44.784: INFO/dalvikvm(7122): Unable to dlopen(/data/data/com.nhn.JavaPluginTest/lib/libduelgojava.so): Cannot load library:
    09-30 21:55:44.784: DEBUG/dalvikvm(7122): Trying to load lib /data/data/com.nhn.JavaPluginTest/lib/libduelgojava.so 0x47d1ff80
    09-30 21:55:44.784: INFO/dalvikvm(7122): Unable to dlopen(/data/data/com.nhn.JavaPluginTest/lib/libduelgojava.so): Cannot load library:

    I check the file libduelgojava.so is in "/data/data/com.nhn.JavaPluginTest" using adb command.
    And makefile is as follows:
    #############################################
    # Android Makefile
    #############################################

    HOME = /home/samchung
    JAVA_HOME = $(HOME)/jdk1.6

    # Tool chain
    TOOLCHAIN_ROOT = $(HOME)/arm-2010q1

    # Target OS
    SYS_ROOT = $(HOME)/tmp/android/system
    SYS_DEV = $(HOME)/mydroid

    CROSS_COMPILE = $(TOOLCHAIN_ROOT)/bin/arm-none-linux-gnueabi-
    LIBDIR =$(TOOLCHAIN_ROOT)/lib/gcc/arm-none-linux-gnueabi/4.4.1

    LIBRARIES =$(LIBDIR)/libgcc.a

    #CC = $(CROSS_COMPILE)gcc-4.4.1
    CC = $(CROSS_COMPILE)gcc
    #CC = gcc


    BASE=$(SYS_DEV)/frameworks/base
    LIBC=$(SYS_DEV)/bionic/libc
    LIBM=$(SYS_DEV)/bionic/libm
    TC=$(SYS_DEV)/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/install-tools
    KERNEL = $(LIBC)/kernel

    INCLUDES = -I$(LIBC)/include -I$(LIBC)/arch-arm/include \
    -I$(LIBC)/kernel/arch-arm/include \
    -I$(LIBM)/include -I$(BASE)/include -I$(TC)/include \
    -I$(JAVA_HOME)/include \
    -I$(KERNEL)/common -I$(KERNEL)/arch-arm \
    -I$(SYS_DEV)/frameworks/base/opengl/include \
    -I$(HOME)/AndroidNDK/android-ndk-r4b/build/platforms/android-8/arch-arm/usr/include

    #
    # Linker
    #
    LINKER = $(CROSS_COMPILE)ld

    # Libraries
    LIB_PATHS = -rpath /system/lib -L. \
    -rpath $(SYS_ROOT)/lib -L$(SYS_ROOT)/lib


    CFLAGS = -g -Wall -O2 -ffast-math -nostdinc #-DWMODE=0
    LFLAGS = -lc -lm
    ALFLAGS=--dynamic-linker=/system/bin/linker -nostdlib $(LFLAGS)

    NASM = nasm

    .SUFFIXES: .asm .cpp

    all: lib


    .asm.o:
    $(NASM) -f elf -o $@ $<

    .c.o:
    @echo
    $(CC) -fpic -c $(CFLAGS) $(MACROS) $(INCLUDES) $<
    jni_comp:
    $(CC) -fpic -c $(CFLAGS) $(MACROS) $(INCLUDES) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux jni_duelgo.cpp

    lib: jni_comp
    $(LINKER) $(ALFLAGS) $(LIB_PATHS) $(LIBS) -shared -o ./libduelgojava.so jni_duelgo.o


    how can i fix it ?
     
    Last edited: Sep 30, 2010
  2. eriQue

    eriQue

    Unity Technologies

    Joined:
    May 25, 2010
    Posts:
    595
    It looks like you are building the toolchain yourself? I would suggest getting Android NDK and use the ndk-build script as in the examples.