2017-01-26 11 views
0

그래서 실행중인 응용 프로그램을 사용하고 .apk 파일을 통해 아직 설치되지 않은 응용 프로그램의 코드에 액세스하려고합니다. 필자는 보조 응용 프로그램 패키지 이름, 공급자, 번들, 데이터 등을 모두 전화에 설치하지 않고 액세스해야합니다..apk 파일에서 응용 프로그램 코드 추출

지금까지 내가 이해하는 것과는 다른 두 가지 중 하나를 사용할 수 있습니다.

1) dexClassLoader. 이 옵션을 사용하면 SD 카드와 같은 저장 장치의 .apk 파일에 액세스 할 수 있어야합니다.

2) pathClassLoader. 여기에 올바른 옵션이있는 것 같습니다. 이 옵션과 함께 JAR/ZIP/APK 파일을 사용할 수 있습니다.

기본적으로 두 번째 응용 프로그램을 실행중인 프로세스에 바인딩하여 첫 번째 응용 프로그램을로드하려고하는데 디 컴파일하지 않고 코드에 액세스하는 데 문제가 있습니다. 내 질문에 내가 사용하고/여기에 첫 번째 또는 두 번째 옵션을 시도 해야하는 것 같아요 또는 세 번째 옵션을 사용할 수 있습니까?

답변

0

dexClassLoader 등을 사용하여 두 번째 응용 프로그램에서 동적으로 코드를로드 할 수 있지만 응용 프로그램에 동적으로 새 구성 요소를 추가 할 수는 없습니다. 모든 구성 요소는 AndroidManifest.xml에 정적으로 선언되어야합니다.

예를 들어, 두 번째 apk에서 활동을 주 응용 프로그램으로 "가져올"수 없습니다. 해당 활동의 수업에 액세스 할 수 있지만 활동을 사용하여 직접 활동을 시작할 수는 없습니다.

요구 사항에 따라 주 응용 프로그램에서 "자리 표시 자"활동을 만들면 보조 APK에서 Activity 클래스의 인스턴스를 만들고 해당 인스턴스에 모든 메서드 호출을 전달할 수 있습니다. 일반적으로, 나는 이것을 실제로 제안하지 않을 것이다. 나는 그것이 실제로 올바르게 행해지는 것이 (어떤 경우에는 불가능하지는 않지만) 매우 어려울 것이라고 생각한다.

+0

감사합니다. 필자는 몇 사람이 아직 설치되지 않은 응용 프로그램 코드를 실행중인 프로세스에 바인드했습니다. 내 목표는 활동 자체를 시작하는 것이 아니라 (도움이 될 수 있음) 오히려 제안한 두 번째 옵션을 수행하는 것입니다. 가능하다면 거의 불가능할 것입니다.하지만 여전히 네이티브 메소드를 사용하려고합니다. bindApplication() 등의 호출을 수행하는 데 필요한 특정 정보에 액세스하는 데 문제가 있습니다. 두 번째 .apk 파일을 설치합니다. – Pulkit

+0

이걸 보시 겠어요? http://stackoverflow.com/questions/42100863/android-instrumentation-execstartactact-parameters – Pulkit

+0

@Pulkit - 좋은 질문, upvoted. 그래도, 미안 해요. :) – JesusFreke