Problèmes rencontrés par Android, solutions et quelques astuces

1. Modifier dynamiquement la valeur de couleur de l'attribut solide de Forme

Habituellement, nous utilisons souvent Shape en xml, et le même Shape peut être utilisé dans le développement, mais la couleur et la couleur d'arrière-plan sont différentes.

//比如:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="5dp" />
    <solid android:color="@color/white" />
</shape>

Solution:

//我们在Activity中去动态修改背景颜色,就不需要重新再写一个shape了。是不是很方便
GradientDrawable drawable =(GradientDrawable)view.getBackground();
drawable.setColor(getResources().getColor(color));

2. Le studio Android crée un nouveau projet et a construit pour résoudre

La raison principale peut être que la version de votre studio Android ne lui correspond pas, ou qu'elle est bloquée. En conséquence, la version de gradle ne peut pas être téléchargée , elle a donc été construite

Trouvez d'abord l'adresse du package de fichiers :
C:\Users\Administrator.gradle\wrapper\dists
Ceci est mon adresse, vous pouvez trouver votre adresse correspondante

Écrivez la description de l'image ici

La solution est de trouver votre nouveau projet

Écrivez la description de l'image ici

Modifiez les paramètres à l'intérieur : distributionUrl=…

#Fri Jan 06 12:40:33 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

N'oubliez pas que le principe est que votre fichier gradle-2.10-all n'est pas vide, sinon vous devez encore attendre la construction .
Une autre façon est d'aller sur (https://services.gradle.org/distributions) pour télécharger la même version de gradle et de la mettre dans le chemin : dossier C:\Users\Administrator.gradle\wrapper\dists.
Peut-être qu'après avoir terminé la modification, l'erreur suivante sera à nouveau signalée,

Échec de la synchronisation de Gradle : une autre tâche d'actualisation du projet est en cours d'exécution pour le projet : C:\Users\Administrator\Desktop\Deyijia1
Consultez le journal de l'IDE pour plus de détails (Aide | Afficher le journal)
Ensuite, fermons directement le studio Android et trouvons le journal du journal . supprimer tout
Écrivez la description de l'image ici


3. La solution au caractère non mappable de GBK mal encodé lors de la compilation JNI

La raison de cette erreur est que le JDK est une version internationale. Lors de la compilation, si nous n'utilisons pas le paramètre -encoding pour spécifier le format d'encodage de notre programme source JAVA, javac.exe obtient d'abord le format d'encodage adopté par notre système d'exploitation par défaut. .

Solution : vous devez utiliser le paramètre -encoding pour spécifier la méthode d'encodage, par exemple :

javah -jni -encoding UTF-8 com.example.XXXX.XXXX.MainActivity

4. Conflit de pot de paiement Youmeng WeChat

Si vous utilisez la version simplifiée de WeChat, il n'y a pas de contenu lié au paiement. Si vous souhaitez ajouter un paiement, supprimez simplement le pot d'umengwx (conservez weixin2) et placez-le dans le pot natif de WeChat. Si vous utilisez la version complète de WeChat, le jar weixin1 est le même jar que le sdk natif WeChat (juste avec un nom différent), donc afin de garantir la même version, veuillez utiliser le jar weixin1 et supprimer le sdk natif WeChat pour réaliser le paiement.

Raison : libammsdk.jar et SocialSDK_WeiXin_1.jar contiennent le même fichier a.class dans les deux packages.

Code d'erreur:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/tencent/mm/opensdk/a/a/a$a.class

Le paragraphe ci-dessus est la solution de Youmeng, qui semble un peu brutale

REMARQUE : J'utilise la version complète . Les deux packages jar libammsdk.jar et SocialSDK_WeiXin_Full.jar ont été utilisés , et les packages originaux SocialSDK_WeiXin_1.jar et SocialSDK_WeiXin_2.jar ont été supprimés, provoquant l'échec de l'appel de paiement WeChat.

La solution finale est de continuer à utiliser SocialSDK_WeiXin_1.jar, et les deux packages de SocialSDK_WeiXin_Full.jar ne seront pas en conflit. Tous les autres packages de l'ancienne version sont supprimés.

5. [Android] WebView chargeant les pages https ne peut pas afficher les ressources normalement

Aller à cette adresse : http://blog.csdn.net/crazy_zihao/article/details/51557425

6. Propriété ImageView (fitXY)

L'effet de la méthode d'affichage de fitXY est le suivant : selon la taille définie par ImageView, l'image est étirée pour remplir l'espace, et (lorsque cette propriété est définie seule) l'image sera déformée.
AdjustViewBounds consiste à limiter l'image pour conserver le rapport d'image d'origine lors de l'affichage. (Combiné avec le mode d'affichage fitXY peut obtenir un effet adaptatif)

7.java.lang.IndexOutOfBoundsException : Incohérence détectée. Position de l'élément non valide

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 157(offset:157).state:588
               at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3300)
               at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3258)
               at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1803)
               at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1302)
               at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1265)
               at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1093)
               at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:956)
               at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:2715)
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
                at android.view.Choreographer.doCallbacks(Choreographer.java:555)
                at android.view.Choreographer.doFrame(Choreographer.java:524)
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
                at android.os.Handler.handleCallback(Handler.java:615)
                at android.os.Handler.dispatchMessage(Handler.java:92)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:4921)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
                at dalvik.system.NativeStart.main(Native Method)

Solution : http://www.apkbus.com/blog-898535-67963.html

8. En ce qui concerne l'utilisation de recycleview, la mise en page de l'élément est plus élevée et le problème de mise en page de l'affichage incomplet.

Je l'ai vérifié plus tard, principalement parce que la couche la plus externe de la mise en page android:layout_height="match_parent" utilise cet attribut, ce qui entraîne le dessin d'un seul écran lors du dessin . Nous mettrons en page l'attribut le plus externe **android:layout_height="wrap_content"** afin qu'il n'y ait pas de problème de dessin incomplet.

9.Traduction1.3.6 Configurer l'ID d'application et la clé d'application

  1. Connectez-vous à http://ai.youdao.com, puis enregistrez-vous et connectez-vous à votre compte.
  2. Trouver la gestion des applications - mon application - créer une application
  3. Le temps d'assister au miracle est venu, et il y a deux images lorsque vous vous serrez la main

Écrivez la description de l'image ici

Il est temps de travailler ensuite, donc je n'ai pas besoin d'en dire plus.

#Erreur : (176, 13) Échec de la résolution :
**La raison générale de cette situation est qu'il y a un problème avec l'adresse de téléchargement référencée et que le gradle est introuvable. **Nous devons donc modifier directement l'adresse maven du fichier build.gradle.

 repositories {
        jcenter()
//        maven {
//            url 'http://maven.aliyun.com/nexus/content/groups/public'
//        }
        maven {
            url 'https://maven.google.com/'
        }
    }

10. java.lang.NoClassDefFoundError apparaît : sous Android 5.0

La raison est la suivante : parce que le nombre de méthodes de projet dépasse la limite de dex dépassant 65535 .
Nous avons activé multiDexEnabled true , mais n'avons pas initialisé MultiDex.install(base) dans Application , ce qui a entraîné une erreur. Ajoutez cette méthode dans la classe Application .

  @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(base);
    }

Solution : https://www.jianshu.com/p/8b4f711da0bb

11. Environnement java.lang.NoClassDefFoundError : Échec de la résolution de : Lcom/ta/utdid2/device/UTDevice

Si vous utilisez le SDK Youmeng, vous pouvez vérifier s'il n'y a pas de package importé

compile 'com.umeng.sdk:utdid:1.1.5.3'

La façon d'écrire après Android Studio 3.0 est

implementation 'com.umeng.sdk:utdid:1.1.5.3'

Si l'erreur est toujours signalée, il peut y avoir un conflit avec le package d'Ali. Solution
Veuillez passer à : https://help.aliyun.com/knowledge_detail/55956.html

12. Youmeng Device_token ne peut pas être obtenu problèmes liés [version Android]

Solution :
Veuillez accéder à : http://bbs.umeng.com/thread-15233-1-1.html

13.impossible de trouver l'implémentation de WordRoomDatabase. WordRoomDatabase_Impl n'existe pas

le problème réside dans :

  1. Le projet utilise-t- il kotlin ?
    Si oui, veuillez vérifier si le fichier build.gradle est correct
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

//apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.zy.wanandroid"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'

	//主要就是这三个,你要看是否一致,使用是否正确,如果你使用了kotlin 三个缺一不可
    implementation "android.arch.persistence.room:runtime:1.1.1"
    //注意看 后缀还不一样 room:compiler
    annotationProcessor  "android.arch.persistence.room:compiler:1.1.1"
    kapt "android.arch.persistence.room:compiler:1.1.1"
    
    implementation 'android.arch.lifecycle:extensions:1.1.1'
    implementation "android.arch.navigation:navigation-fragment:1.0.0-alpha07"
    implementation "android.arch.navigation:navigation-ui:1.0.0-alpha07"

}

14. io.reactivex.exceptions.UndeliverableException : l'exception n'a pas pu être transmise au consommateur car il a déjà annulé/éliminé le flux ou l'exception n'a nulle part où aller pour commencer. Lectures complémentaires : https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | kotlin.NotImplementedError : une opération n'est pas implémentée : non implémentée

Solution : https://blog.csdn.net/lmh820822/article/details/76854411

15. java.lang.RuntimeException : impossible de démarrer l'activité ComponentInfo{xxxActivity} : java.lang.IllegalStateException : seules les activités opaques en plein écran peuvent demander une orientation

Analyse de la cause Pour
les cibles dk26 et supérieures, android:screenOrientation ne peut pas être défini via le manifeste pour les activités avec des thèmes transparents.
Pour une analyse spécifique, voir
https://zhuanlan.zhihu.com/p/32190223
Solution
Vérifiez si l'activité signalant l'erreur a déclaré android:screenOrientation dans le AndroidManifest, et supprimez-la si nécessaire.

16. Exception OKHttp java.lang.IllegalStateException : fosses rencontrées lors de la fermeture et du débogage

Adresse de la solution : https://blog.csdn.net/u012587005/article/details/78504925

17. Commutateur multilingue Android, adapté à 8.0

Adresse de la solution : https://www.jianshu.com/p/f56e30b6f631
La raison spécifique est que si le système est supérieur à 8.0, il doit utiliser le contexte de l'activité.

18.android Typeerror : Impossible de lire la propriété 'xxxx' null

Adresse de la solution : https://www.e-learn.cn/content/wangluowenzhang/651768

19. Niveau d'API Android attendu 21+ mais avait 19 ans

Vérifiez si votre version d'Okhttp est passée de
l'implémentation 'com.squareup.okhttp3:logging-interceptor:3.14.0' à
l'implémentation 'com.squareup.okhttp3:logging-interceptor:3.12.0' et vous devez rétrograder la version

20. Solution de problème de journal git log du terminal de studio Android

entrée de terminal : définissez MOINSCHARSET=utf-8

21. java.lang.IllegalArgumentException : le paramètre spécifié comme non nul est nul : méthode kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, paramètre favicon

Solution : https://blog.csdn.net/jia635/article/details/81068866

22. Demande de signature de demande

jarsigner -verbose -keystore [ chemin du fichier de clé ] C:\sign_verification\mykeystore -signedjar [ nom du package et chemin après le conditionnement ] meizu.apk [ nom du package non signé ] meizuemptyapk-release-unsigned.apk [alias de clé] meizu

23. AndroidStudio n'affiche pas le nouveau projet Flutter

Solution : https://www.jianshu.com/p/ebaf065d7b1c

24. Erreur d'analyse du package d'installation d'Android 9.0

Solution : https://blog.csdn.net/keep_my_mine/article/details/101025819

25. WebView, le deuxième appel à loadUrl ne rafraîchit pas la page

Solution : https://blog.csdn.net/qq_26225663/article/details/100557671

26. Schéma de clé de remplacement du marché des applications Google

https://support.google.com/googleplay/android-developer/contact/otherbugs
Communiquez avec le service client et attendez l'e-mail de réponse officiel de Google. Le contenu est le suivant
insérez la description de l'image ici
Exportez le certificat de la clé au format PEM :
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
Après avoir exécuté ce code, le fichier PEM peut être produit. Envoyez-le à la boîte aux lettres officielle de Google et tout ira bien

27. Autorisation manquante d'Android pour insérer un crash d'autorisation de badges

La situation est également assez étrange, seul le modèle Sony a cette invite d'erreur d'autorisation, après diverses recherches, il est finalement constaté que certaines autorisations de modèle spéciales doivent être ajoutées dans AndroidManifest.xml. Plus près de chez nous, comme suit :

<!-- START: ShortcutBadger -->
<!-- Samsung -->
<uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>

<!-- HTC -->
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>

<!-- Sony -->
<uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
<uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>

<!-- Apex -->
<uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>

<!-- Solid -->
<uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>

<!-- Huawei -->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE" />
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS" />
<!-- End: ShortcutBadger -->

28. Android-Device prend en charge x86, mais APK ne prend en charge que armeabi-v7a, armeabi, x86_64

Solution : https://blog.csdn.net/qq_34476727/article/details/74910379

29. java.io.FileNotFoundException : /storage/emulated/0/

La raison spécifique est que, parce que le projet actuel utilise la version Android Q, le numéro de version correspondant est 29. Il existe cette
solution BUG : https://www.jianshu.com/p/3159f2c5b2a1

30. Android 10 Autorisation refusée

Solution : https://blog.csdn.net/wuqingsen1/article/details/104752459/

31. Débogage sans fil de la machine réelle Android Studio

Tutoriel : https://www.cnblogs.com/chenlove/p/12327964.html

32.Points d'adaptation côté application Android11

https://juejin.im/post/6890811621724618765

33. Symboles de mise à jour du studio Android

https://stackoverflow.com/questions/39640433/android-studio-2-x-building-symbols-forever

-Xms256m
-Xmx8192m
-XX:ReservedCodeCacheSize=2048m
-XX:+UseCompressedOops
-XX:MaxPermSize=4096m

Cliquez sur "Aide" - "Modifier les options de VM personnalisées" pour ajouter le code ci-dessus,
principalement parce que l'allocation de mémoire d'exécution du studio Android est insuffisante et que le chargement est trop
lent``

34. Du côté Android, activez la fenêtre de chat temporaire QQ

       val urlQq = "mqqwpa://im/chat?chat_type=wpa&uin=输入QQ号&version=1&src_type=web&web_src=oicqzone.com"
        val intent = Intent(Intent.ACTION_VIEW, Uri.parse(urlQq))
        startActivity(intent)

35. [SSI10004] Type de page Web de partage Weibo (page Web), le lien s'affiche uniquement sous la forme du texte "Lien de page Web" dans Weibo

Description du problème

Type de page Web de partage Weibo (WebPage), le lien n'est affiché que sous la forme du texte "Lien de page Web" sur Weibo a

solution

Les vignettes ne s'affichent pas après le partage de données de type page Web. Cela appartient à la coopération commerciale des applications mobiles de Weibo. Les autorisations de partage d'intégration de la carte LinkCard et de la colonne de pièces jointes dans le SDK mobile doivent s'appliquer à la coopération Weibo. Pour l'amarrage, veuillez contacter l'entreprise Weibo : [email protected] .com.cn

Adresse de la solution : https://developer.umeng.com/docs/128606/detail/129488?spm=a311a.7996332.0.0.35323080nYHX02

36. Huawei honor 8.0 ne peut pas ouvrir la solution d'application

1. Si cet attribut est défini pour l'Activité dans le Manifeste

android:screenOrientation="portrait"

Supprimez cet attribut et utilisez-le dans le code à la place

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

2. Si cet attribut est utilisé dans le thème, veuillez le supprimer pour résoudre le problème

<item name="android:windowIsTranslucent">true</item>

Adresse d'origine : https://www.jianshu.com/p/f56e094b3ffb

37. Impossible d'initialiser le nom de la classe.kropp.intellij.makefile.MakefileLanguage

Faites geler le studio Android, désactivez simplement ce plugin ;
solution : https://segmentfault.com/a/1190000039350707

38. L'exécution a échoué pour la tâche ':app:kaptProdReleaseKotlin'.

Ajoutez la configuration suivante au fichier gradle.properties ;

kapt.use.worker.api=false
kapt.incremental.apt=false

Solution : https://youtrack.jetbrains.com/issue/KT-40750

Je suppose que tu aimes

Origine blog.csdn.net/u013290250/article/details/54092459
conseillé
Classement