안드로이드 개발 질문/답변
(글 수 45,052)
AIR for Android 에서 so 함수 호출시 문제가 발생하였습니다.
apk를 생성 후 내부 lib/armeabi-v7a/ 경로에 so가 있음을 확인하였는데도
설치 후 /data/data/ 경로에 있는 so를 호출하고 함수를 호출하면 아래와 같은 에러가 발생합니다.
No implementation found for native
(함수명)
E/AndroidRuntime(26152): Caused by:
java.lang.UnsatisfiedLinkError: Native method not found:
함수클래스.함수명:(Ljava/lang/String;)Ljava/lang/String;
원인이 뭘까요?ㅠㅠ
2012.11.29 18:09:40
일단 이상한 점은...... 보통은 libs/armeabi-v7a/인데... 저래 되어 있는게 쪼금 마음에 걸리구요
so 파일은
님 어플의 패키지이름 + 함수명입니다.
님 어플이 co.kr.test 라면 so 파일도 void co_kr_test_함수(인자들 주루룩) {} 이래 되어 있어야 합니다.
so 파일의 함수들이 void co_kr_testtesttest_함수(솰랼라){} 라면 님 어플 패키지도 co.kr.testtesttest 가 되어야 합니다.
만약 AIR App 자체를 import 했는데도 문제가 생기는 거라면.....
다른 분께 토~~스 ^^;
2012.11.30 13:20:36
님이 말씀하신대로 했는데 그렇네요 ㅠㅠ
Flex Project에서 아래와 같이 호출하는데 더 해줘야되는게 있을까요?
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
public class TEST extends Sprite
{
public function TEST()
{
super();
TestNativeInterface.toast("test");
}
}
}
Native 호출하실때는 자바 패키지명과 메소드명을 모두 맞춘 native 메소드를 호출 하시거나,
별도로 매핑을 정의하셔야 합니다. 확인해 보세요.