2015-07-30 3 views
2

Я всегда получаю java.lang.ClassNotFoundException: ru.ooolpi.lpiapp.ui.activity.MainActivity. Но у меня такой класс. Позже я обнаружил, что мои файлы проекта отсутствуют в apk.Мои файлы проекта не включены в apk

Мой сценарий сборки:

buildscript { 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.3' 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' 
     // classpath 'org.robolectric.gradle:gradle-android-test-plugin:0.10.1' 
     //classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0' 
    } 
} 
//apply plugin: 'android-sdk-manager' 
apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 

repositories { 
    maven { url 'https://github.com/donnfelker/mvn-repo/raw/master/' } 
    maven { url 'https://repo.commonsware.com.s3.amazonaws.com' } 
    jcenter() 
} 

dependencies { 
    compile 'com.android.support:multidex:1.0.0' 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v4:22.2.1' 
    compile 'com.android.support:appcompat-v7:22.2.1' 
    compile 'com.android.support:design:22.2.1' 
    compile 'com.squareup.dagger:dagger:1.2.2' 
    compile 'com.jakewharton:butterknife:7.0.1' 
    compile 'com.squareup:otto:1.3.8' 
    apt 'com.squareup.dagger:dagger-compiler:1.0.1' 
} 

android { 
    compileSdkVersion 22 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     //applicationId "ru.ooolpi.lpiapp" 
     minSdkVersion 10 
     targetSdkVersion 22 
     versionCode 2 
     versionName "1.0.1" 
     multiDexEnabled true 
    } 
    packagingOptions { 
     // Exclude file to avoid 
     // Error: Duplicate files during packaging of APK 
     exclude 'META-INF/services/javax.annotation.processing.Processor' 
     exclude 'META-INF/notice.txt' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/license.txt' 
     exclude 'META-INF/NOTICE.txt' 
     exclude '.readme' 
    } 
    dexOptions { 
     jumboMode = true 
     javaMaxHeapSize "4g" 
    } 
    signingConfigs { 
     release { 
      storeFile file('../devcert.jks') 
      storePassword '123456' 
      keyAlias 'dev' 
      keyPassword '123456' 
     } 
    } 
    lintOptions { 
     //disable 'InvalidPackage' 
     abortOnError false 
    } 
    compileOptions{ 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      signingConfig signingConfigs.release 
      zipAlignEnabled true // this is default for release 
     } 
     debug { 
      applicationIdSuffix '.debug' 
      minifyEnabled false 
     } 
    } 
} 

Я пытался построить с Android Studio и просто с gradlew. Результат тот же - мои файлы не включены в apk.

Обновление: Моя структура проекта

project structure

+0

Я думаю, что это произошло из-за включенной защиты. –

ответ

0

Проблема заключалась в том, что я использовал разные версии для кинжала и его компилятора.

Как это было:

compile 'com.squareup.dagger:dagger:1.2.2' 
apt 'com.squareup.dagger:dagger-compiler:1.0.1' 

Он должен выглядеть следующим образом:

compile 'com.squareup.dagger:dagger:1.2.2' 
apt 'com.squareup.dagger:dagger-compiler:1.2.2' 

Так, Android студия отказалась выделить проблемы в моем коде (я не знаю, почему эти вещи связаны) ,

1

Посмотрите на ваш конфигурационный файл Proguard.

Убедитесь, что вы не удаляете какой-либо класс, который вы используете в своем apk. Чтобы вручную сохранить классы, добавьте следующие строки:

-keep class ru.ooolpi.lpiapp.** { *; } 
-dontwarn ru.ooolpi.lpiapp.** 
+0

Это не помогло. И дело в том, что proguard отключен для сборки отладки, которая тоже не работает. – b1n0m

Смежные вопросы