如何在二级索引中引用jar中的Activity



我创建了一个应用程序,它使用了大量的广告网络sdk。

由于项目中使用了大量的库(Ad网络sdk),我在GingerBread设备中遇到了以下问题:

E/dalvikvm(7815): LinearAlloc exceeded capacity (5242880), last=5905

我通过创建多个索引文件解决了这个问题http://android-developers.blogspot.fr/2011/07/custom-class-loading-in-dalvik.html

对于我的具体需要,我创建了一个索引每个广告网络(库+相关文件)和项目的主要部分是在主索引。

简单来说,我把admob jar放在二级索引中,我能够显示admob横幅广告,但我不能显示插页广告,因为他们使用一个活动来显示它(com.google.ads.AdActivity)。我想不出如何正确地引用它。

我输入了manifest

        <activity
        android:name="com.google.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

但是当我尝试显示插页时,我有以下错误:

03-28 12:10:57.741: E/AndroidRuntime(32554): FATAL EXCEPTION: main03:28 12:10:57.741: E/AndroidRuntime(32554): Process: my. exe。包,PID: 3255403-28 12:10:57.741: E/AndroidRuntime(32554): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{my.package/com.google.ads。AdActivity}: java.lang.ClassNotFoundException:没有找到"com.google.ads"类。AdActivity" on path: DexPathList[[zip文件"/system/framework/com.google.android.maps.jar", zip文件"/data/app/my.package-2.apk"],nativeLibraryDirectories=[/data/app-lib/my. js]。Package-2,/vendor/lib,/system/lib]]03-28 12:10:57.741: E/AndroidRuntime(32554): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)03-28 12:10:57.741: E/AndroidRuntime(32554): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)3-28 12:10:57.741: E/AndroidRuntime(32554): at android.app.ActivityThread.access$800(ActivityThread.java:135)3-28 12:10:57.741: E/AndroidRuntime(32554): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)03-28 12:10:57.741: E/AndroidRuntime(32554): at android.os.Handler.dispatchMessage(Handler.java:102)03-28 12:10:57.741: E/AndroidRuntime(32554): at android.os. loop .loop(loop .java:136)03-28 12:10:57.741: E/AndroidRuntime(32554): at android.app.ActivityThread.main(ActivityThread.java:5017)03-28 12:10:57.741: E/AndroidRuntime(32554): at java.lang.reflect.Method。invokeNative(本地方法)03-28 12:10:57.741: E/AndroidRuntime(32554): at java.lang.reflect.Method.invoke(Method.java:515)03-28 12:10:57.741: E/AndroidRuntime(32554): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)03-28 12:10:57.741: E/AndroidRuntime(32554): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)03-28 12:10:57.741: E/AndroidRuntime(32554): at dalvik.system. native . art。主要(本地方法)03-28 12:10:57.741: E/AndroidRuntime(32554):由于:com.google.ads java.lang.ClassNotFoundException:没有找到类"。AdActivity" on path: DexPathList[[zip文件"/system/framework/com.google.android.maps.jar", zip文件"/data/app/my.package-2.apk"],nativeLibraryDirectories=[/data/app-lib/my. js]。Package-2,/vendor/lib,/system/lib]]3-28 12:10:57.741: E/AndroidRuntime(32554): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)[03:28 12:10:57.741] E/AndroidRuntime(32554): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)[03:28 12:10:57.741] E/AndroidRuntime(32554): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)03-28 12:10:57.741: E/AndroidRuntime(32554): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)03-28 12:10:57.741: E/AndroidRuntime(32554): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)03-28 12:10:57.741: E/AndroidRuntime(32554):…11个

有人能帮我一下吗?

感谢您的宝贵时间。

不能在二级索引中引用activity。另一种方法是从jar中提取活动类文件,并将它们放在主索引/apk中的另一个项目/jar中。在复杂的类层次结构的情况下,这可能不容易甚至不可能,但在我的情况下,活动有相对较少的依赖关系,这种方法工作。

最新更新