Alte App und Biobliotheken passen nicht mehr

  • 11 Antworten
  • Letztes Antwortdatum
T

txbarth

Ambitioniertes Mitglied
0
Hallo,
ich habe vor zwei Jahren eine kleine App gemacht, an der ich nun nur eine kleine Änderung vornehmen wollte. Aber Google musste ja in der Zwischenzeit die Bibliotheken ändern, so dass die App beim Start aus der Entwicklungsumgebung heraus abstürzt. In den Sourcen werden mir keine Fehler angezeigt, weil ich schon Dinge ersetzt habe, z.B.

Code:
/*
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
*/

wurde ersetzt durch

Code:
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

Aber nun habe ich in den Layout-Dateien immer noch Verweise auf die alten Bibliotheken, für die mir AS keine automatischen Ersetzungsmöglichkeit anbietet.

z.B. activity_main.xml
Code:
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="de.domain.poolinfo.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="#323232"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </android.support.design.widget.AppBarLayout>
Und wenn hier nun in der MainActivity ContentView gesetzt wird, stürzt die App ab.

Code:
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

Kann mir vielleicht jemand einen Hinweis geben, wie ich jetzt weiter machen muss? Kann ich diese Refactoring automatisieren, oder muss ich das manuell machen?

Um das kleine Projekt in die neue Entwicklungsumgebung zubekommen (AS musste erst wieder installiert werden), habe ich ein neues leeres Projekt angelegt. Dann habe ich über das Dateisystem die Sourcen und Ressourcen Schritt für Schritt übertragen, dann in den Sourcen die Bibliotheken ausgetauscht, bis mir keine Fehler mehr angezeigt wurden. War diese Vorgehensweise in Ordnung so? Ich hatte zuerst auch die Import-Funktion ausprobiert, aber da nervte mich AS mit Gradle-Problemen.

Gruß
Thomas B.
 
Hallo Thomas,

so dass die App beim Start aus der Entwicklungsumgebung heraus abstürzt.

Bevor wir mit Mutmaßungen loslegen , solltest du den ErrorLog noch beifügen.

Ich vermute dass du jetzt auch eine Mischung der Biblotheken (v4/v7) hast und beim Anlegen des neuen Projektes
nur die relevanten Sourcen erst mal nehmen solltest ( ohne imports) und dann nach nach den Import (Alt + ENter)
ausführen solltest.

Paste & Copy wird dir nicht viel helfen
 
Hallo bedenken dei den Layouts soltest du auch das es da auch neue veränderte widget gibt. Zb recyclerview
 
Ok, hier noch die RuntimeException.

Um die Fehler in den Sourcen wegzubekommen, hatte ich die obengenannten Imports deaktiviert und dann bin ich die Sourcen mit Alt+Enter durchgegangen. Dabei wurden dann die androidx-Bibliotheken eingefügt.

Code:
    java.lang.RuntimeException: Unable to start activity ComponentInfo{de.domain.poolinfo/de.domain.poolinfo.MainActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2484)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544)
        at android.app.ActivityThread.access$900(ActivityThread.java:150)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:168)
        at android.app.ActivityThread.main(ActivityThread.java:5845)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
     Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at de.domain.poolinfo.MainActivity.onCreate(MainActivity.java:119)
        at android.app.Activity.performCreate(Activity.java:6248)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:168) 
        at android.app.ActivityThread.main(ActivityThread.java:5845) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 
     Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at de.domain.poolinfo.MainActivity.onCreate(MainActivity.java:119) 
        at android.app.Activity.performCreate(Activity.java:6248) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:168) 
        at android.app.ActivityThread.main(ActivityThread.java:5845) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 
     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.CoordinatorLayout" on path: DexPathList[[zip file "/data/app/de.domain.poolinfo-2/base.apk"],nativeLibraryDirectories=[/data/app/de.domain.poolinfo-2/lib/arm, /vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
        at android.view.LayoutInflater.createView(LayoutInflater.java:583)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at de.domain.poolinfo.MainActivity.onCreate(MainActivity.java:119) 
        at android.app.Activity.performCreate(Activity.java:6248) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:168) 
        at android.app.ActivityThread.main(ActivityThread.java:5845) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 
    	Suppressed: java.lang.ClassNotFoundException: android.support.design.widget.CoordinatorLayout
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
 
Yupp hatte ich vermutet , bleibt dir nichts Anderes übrig , die neuen Bibliotheken zu nehmen und anzupassen .
(Schau dir alle deine "Caused" an)
 
Wie sieht denn dein gradle aus.?
Sind da etwas noch die alten v7 v4 support libs drinn?
 
Hallo jogimus,
eigentlich dürften im neu angelegten Projekt keine alten Informationen/Verweise mehr vorhanden sein. Ich habe wirklich nur die Java-Sourcen und Ressourcen ins neue Projekt übertragen. Das Betriebsystem hatte ich vor kurzem neu aufgesetzt, deshalb musste ich auch AS neu installieren.
#Tue Aug 16 09:49:35 CEST 2016
[...]
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

Im neu angelegten Projekt steht nun in einer gradle.properties
#Tue Aug 27 21:23:22 CEST 2019
[...]
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip


@swa00
Ich habe nun eine neue TestApp angelegt. Ich verwende wieder die Standard-Activitys und kann dann die Bibs-Verweise kopieren. Z.B. für die Basic-Activity. Ich hoffe aber, dass die Attribute erhalten wurden.

ALT
Code:
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="de.domain.poolinfo.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="#323232"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </android.support.design.widget.AppBarLayout>
<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_history"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@mipmap/ic_poolinfo_history"
        app:backgroundTint="#1c1b1a"/>
...

NEU
Code:
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </com.google.android.material.appbar.AppBarLayout>

    <include layout="@layout/content_main" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
       android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />
...
 
Hallo,
die App kann wieder aus der Entwicklungsumgebung gestartet werden. Nur leider lässt sich die App auf mein Smartphone nicht mehr installieren. Ich habe die App über AS signiert, wie damals mit dem in einer jks Datei abgelegten Schlüssel. Die Installation von einer fremden Quelle ist erlaubt. Selbst beim alten Release aus 2017 endet die Installation mit einer einfachen Meldung. Vor zwei Tagen hat das aber noch funktioniert.

Möchten Sie diese App installieren? Sie benötigt keinen besonderen Zugriff -> Installieren
Wird installiert...
App wurde nicht installiert.

Mein Smartphone ist schon älter HTC M8 mit Android 6. Reicht mir immer noch aus, stabil und robost, auch auf dem MTB Lenker zur Navigation durchs Gelände :)
Nur erfahre ich nicht, warum es nicht installiert wurde. Ich habe auch während der Installation das Smartphone per USB am Rechner angeschlossen, um vielleicht was im Logcat erkennen zu können. Das muss jetzt aber irgendwas mit dem Android-System zu tun haben, oder?

Habt ihr vielleicht noch einen Tipp für mich?
 
Stimmt denn dein Min SDK GRADLE mit API 23 überein ?

Dein Target Device ist 23
 
Beim Anlegen des Projektes habe ich angegeben, dass es mindestens noch unter JellyBean 4.1 (SDK 16) laufen soll.

Code:
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "de.domain.poolinfo"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        //testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}
 
Min sdk 16 würde ich nicht machen 19 ist Android 4.4

Hast du die alte App auch vom handy vor der Installation entfernt
[doublepost=1567092799,1567092711][/doublepost]Target ist in diesem Fall nicht so wichtig
 
Hi,
es funktioniert wieder auf meinem Smartphone. Ich kann aber jetzt leider nicht sagen, woran es genau gelegen hat, weil ich mehrere Dinge gleichzeitig geändert habe. Android neu gestartet, minSdkVersion auf 19 eingestellt (Gradle sync war erforderlich), versionCode und versionName für eine neue apk-Datei erhöht und Name der apk-Datei geändert (poolinfo-1.3.r4.apk), damit Android erkennt, dass da wirklich was Neues kommt :) Bei der Installation kam dann auch wieder dieser komische PlayProtectHinweis. "Ja ja, ist ja gut Google, die App kommt nicht aus deinem Store, sondern von einer unbekannten Quelle. "
 

Ähnliche Themen

S
Antworten
7
Aufrufe
744
Silvasurf
S
G
Antworten
13
Aufrufe
286
Gerdchen07
G
L
Antworten
1
Aufrufe
158
swa00
swa00
migi01
Antworten
26
Aufrufe
882
migi01
migi01
D
Antworten
5
Aufrufe
333
swa00
swa00
Zurück
Oben Unten