Мультидекс студии Android и проблема с Ndk

Я использую студию Android для разработки приложения для Android. У меня есть один проект, в котором есть два модуля в качестве библиотеки, и оба модуля имеют несколько общих библиотек (файл .so), из-за этого у меня возникает проблема с несколькими dex. Ниже приведено сообщение Gradle

> Error:Execution failed for task ':ftrScanApiAndroidHelperUsbHost:compileReleaseNdk'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/home/intel/BackUp/Ndk/ndk-build'' finished with non-zero exit value 2

Я попробовал ниже решение этой проблемы, но это не сработало для меня.

defaultConfig{
       multiDexEnabled true
    } 

файл build.gradle:

> apply plugin: 'com.android.application' // apply plugin: 'android'
> 
> android {
> 
>     signingConfigs {
>         config {
>             keyAlias 'xxx'
>             keyPassword 'xxx'
>             storeFile file('/home/intel/Downloads/xxx.jks')
>             storePassword 'xxx'
>         }
>     }
>     compileSdkVersion 21
>     buildToolsVersion '21.1.2'
>     defaultConfig {
>         applicationId 'com.xxxx.xxx.xxx'
>         minSdkVersion 14
>         targetSdkVersion 14
>         versionCode 3
>         versionName "1.2"
>         signingConfig signingConfigs.config
>         multiDexEnabled true
>     }
>     buildTypes {
>         release {
>             minifyEnabled false
>             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
>             signingConfig signingConfigs.config
>         }
>         debug {
>             signingConfig signingConfigs.config
>         }
>     }
>     productFlavors {
>     }
>     sourceSets {
>         main {
>             jni.srcDirs = []
>             assets.srcDirs = ['src/main/assets', 'src/main/assets/']
>         }
>     }
> 
> }
> 
> dependencies {
>     compile 'com.android.support:appcompat-v7:21.0.3'
>     compile 'com.google.android.gms:play-services:+'
>     compile project(':pulltorefresh')
>     compile 'com.google.code.gson:gson:2.3.1'
>     compile files('libs/ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar')
>     compile files('libs/possdk.jar')
>     compile project(':ftrScanApiAndroidHelperUsbHost')
>     compile project(':ftrWsqAndroidHelper') }

local.properties ниже:

sdk.dir=/home/intel/Takencode/Android/Sdk

ndk.dir=/home/intel/Takencode/Android/Ndk

Есть ли другое решение для вышеуказанной ошибки? Любое предложение


person Santosh Kathait    schedule 27.11.2015    source источник
comment
Вы пробовали это в Android Lollipop?   -  person Fabin Paul    schedule 27.11.2015
comment
Вы имеете в виду компилировать версию sdk... леденец? @ФабинПол   -  person Santosh Kathait    schedule 27.11.2015
comment
Вы запускали приложение на устройстве/эмуляторе леденцов?   -  person Fabin Paul    schedule 27.11.2015
comment
Как я могу запустить приложение без компиляции... Я получаю эту ошибку во время компиляции... Кстати, я использую устройство Lollipop OS   -  person Santosh Kathait    schedule 27.11.2015
comment
Вы скомпилировали com.android.support:multidex:1.0.1?   -  person Fabin Paul    schedule 27.11.2015
comment
Еще нет, позвольте мне попробовать это тоже ..   -  person Santosh Kathait    schedule 27.11.2015
comment
опубликуйте свой код градации   -  person johnrao07    schedule 27.11.2015
comment
вы пытались удалить строку miltiDexEnable   -  person Vivek Patel    schedule 27.11.2015
comment
Просто попробуйте clean и rebuild это.   -  person Anoop M Maddasseri    schedule 27.11.2015
comment
да @VivekPatel удаление multidexEnable у меня не сработало   -  person Santosh Kathait    schedule 27.11.2015
comment
см. обновленное сообщение Gradle выше   -  person Santosh Kathait    schedule 27.11.2015
comment
Я думаю, что эта проблема связана с ndk, а не с multidex. Не могли бы вы показать мне local.properties контент и build.gradle, которые вы настроили для ndk?   -  person mdtuyen    schedule 27.11.2015
comment
код оценки обновлен выше @johnrao07   -  person Santosh Kathait    schedule 27.11.2015
comment
local.properties обновлено @mdtuyen, очищено, и перестроение не сработало :( Anoop M   -  person Santosh Kathait    schedule 27.11.2015
comment
вы настроили путь ndk, но в файле gradle я не вижу путь к файлу библиотеки   -  person mdtuyen    schedule 27.11.2015
comment
Пожалуйста, посмотрите мой ответ ниже   -  person mdtuyen    schedule 27.11.2015


Ответы (3)


Вы должны добавить зависимость библиотеки поддержки в свой gradle

compile 'com.android.support:multidex:1.0.1'

Если у вас уже есть пользовательское приложение, вам нужно изменить его вместо расширения Application, вы должны расширить этот класс с помощью MultiDexApplication, как это

MyApplication extends MultiDexApplication {

}

Если у вас нет собственного класса приложения, вам нужно только добавить его в манифест внутри тега приложения.

<application
   android:name="android.support.multidex.MultiDexApplication">   
</application>

Если вам не нужен весь play service, вы можете удалить зависимость и добавить только те зависимости, которые вам нужны, как это

compile 'com.google.android.gms:play-services-gcm:8.1.0'
compile 'com.google.android.gms:play-services-maps:8.1.0'
compile 'com.google.android.gms:play-services-location:8.1.0'

тогда не нужно делать ваше приложение MultiDex

Для ndk вы можете увидеть этот SO Thread

person Kamal    schedule 27.11.2015

Вы можете попробовать!

sourceSets {
    main {
        jni.srcDirs = []
        assets.srcDirs = [] //disable automatic ndk-build call
    }
}
person johnrao07    schedule 27.11.2015

Наконец, после многого поиска в Google, я исправляю проблемы. Что идет не так для вышеуказанной проблемы.

Case 1: В модулях у меня есть несколько общих файлов jni и jnilibs (файлы .so) ... поэтому я удалил папку jni, потому что она содержит тот же файл .so ... удаляя избыточность и конфликты из проекта.

Case 2:Может быть случай, когда модули (библиотека) и основная тема проекта, значки отличаются (определены в файле AndroidManifest.xml). Чтобы исправить этот поиск файла манифеста... сделайте модуль и основную тему проекта одинаковыми.

В моем случае модуль с темой ниже

android:theme="@style/AppTheme" 

и основной проект, имеющий

 android:theme="@android:style/Theme.Holo.Light.NoActionBar"

поэтому я меняю тему модуля так же, как и тему проекта.

Также добавьте строку ниже в тег манифеста

xmlns:tools="http://schemas.android.com/tools"  

После добавления строки выше добавьте строку ниже в тег приложения

tools:replace="android:icon,android:theme"

Теперь он работает безупречно.

person Santosh Kathait    schedule 30.11.2015