Incorporar Knopflerfish no Android não funciona
Eu estou tentando incorporar o framework Knopflerfish em um aplicativo android para carregar e descarregar pacotes dinamicamente. eu seguiisto tutorial
O primeiro passo que fiz foi baixar o framework.jar fromeisto link, e para adicioná-lo ao meu caminho de classe no meu projeto eclipse.
Além disso, abaixo está o meu método onCreate ():
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Map fwprops = new Hashtable(); //CHANGED
// add any framework properties to fwprops
FrameworkFactory ff = new FrameworkFactoryImpl();
mFramework = ff.newFramework(fwprops);
try {
mFramework.init(); //ERROR HERE!!
} catch (BundleException be) {
// framework initialization failed
Log.d(TAG, be.getStackTrace().toString());
}
}
Note que eu mudei uma linha do código, porque mostra um erro de sintaxe.
Qual é:
Dictionary fwprops = new Hashtable();
to
Map fwprops = new Hashtable(); //CHANGED
O erro de sintaxe:The method newFramework(Map) in the type FrameworkFactory is not applicable for the arguments (Dictionary)
Agora, de acordo com @ldx emisto post, "Os patches que eu enviei para melhor suporte ao Android / Dalvik no Knopflerfish foram mesclados para que o patch e a recompilação do KF não sejam mais necessários:"
e, portanto, não adicionei nada supondo que meu código seja suficiente como é agora.
Quando eu corro o aplicativo. Eu imediatamente recebo:Unfortunately, Knopflerfish_Android has stopped
na tela.
Alguém pode ajudar? Abaixo está o LogCat:
08-04 18:25:35.233: E/Trace(7018): error opening trace file: No such file or directory (2)
08-04 18:25:36.793: D/AndroidRuntime(7018): Shutting down VM
08-04 18:25:36.793: W/dalvikvm(7018): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
08-04 18:25:36.813: E/AndroidRuntime(7018): FATAL EXCEPTION: main
08-04 18:25:36.813: E/AndroidRuntime(7018): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.knopflerfish_android/com.example.knopflerfish_android.MainActivity}: java.lang.RuntimeException: Failed to initialize storage org.knopflerfish.framework.bundlestorage.file.BundleStorageImpl
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.os.Handler.dispatchMessage(Handler.java:99)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.os.Looper.loop(Looper.java:137)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-04 18:25:36.813: E/AndroidRuntime(7018): at java.lang.reflect.Method.invokeNative(Native Method)
08-04 18:25:36.813: E/AndroidRuntime(7018): at java.lang.reflect.Method.invoke(Method.java:511)
08-04 18:25:36.813: E/AndroidRuntime(7018): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-04 18:25:36.813: E/AndroidRuntime(7018): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-04 18:25:36.813: E/AndroidRuntime(7018): at dalvik.system.NativeStart.main(Native Method)
08-04 18:25:36.813: E/AndroidRuntime(7018): Caused by: java.lang.RuntimeException: Failed to initialize storage org.knopflerfish.framework.bundlestorage.file.BundleStorageImpl
08-04 18:25:36.813: E/AndroidRuntime(7018): at org.knopflerfish.framework.FrameworkContext.init(FrameworkContext.java:343)
08-04 18:25:36.813: E/AndroidRuntime(7018): at org.knopflerfish.framework.SystemBundle.doInit(SystemBundle.java:513)
08-04 18:25:36.813: E/AndroidRuntime(7018): at org.knopflerfish.framework.SystemBundle.init(SystemBundle.java:125)
08-04 18:25:36.813: E/AndroidRuntime(7018): at com.example.knopflerfish_android.MainActivity.onCreate(MainActivity.java:39)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.Activity.performCreate(Activity.java:5104)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-04 18:25:36.813: E/AndroidRuntime(7018): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
08-04 18:25:36.813: E/AndroidRuntime(7018): ... 11 more
08-04 18:25:36.813: E/AndroidRuntime(7018): Caused by: java.lang.reflect.InvocationTargetException
08-04 18:25:36.813: E/AndroidRuntime(7018): at java.lang.reflect.Constructor.constructNative(Native Method)
08-04 18:25:36.813: E/AndroidRuntime(7018): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
08-04 18:25:36.813: E/AndroidRuntime(7018): at org.knopflerfish.framework.FrameworkContext.init(FrameworkContext.java:341)
08-04 18:25:36.813: E/AndroidRuntime(7018): ... 17 more
08-04 18:25:36.813: E/AndroidRuntime(7018): Caused by: java.lang.RuntimeException: Cannot create directory: /fwdir/bs
08-04 18:25:36.813: E/AndroidRuntime(7018): at org.knopflerfish.framework.Util.getFileStorage(Util.java:99)
08-04 18:25:36.813: E/AndroidRuntime(7018): at org.knopflerfish.framework.bundlestorage.file.BundleStorageImpl.<init>(BundleStorageImpl.java:127)
08-04 18:25:36.813: E/AndroidRuntime(7018): ... 20 more
08-04 18:25:39.543: I/Process(7018): Sending signal. PID: 7018 SIG: 9