2011-02-08 2 views
0

외부 dex-file에서 활동을로드 할 수 있습니까? 일부 플러그인 스타일 아키텍처에 대해 생각해 보겠습니다. 여기에서는 추가 기능이 포함 된 활동 및 클래스가있는 dex-file을 다운로드하여 응용 프로그램을 확장 할 수 있습니다.Android : 외부 dex에서 활동로드

DexClassLoader 및 리플렉션을 사용하여 다운로드 한 dex-file에서 클래스의 메소드를로드하고 호출 할 수있었습니다. 하지만 어떻게 든이 기술을 사용하여 활동을 다운로드하고 발표 할 수 있습니까? 인 텐트를 사용하여이 새 Activity를 프로그래밍 방식으로 등록 할 수 있습니까?

다른 액티비티를 APK로 일반 프로 시저를 통해 설치 한 다음 인 텐트를 사용하여 내 주요 활동에서로드하거나 단순히 설치된 애플리케이션을 업데이트하는 것이 가능하지만 (권장되는 방법) 몇 가지 추가 클래스를 다운로드하고 동일한 VM, 동일한 샌드 박스의 모든 것을 실행하여 이미 설치된 응용 프로그램을 확장 할 수 있습니다.

흠, 당신이 무슨 뜻인지 이해이 지저분 조금있어 발생하지 않는 경우 알려 .. :)

답변

1

안녕하세요, 그것은 외부 덱스 파일에서 활동을로드 할 수 있습니까?

정확하게는 아닙니다. 액티비티는 애플리케이션 매니페스트에서 미리 정의되어야합니다.

JRuby와 Ruboto가 사용하는 접근 방식을 사용할 수 있습니다. 다른 구현으로 용도가 변경되는 매니페스트에 하나의 활동이있는 경우 사용할 수 있습니다. 나는 그들의 접근 방식을 완전히 해부하지 않았지만 그들의 활동이 JRuby 스크립트에 이벤트를 전달한다는 인상하에있다. 귀하의 경우, 활동은 DEX 파일에서로드 된 다른 클래스로 이벤트를 전달합니다.

+0

그래, 그건 내가 생각한거야. 덕분에 제안을 드리겠습니다. – Joel

+0

Ruboto는 리플렉션을 통해 dex 경로를 프레임 워크의 'DexPathList'에로드합니다. https://github.com/ruboto/ruboto/blob/e961c186add5c89d82f922966d24a2f685d42560/assets/src/org/ruboto/ FrameworkHack.java 아주 좋은 해결책은 아니지만 Dalvik Path Class Loader가 똑같은 일을한다고 생각해도 괜찮습니다. – redDragonzz

관련 문제