使用Multidex

时间:2018-12-02 11:42:31

标签: android android-studio multidex

所以我的问题是,在设备上运行应用程序时出现“找不到类”错误。

"io.tutorial.app.App" class not found at the path io.tutorial.app

实际上,该路径中存在App.java类,而我的类也在扩展MultiDexApplication

到目前为止,我发现内置的apk中已经生成了两个dex文件,即classes.dex和classes2.dex。奇怪的是,两个dex文件中都存在“ io.tutorial.app”包(我认为这是问题所在)。 classes2.dex 文件中的“ io.tutorial.app”包中没有类,但我的所有类都存在于同一包中的 classes.dex 文件中。 io.tutorial.app”。请帮助我找到解决方案。

清单:

<application
    android:theme="@style/AppTheme"
    android:label="@string/app_name"
    android:icon="@mipmap/ic_app"
    android:name="io.tutorial.app.App"
    android:allowBackup="true"
    android:supportsRtl="true"
    tools:ignore="GoogleAppIndexingWarning">

    <activity
        android:theme="@style/AppTheme.NoActionBarFullScreen"
        android:name=".ui.activity.SplashActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

Gradle:app

https://pastebin.com/JpkRZY1G

应用类别:

public class App extends MultiDexApplication {
@Inject
Cache cache;

public void onCreate() {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    super.onCreate();
    initRemoteConfig();
    Injector.getInstance().init(this);
    Injector.getInstance().appComponent().inject(this);
    initFabric();
    initRealm();
    initPicasso();
    initRemoteConfig();
    initAds();
    initOneSignal();
}

1 个答案:

答案 0 :(得分:0)

我怀疑有@Inject的注释-或使用了Injector

尝试改用MultiDex.install()

public class App extends Application {
    ...
    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
}
相关问题