[JAVA] Une série de problèmes dans le développement de studios Android

C'est un rappel des bugs que j'ai eu jusqu'à présent et "Je vérifie cela à chaque fois ..." Sauf indication contraire, android studio 3.0.1 + java 1.8.0

édition de construction gradle

Minimum supported Gradle version is 4.1. Current version is 2.14.1. https://qiita.com/izuki_y/items/26e5735a26a3494b4833#errorminimum-supported-gradle-version-is Il n'y a pas de version de gradle, donc si vous le donnez, il sera résolu

Error: '.' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore https://teratail.com/questions/130852 Le nom du fichier est une erreur non valide Pour une raison quelconque, il y avait deux `` .``` avant l'extension, alors corrigez-le

Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version 14 declared in library [com.google.android.gms:play-services:11.0.4] https://qiita.com/naotsune/items/8a45fb5436b50d3fef56 Augmenter l'erreur minSdkVersion Élever et résoudre

Error:Execution failed for task ':approcessDebugGoogleServices'. Texte intégral ⬇︎

Error:Execution failed for task ':approcessDebugGoogleServices'.
>Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 12.0.1.

Se produit lors de l'ajout d'un package FCM à l'aide de la fonction android studio Si vous regardez de près, vous pouvez voir l'application build.gradle

implementation 'com.google.firebase:firebase-messaging:11.0.4'

C'était une erreur. (La partie insérée automatiquement par android studio) Comme vous le dites, il sera résolu s'il est aligné sur 12.0.1

Error:Unable to find method 'org.gradle.api.artifacts.Configuration.defaultDependencies Texte intégral ⬇︎

Error:Unable to find method 'org.gradle.api.artifacts.Configuration.defaultDependencies(Lorg/gradle/api/Action;)Lorg/gradle/api/artifacts/Configuration;'.
Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

Essayez de télécharger comme on vous le dit

J'obtiens la même erreur >https://stackoverflow.com/questions/37655814/gradle-sync-failed-unable-to-find-method https://android.benigumo.com/20180121/build-environment-stable/ Je vais donner la version de build.gradle pour référence (2.2.1 => 5.4.1) > Élimination

Error:No such property: GradleVersion for class: JetGradlePlugin

Post-scriptum (2020/2/20)

https://cpoint-lab.co.jp/article/201908/11313/ Selon lui, la cause est que la version d'Android Studio est inférieure à la version de gradle. Alors

Il semble que l'un ou l'autre résoudra le problème. Est-il préférable de mettre à jour à moins de circonstances particulières?

Dossier de travail précédent

https://stackoverflow.com/questions/53600179/errorno-such-property-gradleversion-for-class-jetgradleplugin Il semble que la rétrogradation cette fois résoudra le problème ... 5.4.1 => 4.10.1 > On dit que les outils ne peuvent pas être trouvés >https://developer.android.com/studio/releases/gradle-plugin.html#updating-gradle En regardant la table de correspondance de

- com.android.tools.build:gradle:3.4.1
+ com.android.tools.build:gradle:3.3.0

À > On dit qu'il ne peut pas encore être trouvé >https://stackoverflow.com/questions/46316213/errorcould-not-find-com-android-tools-buildgradle3-3-issue-raise-after-upgra Ajout de google () à build.gradle de la racine PJ pour référence > Pour le moment

Error:Removing unused resources requires unused code shrinking to be turned on. https://stackoverflow.com/questions/52310841/removing-unused-resources-requires-unused-code-shrinking-to-be-turned-on de app.gradle

- minifyEnabled false
+ minifyEnabled true

Si vous le définissez sur

Compiler

Error: Your project contains C++ files but it is not using a supported native build system. Se produit dans PJ en utilisant cpp. Vous devez inclure le compilateur cpp. À l'origine, cmake est recommandé, mais abandonné en raison d'une erreur ...

Après avoir installé NDK https://qiita.com/kenmasu/items/598496840eef775db142 Modifier build.gradle pour référence

Error:(177, 0) *** Android NDK: APP_STL stlport_static is no longer supported. Please switch to either c++_static or c++_shared. See https://developer.android.com/ndk/guides/cpp-support.html for more information.    .  Stop.

Sortit de https://github.com/google/ExoPlayer/issues/5052 Changez la référence de APP_STL de Application.mk en APP_STL: = c ++ _ shared > Élimination

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. Une erreur qui se produit lorsque plusieurs dépendances sont en conflit. Je l'ai rencontré plusieurs fois, alors voici un exemple

https://qiita.com/Capotasto/items/ad1824722da7c3d9da97 Pour le moment, recherchez l'endroit où vous utilisez la bibliothèque mentionnée dans l'erreur dans ./gradlew app: dependencies '' Cette fois, je me suis fâché avec Plusieurs fichiers dex définissent Landroid / support / v4 / view / MotionEventCompat; ``

~~~Omission~~~
+--- com.google.android.gms:play-services-base:12.0.1
|    +--- com.google.android.gms:play-services-basement:12.0.1
|    |    +--- com.android.support:support-v4:26.1.0
~~~Omission~~~

D'après ce qui précède, il semble que com.google.android.gms: play-services-base: 12.0.1 appelle, donc

compile ('com.google.android.gms:play-services-base:12.0.1') {
    exclude group: 'com.android.support', module: 'support-v4'
}

Je vais le supprimer de la dépendance. Vous devriez pouvoir y aller

org.gradle.tooling.BuildException: Could not run build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-4.10.2-all.zip'. La phrase entière était très longue, donc seules les parties qui semblent pertinentes sont extraites

Error:Internal error:
org.gradle.tooling.BuildException: Could not run build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-4.10.2-all.zip'.
Caused by: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':app:javaPreCompileDebug'.
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:javaPreCompileDebug'.Caused by: java.lang.RuntimeException: Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath are found to contain annotation processor.  Please add them to the annotationProcessor configuration.
  - butterknife-6.1.0.jar (com.jakewharton:butterknife:6.1.0)
Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior.  Note that this option is deprecated and will be removed in the future.
See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.

https://stackoverflow.com/questions/47087730/why-do-i-have-problems-whith-com-jakewhartonbutterknife7-0-1-in-android-stud Modifiez app / build.gradle pour référence

android {
    ~~~~~Omission~~~~~

    defaultConfig {
        ~~~~~Omission~~~~~
        //Partie Postscript à partir d'ici
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }
        //Partie additionnelle jusqu'à présent
    }
    ~~~~~Omission~~~~~
}

> Éliminez!

Bogues d'exécution

Le clavier démarre sans autorisation au moment de la transition d'activité

https://codeday.me/jp/qa/20190205/219782.html https://developer.android.com/reference/android/view/WindowManager.LayoutParams#SOFT_INPUT_STATE_ALWAYS_HIDDEN Dans la méthode onCreate de l'activité que vous ne souhaitez pas lancer

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Est également résolu

En passant, setSoftInputMode``` peut spécifier le comportement du clavier logiciel pour la fenêtre spécifiée.

WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN empêche le clavier de monter lorsque la mise au point est activée



## La notification ne disparaît pas même si l'application est démarrée / transition depuis la notification push
 La cause était qu'il n'y avait pas de processus pour désactiver la notification en premier lieu
 Dans FCM dans onMessage

if(prefs.getInt("push_flg", 1)==1){ NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.icon, null, System.currentTimeMillis()); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, splash.class), 0); notification.setLatestEventInfo(this, "Chaîne de caractères préférée", str, contentIntent); mNotificationManager.notify(1, notification); }

 Il devrait y avoir un traitement comme.

#### **`mNotificationManager.notify(1, notification);Le premier argument de est l'ID de notification (type int).`**
```notify(1, notification);Le premier argument de est l'ID de notification (type int).

 Lors de l'effacement, spécifiez ceci et n'importe où

//Éteignez lorsque vous êtes averti NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.cancel(1);

 D'accord
 Cette fois, il a été installé juste après le démarrage de onCreate sur la première page.

 À propos, la méthode ci-dessus setLatestEventInfo () a été déconseillée et supprimée du niveau 23 de l'API.
 La recommandation est d'utiliser NotificationCompat

if(prefs.getInt("push_flg", 1)==1){ NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, splash.class), 0);

      NotificationCompat.Builder mBuilder =
              new NotificationCompat.Builder(this)
              .setSmallIcon(R.drawable.icon)          //Icône de notification
              .setContentTitle("Titre de la notification")           //Titre de la notification
              .setContentText(str)                    //Corps de notification
              .setContentIntent(contentIntent);       //Où faire la transition lorsque vous appuyez sur
      
      mNotificationManager.notify(1, mBuilder.build());  //enregistrement

}

 Je l'utilise comme ça.
 plus loin

mBuilder.setAutocancel(true);

 Vous pouvez également supprimer la notification lorsque vous appuyez dessus.
 Vous pouvez également utiliser le `` mNotificationManager.cancel () '' ci-dessus, afin de pouvoir le supprimer n'importe où.

install_failed_no_matching_abis res =- 113
 Se produit lors d'une tentative d'exécution sur un émulateur
https://stackoverflow.com/questions/36414219/install-failed-no-matching-abis-failed-to-extract-native-libraries-res-113
 Modifiez app / build.gradle pour référence

android { ~~~Omission~~~~

//ajouter à
splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a', 'x86_64'
        universalApk true
    }
}
~~~Omission~~~~

}

 Résolu avec
 En passant, si vous faites cela, des inconvénients peuvent survenir dans la version de la version, donc si cela ne se produit pas sur la machine réelle, il est nécessaire de supprimer ce qui précède uniquement dans la version de la version.
 Pour être honnête, c'est un problème, alors y a-t-il une meilleure façon ...

android.os.NetworkOnMainThreadException
 Erreur lors de l'ignorance d'une API spécifique

https://shirusu-ni-tarazu.hatenablog.jp/entry/2013/01/20/033030
http://shiro-16.hatenablog.com/entry/2014/03/25/004856
 Selon les spécifications d'Android Studio 3.x, vous ne devez pas essayer de communiquer à partir du thread principal
 Correction de sauter d'un autre fil

new Thread(new Runnable() { @Override public void run() { //Méthode de saut d'API } }).start();

 Sentiment

android studio Only the original thread that created a view hierarchy can touch its views.
 C'est le contraire de ce qui précède, et si vous essayez de changer la vue à partir d'une autre que le thread principal, une erreur se produit.

 Parce que c'était une partie qui ne pouvait pas être effectuée à partir du thread principal à l'endroit lié à l'erreur ci-dessus
http://accelebiz.hatenablog.com/entry/2016/09/01/061934
 Évitez d'utiliser `handler.post` pour référence
 Cependant, si vous le mettez dans handler.post jusqu'au point de communication, l'exception `NetworkOnMainThreadException` ci-dessus se produira cette fois, alors soyez prudent

requestFeature() must be called before adding content
https://stackoverflow.com/questions/4250149/requestfeature-must-be-called-before-adding-content
 Correspondant à la référence

requestWindowFeature(Window.FEATURE_NO_TITLE);

 J'utilisais, alors j'ai déplacé ça juste après super
 > Résolu, mais peut dépendre de la version. Enquête requise

## Le jugement de version du terminal est étrange
 Même si c'est Oreo, il ne juge pas cela ...
 Tant que je m'arrête au point d'arrêt, je sens que le résultat de ʻisAtLeast0 () `est étrange.
https://qiita.com/nukka123/items/60a942d054c17c9610ab
 Comme je l'ai dit, il semble y avoir un bogue dans la méthode elle-même
 Essayez de spécifier 26.0.1 qui est la dernière de > 26.0. +
 (La version est
https://dl.google.com/dl/android/maven2/index.html
 Confirmer avec. )
>`Error:(52, 13) Failed to resolve: com.android.support:support-v4:26.0.1`
>https://qiita.com/meru_h/items/f198a300d41e0c59aea4
 Même correspondance que
 > Élimination

## La communication http échoue à partir d'Android ver.9
https://backport.net/blog/2018/12/27/how_to_allow_http_on_android_9/
http://blog.riskfinder.co.jp/2016/03/network-security-configuration-android-n.html
 Selon l'article ci-dessus, il sera joué si vous communiquez avec http depuis Android 9.0, mais si vous l'autorisez explicitement, il passera.
 Le support suivant n'est pas recommandé car il est préférable d'utiliser https émoussé ...
 Cette fois, cela correspond en créant NetworkSecurityConfig.xml


#### **`network_security_config.xml`**
```xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">hoge.com</domain>
    </domain-config>
</network-security-config>

> sur androidManifest

   <application
        (réduction)
        android:networkSecurityConfig="@xml/network_security_config"
        >

Ajouter, vérifier le fonctionnement et terminer

Autre

Logcat ne sort pas

Se produit dans Android Studio 2.3 C'est embarrassant d'une manière très basique, mais une note d'autodiscipline ...

Non pas qu'elle ne soit pas sortie, elle n'existe pas dans l'onglet en bas, et la fenêtre elle-même ne peut pas être sortie Parce que la fenêtre n'apparaît tout simplement pas http://aws-mobile-development.hatenablog.com/entry/2016/11/06/065030#2Logcat%E8%A1%A8%E7%A4%BA%E6%96%B9%E6%B3%95 Affiché avec. Solution. Notez qu'une fenêtre sera ajoutée avec le nom "Android Monitor" au lieu de "logcat"

l'attente de la mise en ligne de l'appareil cible continue d'apparaître et ne peut pas être exécutée

http://b0npu.hatenablog.com/entry/2018/04/07/084709 Essayez le démarrage à froid maintenant > Il n'y a pas d'article lui-même >https://stackoverflow.com/questions/42757928/waiting-for-target-device-to-come-online-in-android-studio-2-3 Essayez de mettre à jour les outils SDK > Pas de changement

Essayez une autre version une fois (l'émulateur en ce moment est sdk19) 26 travaillé > Je ne peux pas réessayer à 19 ans Supprimez 19 fois et réinsérez-le pour voir J'ai reçu un message indiquant que les performances peuvent chuter si je ne les mets pas dans x86, alors je vais essayer de les mettre dans x86 > Enfin connecté ... Il semble que la source à insérer soit différente des autres images

Dans un autre cas, il a été résolu en redémarrant le studio Android.

Recommended Posts

Une série de problèmes dans le développement de studios Android
Application de reconnaissance faciale avec OpenCV + Android Studio
24 heures de difficulté avec le développement Android, Java en option
Développement Android app_preparation
Développement (paramètres) Riot (application de chat) dans Android Studio
Développement d'Android Studio pour la première fois (pour les débutants)
Compatible avec Android 10 (API 29)
Résumé du lien de développement Android
Les utilisateurs Java expérimentés se lancent dans le développement d'applications Android
Développement de plug-in avec ImageJ
[Rails] Développement avec MySQL
Préparation au développement d'applications Android 7/15
Remarques sur le studio Android
Vaincre Android Studio Partie 3-6
Créer un environnement de développement de programme Java avec Visual Studio Code
Problèmes récents avec rbenv
Vaincre Android Studio Partie 1 et Partie 2
Site de référence de développement Android
Comment faire une capture d'écran avec l'émulateur Android Studio
Utilisez Java inclus avec Android Studio pour créer React Native
Comment créer une application à l'aide de Tensorflow avec Android Studio
Créer un environnement de développement Web APP avec Java + Spring avec Visual Studio Code
Lancement du développement personnel de l'application Android
Introduction au développement d'applications Android
Développement d'applications ROS sur Android
Développement Android ~ transition d'écran (intention) ~
Source pour afficher le tableau de caractères avec numberPicker dans Android Studio (Java)
Introduction au développement d'applications Android 1 Installation de JDK et d'Android Studio pour mac