我有一个主要编写在Kotlin中的项目,但有一些Java类。项目目前进展顺利,我想补充的不同环境之间切换,为此我使用的香料的可能性:带有产品风味和Kotlin的ClassNotFoundException
productFlavors {
prod {
dimension "default"
buildConfigField 'boolean', 'FABRIC', 'true'
applicationId = "com.myapp"
}
beta {
dimension "default"
buildConfigField 'boolean', 'FABRIC', 'true'
applicationId = "com.myapp.beta"
}
dev {
dimension "default"
buildConfigField 'boolean', 'FABRIC', 'false'
applicationId = "com.myapp.dev"
}
}
然而,当我在一个味道,不生产(不改变的applicationID运行)我得到一个ClassDefNotFoundException Java类:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.myapp.beta.ui.view.ScrollBehavior" on path: DexPathList[[zip file "/data/app/com.myapp.beta-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.beta-1/lib/arm64, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 33 more
我使用过Android Studio 3.0测试版4科特林插件1.1.3-2版本。
构建文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt' // Use experimental kapt implementation
repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/ttymsd/maven"
}
maven { url 'https://jitpack.io' }
}
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.myapp"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
sourceSets {
main.java.srcDirs += 'src/main/java'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "default"
productFlavors {
prod {
dimension "default"
buildConfigField 'boolean', 'FABRIC', 'true'
applicationId = "com.myapp"
}
beta {
dimension "default"
buildConfigField 'boolean', 'FABRIC', 'true'
applicationId = "com.myapp.beta"
}
dev {
dimension "default"
buildConfigField 'boolean', 'FABRIC', 'false'
applicationId = "com.myapp.dev"
}
}
dataBinding {
enabled = true
}
dependencies {
(...)
}
}
清单:在代码
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/MyTheme">
<activity
android:name=".ui.dashboard.DashboardListActivity"
android:launchMode="singleTop"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
相关部分:
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:theme="@style/MycujooPlayerTheme.AppBarOverlay"
app:layout_behavior=".ui.view.ScrollBehavior">
彻底清洁和重建是否解决了这个问题?是否立即运行修复它? – nhaarman
我从来没有即时运行(它很烂)。清洁和重建不能修复它 –
请张贴您的清单包 – crgarridos