Tag: dexclassloader

Android DexClassLoader错误,’优化数据目录..不属于当前用户’

我正在尝试生成一个简单的Android应用程序,可以在运行时从SD卡加载DEX文件。 该应用程序有两个活动。 第一个活动是一个带按钮的简单屏幕。 按下该按钮时,将启动第二个活动,这将导致调用loadDex()方法。 loadDex()方法尝试在SD卡上找到jar文件并将其加载到当前应用程序中。 这是我的第一个活动的代码: package poc.example.del.customclass; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is […]

Android类解析中的陌生事物

我在Android上观察了很多行为(我正在研究multidex问题,所以我在4.4.4中使用了一个模拟器)让我对Android类加载无言以对: 在类加载器加载时, 不应该解析Android类。 但是如果我创建一个类: public class M { public Foo m(String i) { switch (i) { case “0”: return new Foo(); case “1”: return new Foo2(); } return null; } } 并调试我的应用程序,添加手表: getClass().getClassLoader().findLoadedClass(“Foo”) getClass().getClassLoader().findLoadedClass(“Foo2”) 然后我可以看到加载M确实加载了Foo和Foo2 ! 所以课程得到了解决。 奇怪的是,这几乎是第二个问题,但是如果我添加M extends Application ,那么M根本就不会被解析,即使实例化它也是如此。 当调用m(X)时, Foo和Foo2仅被加载到JVM中m(X)当X为”0″时加载Foo ,对于X=”1″加载Foo2 )。 这里有没有人对这些基本问题有合理的解释: 为什么M解决了,不应该解决类。 即使实例化M也不应加载Foo或at least Foo2 。 为什么扩展Application的类表现不同? 是否有其他Android类以不同的方式运行?