2
확장 가능한 안드로이드 응용 프로그램을 만들고 있는데, 다른 응용 프로그램 (apk)에서 Fragment를 확장하는 클래스를로드 할 수 있어야합니다. ClassLoader loading 안드로이드 지원 라이브러리에서 android 클래스를 확장하는 android 클래스
String packageName = "com.something.project";
String className = "com.something.project.TestFragment";
String apkName = getPackageManager().getApplicationInfo(packageName, 0).sourceDir;
PathClassLoader classLoader = new PathClassLoader(apkName,ClassLoader.getSystemClassLoader());
Class<?> clazz = classLoader.loadClass(className);
Fragment f = (Fragment)obj;
이 제대로 작동 되었으나 나는 문제가 발생하기 이전의 안드로이드 장치와 내 응용 프로그램이 호환되도록 안드로이드 지원 라이브러리 (android.support.v4.app.Fragment)에서 조각을 사용하려고 할 때. 구체적으로 Fragment (ClassCastException)로 캐스트하려고하면 예외가 발생합니다. Fragment 클래스가 다른 ClassLoader로로드 되었기 때문에 이것이 실현되고 있음을 알고 있지만 작동하게 만들 수는 없습니다.
이 기술을 gradle 빌드 시스템으로 마이그레이션 할 수 있었습니까? –
나는 gradle로 마이그레이션 할 필요가 없습니다. Android 스튜디오는 아직 조기 액세스 미리보기입니다. 나는 그것을 사용하는 것이 현명하다고 생각하지 않는다. – BJMg
의견에 감사드립니다. 나는 안드로이드 개발로 시작하고 최신으로 갈 것이라고 생각했습니다. 불행히도이 항목은 android gradle 플러그인의 문제인 것으로 보입니다. compileClasspath는 표준 Gradle 빌드 시스템에있는 그대로 SourceSet에 정의되어 있지 않습니다. –