我开始为Android开发.我应该使用哪个IDE - Android Studio或Eclipse sdk?我想知道哪一个更好.
我可以在我的调试和发布版本中成功构建和运行我的Android应用程序,没有任何问题.然而,当我尝试运行我的新单元测试(之前从未有过它)时,我得到了可怕的DexIndexOverflowException.我怀疑ProGuard是不是运行我的单元测试,但它是我正常的调试和发布buildTypes.
ProGuard在单元测试运行配置中运行需要做什么?我搜索了Gradle文档,ProGuard文档和Android Studio文档来解决这个问题但我一无所获.
我正在尝试开发一个"动态"Android应用程序.
动态,我在清单中列出了一个在运行时"构建"的活动.
我可以很好地构建所需的活动,但是,当我尝试启动它时,我的应用程序失败了......
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.research.ps/com.research.Dynamic}: java.lang.ClassNotFoundException:
Didn't find class "com.research.Dynamic" on path: DexPathList[[zip file "/data/app/com.research.ps-1/base.apk"],nativeLibraryDirectories=[/data/app/com.research.ps-1/lib/arm,
/data/app/com.research.ps-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在运行时成功实例化Android Activity?
有没有办法在我的应用程序路径中添加"临时"或"shell"活动?然后用我的动态实例替换"临时"活动?
UPDATE
My Manifest XML包含此条目
<activity
android:name=".Dynamic"
android:label="@string/title_activity_dynamic"
android:theme="@style/AppTheme.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)
但是,我的应用程序中没有包含名为"Dynamic"的Activity.
我正在使用ByteBuddy构建我的动态活动: -
final Class<? extends android.support.v7.app.AppCompatActivity> dynamicType = new ByteBuddy(ClassFileVersion.JAVA_V8)
.subclass(android.support.v7.app.AppCompatActivity.class, IMITATE_SUPER_CLASS)
.name("com.research.Dynamic")
.make()
.load(getClass().getClassLoader(), new AndroidClassLoadingStrategy.Wrapping(this.getDir("dexgen", Context.MODE_PRIVATE)))
.getLoaded();
final Intent intent = new Intent(this, dynamicType);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)