Android Studio 1.5.1, Gradle 2.8, с мобильными устройствами и носимыми устройствами с бесплатными/платными версиями

Я в растерянности. Используя AS 1.5.1 и Gradle 2.8, у меня есть мобильные модули и модули износа. Когда я выбираю отладочные версии мобильных устройств и вариантов износа, я понимаю, что мне нужно вручную скомпилировать/запустить каждую из них, чтобы получить доступ к соответствующим устройствам. И это происходит без проблем: отладка/запуск приложений/и т.д.

Однако для выпуска мобильных и износных вариантов, когда я не создал раздел signingConfigs в моих файлах mobile/wear build.gradle, AS предлагает мне сделать это с диалоговым окном, а внизу есть « кнопку «ИСПРАВИТЬ». Сначала я делаю это с моим модулем износа, добавляя в keyAlias, keyPassword, storeFile и storePassword. Затем в этом же диалоговом окне я выбираю один и единственный buildType выпуска, чтобы иметь signingConfig. Когда я нажимаю «ОК» в этом диалоговом окне, в предыдущем диалоговом окне есть формулировка внизу, где раньше была кнопка «ИСПРАВИТЬ», что все еще есть ошибки градиента. Я делаю те же шаги с файлом мобильного градиента, и в диалоговом окне также указывается, что все еще есть ошибки градиента. Результат сборки/запуска износа в версии Release не создает android_wear_micro_apk.apk, чтобы включить его в мобильную сборку. Когда мобильный модуль собран, в нем нет apk-файлов износа. Все мое приложение (мобильное/носимое) изначально представляло собой набор проектов Eclipse (работавших и фактически находящихся в магазине Play), которые я вручную объединил в AS.

Я попытался создать новый проект AS с мобильным телефоном и одеждой. КОГДА я пошел запускать релиз, это тоже побудило меня создать концепцию подписи. Однако при этом android_wear_micro_apk.apk создается во время компиляции износа. Кроме того, мобильное приложение содержит APK-файл износа. Отладочные и релизные APK-файлы для мобильных устройств имеют разные размеры, а релизный — больше. Единственный способ узнать о файле «android_wear_micro_apk.apk» — это новый/урезанный тестовый проект — иначе мой оригинал не дает клея.

Вот мобильная сборка.gradle

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

android {
    signingConfigs {
        the_pro_mobile_config {
            keyAlias 'MY_ALIAS_PRO'
            keyPassword 'MY_PASSWORD_PRO'
            storeFile file('my_keystore_pro.keystore')
            storePassword 'MY_STORE_PASSWORD_PRO'
        }
        the_free_mobile_config {
            keyAlias 'MY_ALIAS_FREE'
            keyPassword 'MY_PASSWORD_FREE'
            storeFile file('my_keystore_free.keystore')
            storePassword 'MY_STORE_PASSWORD_FREE'
        }
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    packagingOptions {
        exclude 'META-INF'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES/httpcore-4.0.jar'
        exclude 'META-INF/DEPENDENCIES/httpclient-4.3.6.jar'
    }
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 25
        versionName "2.0.0"

        multiDexEnabled = true
    }
    buildTypes {

        release {

            debuggable false
            jniDebuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-project.txt'), 'proguard-rules.pro'
            zipAlignEnabled true

        }

    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    productFlavors {
        free {
            applicationId "com.my_app.thefree"
            signingConfig signingConfigs.the_free_mobile_config
        }
        pro {
            applicationId "com.my_app.thepro"
            signingConfig signingConfigs.the_pro_mobile_config
        }
    }
}

dependencies {

    wearApp project(':wear')

    compile project(':my_license_module')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:support-annotations:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.android.support:palette-v7:23.1.1'
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.google.android.gms:play-services-wearable:8.4.0'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'commons-io:commons-io:2.4'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'com.google.android.gms:play-services-identity:8.4.0'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'
}

Вот износ build.gradle

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

android {

    signingConfigs {
        the_wearable_config {
            keyAlias 'MY_ALIAS'
            keyPassword 'MY_KEYPASSWORD'
            storeFile file('my_keystore_wearable.keystore')
            storePassword 'MY_STORE_PASSWORD'
        }
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 25
        versionName "2.0.0"

        multiDexEnabled = true
    }
    buildTypes {
        release {
            debuggable false
            jniDebuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-project.txt'), 'proguard-rules.pro'
            zipAlignEnabled true
            signingConfig signingConfigs.the_wearable_config
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    productFlavors {
        free {
            applicationId "com.myapp.my_free_app"
        }
        pro {
            applicationId "com.myapp.my_pro_app"
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.support:wearable:1.3.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}

person user3123813    schedule 31.12.2015    source источник
comment
Используете ли вы два разных ключа для подписи одежды и мобильных приложений? Я вижу, что хранилище ключей для этих двух файлов отличается в ваших файлах сборки...   -  person Ali Naddaf    schedule 31.12.2015
comment
только что добавил два signingConfigs с мобильного телефона в градацию износа и ту же проблему.   -  person user3123813    schedule 31.12.2015
comment
Пожалуйста, обновите свой исходный пост с последними изменениями.   -  person Ali Naddaf    schedule 31.12.2015
comment
см. мой собственный ответ ниже.   -  person user3123813    schedule 31.12.2015


Ответы (1)


Я исправил проблему. Есть и другие сообщения об этой же проблеме, и именно там я их нашел.

Сначала добавьте в файл износа gradle, добавьте

publishNonDefault true

в разделе «android {» файла.

Изменения касаются файла мобильного градиента.

Во-вторых, удалите "wearApp project(':wear')" и замените их обоими

freeWearApp project(path:':wear', configuration: 'freeRelease')

proWearApp project(path:':wear', configuration: 'proRelease')

Я получаю android_wear_micro_apk, созданный и добавленный в мобильный apk.

Моя следующая задача — выяснить, почему он не устанавливается автоматически для просмотра. Опять же, все это работало при выполнении Eclipse/etc.

person user3123813    schedule 31.12.2015
comment
Убедитесь, что ваши ключи одинаковы. Кроме того, перед попыткой этого удалите старые/другие версии приложения с устройства износа. - person Ali Naddaf; 31.12.2015
comment
пока не повезло. даже при использовании одних и тех же хранилищ ключей для мобильных устройств и износа, двойная проверка приложения износа не установлена ​​и перезапуск устройства износа (часы LG G). Фу! - person user3123813; 31.12.2015
comment
FWIW: при выполнении мобильного приложения и износа в вариантах отладки приложение износа взаимодействует с мобильным приложением. - person user3123813; 31.12.2015