Bonjour,

J'ai développé une watchface qui fonctionne très bien mais celle-ci n’apparaît sur ma montre que lorsque j’exécute l'application via android studio.

Je n'arrive pas à faire apparaître la watchface dans le logiciel android wear et sur la montre avec l'installation via l'apk que je génère. Je pense donc qu'il s'agit d'un problème de packaging.

Ce qui fait que mon application est refusé de google play : "Your app does not have Android Wear functionality that’s visible to the user."


build.gradle côté wear
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
apply plugin: 'com.android.application'
 
 
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
 
    defaultConfig {
        applicationId "com.virlouvet.barrewatchface"
        minSdkVersion 21
        targetSdkVersion 21
        versionCode appVersionCode
        versionName appVersionName
    }
 
    signingConfigs {
        production {
            storeFile ''
            storePassword ''
            keyAlias ''
            keyPassword ''
        }
    }
 
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(
                    output.outputFile.parent,
                    output.outputFile.name.replace("wear-popwatchface-release.apk", "wear_popwatchface_release_${variant.versionName}.apk"))
        }
    }
 
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.production
        }
    }
 
 
    productFlavors {
        popwatchface {
            applicationId "com.virlouvet.barrewatchface"
        }
    }
}
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.support:wearable:1.1.0'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.android.support:support-v4:21.0.3'
    wearApp project(':wear')
}
 
 
android.applicationVariants.all { variant ->
 
    if (variant.buildType.name == 'release') {
        variant.outputs.each { output ->
            output.assemble << {
                println "Copying Wear APK inside mobile"
                copy {
                    from output.outputFile.path
                    into "../mobile/src/main/res/raw"
                }
            }
        }
    }
}

build.gradle côté mobile
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
 
    defaultConfig {
        applicationId "com.virlouvet.barrewatchface"
        minSdkVersion 18
        targetSdkVersion 21
        versionCode appVersionCode
        versionName appVersionName
    }
 
    signingConfigs {
        production {
            storeFile ''
            storePassword ''
            keyAlias ''
            keyPassword ''
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.production
        }
    }
 
    productFlavors {
        popwatchface {
            applicationId "com.virlouvet.barrewatchface"
        }
    }
}
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //wearApp project(':wear')
    //wearApp project(path: ':wear', configuration: 'xavierRelease')
    //wearApp files('./src/main/res/raw/wear_popwatchface_release_1.1.5.apk')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.android.support:support-v4:21.0.3'
}
 
 
project.afterEvaluate {
    android.applicationVariants.all { variant ->
 
        if (variant.buildType.name == 'release') {
            tasks["generate${variant.name.capitalize()}Assets"].dependsOn(":wear:assemble${variant.name.capitalize()}")
 
            variant.outputs.each { output ->
                task("handle${variant.name.capitalize()}WearDesc") << {
                    def apkFileName = "wear-${variant.flavorName}-${variant.buildType.name}.apk"
                    File wearDescFile = file("${output.processResources.resDir}/xml/wear_desc.xml")
                    String content = wearDescFile.getText('UTF-8')
                    content = content.replaceAll(/APPLICATION_ID/, "${variant.mergedFlavor.applicationId}")
                    content = content.replaceAll(/VERSION_CODE/, "${variant.mergedFlavor.versionCode}")
                    content = content.replaceAll(/VERSION_NAME/, "${variant.mergedFlavor.versionName}")
                    content = content.replaceAll(/WEAR_BUILD/, apkFileName)
                    wearDescFile.write(content, 'UTF-8')
 
                    output.processManifest.dependsOn("handle${variant.name.capitalize()}WearDesc")
 
                    output.assemble << { // Clean the assets folder of all apk
                        ant.delete(includeEmptyDirs: 'true') {
                            fileset(dir: file('./src/main/res/raw/'), includes: '*.apk')
                        }
                    }
                }
 
            }
 
        }
    }
 
}

je compile avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
gradlew clean mobile:assemblePopwatchfaceRelease
J'ai utilisé ce tutoriel : http://blog.octo.com/packager-une-ap...-la-vraie-vie/

J'ai essayé par mal de chose mais rien ne fonctionne, quelqu'un aurais des compilations qui fonctionne ? ou une piste ... (je peux fournir plus de codes si besoin !)

Merci d'avance !