Was übersehe ich bei der Einrichtung eines neuen Android-Studios

alfware17

Mitglied
Hallo, ich weiß nicht ob das hier her gehört und ob ich nerve, aber mich macht das Problem fertig. Ich habe Android-Studio (3.2.1) laufen in Windows (11, 10, 7) und Linux Mint (19, 20 und bis gestern 21). Meine Apps sind alt, ich habe sie vor 4 Wochen auf API 29 gebracht und das geht mit allen bisher laufenden Studios. muß nur die Plattform nachinstallieren.

Das LM 21 bis gestern - nunja, ein mißglückter Updateversuche (21.1->21.3) machte mehrere Anwendungen kaputt so daß ich mich zur nächtlichen Neuinstallation entschied. Kurz vorher sah ich noch, Android Studio wäre auch nicht mehr gegangen, irgendwas mit meinem JDK.

Ok also neu gemacht und wollte Android Studio neu installieren. Leider läuft das nicht mehr, keine Ahnung warum. Die Fehlermeldung sagt was von zertifziertem Pfad und Zugriff auf eine Ressource, Das gleiche Spiel auch unter Windows, jeweils ein neues Studio. Nicht einmal ein neues Projekt (die sogeannte myApplication, keine Ahnung was das Studio da baut) wird durch den Build gelassen. Habe verschiedene Internet-Tips gesichtet, die API de- und neu installiert und vermute für mich irgendein Proxy/Firewall/Zertifkatsproblem.
Aber ich habe das Studio doch so aus der ZIP heraus genommen? Leider weiß ich nicht mehr, ob und welche Einstellungen ich 2018 oder so vorgenommen habe. Hat man da was im Internet verändert/abgeschaltet? Warum kann ich meine vorhandenen Studios updaten aber kein neues einrichten.

Und ja, 3.2.1 ist echt alt - ich will ja auch nur "verwalten" (neue Daten einpflegen bzw wie jetzt 64bit und API Mindestlevel anpassen weil Google/Xiaomi & Co gemeckert haben), für Neuentwicklung bin ich zu alt und zu blöd.
 

M.L.

Top Contributor
Evtl. stören alte Programmteile aller Art ((nicht leere) Verzeichnisse, Bibliotheken, altes JDK, 32-/64-Bit, ... ) eine Neuinstallation.
 

alfware17

Mitglied
So nun habe ich ein frisches Linux Mint 21.3 aufgesetzt, Java 11 JRE war drin, Java 8 JDK Openlogic hatte ich vorbereitend für Eclipse installiert. Kann ich auch noch raus nehmen, aber meine "alten" Installationen in Win7, Mint 19 etc hatten auch maximal 8. Und soweit Android Studio mir sagt, benutzt es eh ein eigenes.

Android Studio 3.2.1 aus der Zip ausgepackt und das hat sich selbst API 35 als Standard installiert. Anschließend ein Beispielprogramm myApplication generieren lassen (leere Form). Eigene Daten oder Projekte waren noch nicht einmal in der Nähe.

Build schlägt sofort fehl mit dieser Meldung:

Cause: unable to find valid certification path to requested target

Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71.
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.resolveComponentMetaData(ErrorHandlingModuleComponentRepository.java:139)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.process(ComponentMetaDataResolveState.java:66)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.resolve(ComponentMetaDataResolveState.java:58)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch(RepositoryChainComponentMetaDataResolver.java:138)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch(RepositoryChainComponentMetaDataResolver.java:119)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolveModule(RepositoryChainComponentMetaDataResolver.java:92)
... 24 more
Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://jcenter.bintray.com/org/jet...lib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom'.
at org.gradle.internal.resource.ResourceExceptions.failure(ResourceExceptions.java:74)
at org.gradle.internal.resource.ResourceExceptions.getFailed(ResourceExceptions.java:57)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache(DefaultCacheAwareExternalResourceAccessor.java:201)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.access$300(DefaultCacheAwareExternalResourceAccessor.java:55)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:90)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:82)
at org.gradle.cache.internal.ProducerGuard$AdaptiveProducerGuard.guardByKey(ProducerGuard.java:97)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.getResource(DefaultCacheAwareExternalResourceAccessor.java:82)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadByCoords(DefaultExternalResourceArtifactResolver.java:138)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadStaticResource(DefaultExternalResourceArtifactResolver.java:98)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.resolveArtifact(DefaultExternalResourceArtifactResolver.java:65)
at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.parseMetaDataFromArtifact(AbstractRepositoryMetadataSource.java:69)
at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.create(AbstractRepositoryMetadataSource.java:59)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.resolveStaticDependency(ExternalResourceResolver.java:199)
at org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver.doResolveComponentMetaData(MavenResolver.java:117)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver$RemoteRepositoryAccess.resolveComponentMetaData(ExternalResourceResolver.java:400)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$ResolveAndCacheRepositoryAccess.resolveComponentMetaData(CachingModuleComponentRepository.java:381)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.resolveComponentMetaData(ErrorHandlingModuleComponentRepository.java:136)
... 29 more
Caused by: org.gradle.internal.resource.transport.http.HttpRequestException: Could not GET 'https://jcenter.bintray.com/org/jet...lib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom'.
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:96)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRawGet(HttpClientHelper.java:80)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performGet(HttpClientHelper.java:84)
at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:43)
at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:29)
at org.gradle.internal.resource.transfer.DefaultExternalResourceConnector.openResource(DefaultExternalResourceConnector.java:56)
at org.gradle.internal.resource.transfer.ProgressLoggingExternalResourceAccessor.openResource(ProgressLoggingExternalResourceAccessor.java:36)
at org.gradle.internal.resource.transfer.AccessorBackedExternalResource.withContentIfPresent(AccessorBackedExternalResource.java:130)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$11.call(BuildOperationFiringExternalResourceDecorator.java:237)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$11.call(BuildOperationFiringExternalResourceDecorator.java:229)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:350)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:340)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:120)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator.withContentIfPresent(BuildOperationFiringExternalResourceDecorator.java:229)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache(DefaultCacheAwareExternalResourceAccessor.java:199)
... 44 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1514)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:961)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:148)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:126)
at org.gradle.internal.resource.transport.http.HttpClientHelper.executeGetOrHead(HttpClientHelper.java:103)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:94)
... 59 more

Die 3 von mir fett markierten Zeilen sind die wichtigen(?) und ich verstehe nicht was der von mir will.

Ich kann auch eins von meinen Projekten nehmen, API 29 nachinstallieren und versuchen - die Meldung mit dem Certification Path bleibt. Ich würde das Projekt hier ja auch reinhängen, ist nichts Geheimnisvolles nur uralt. Aber wie gesagt, die Fehlermeldung kommt schpn beim Beispiel,
meine Daten sind noch gar nicht in der Nähe
 

KonradN

Super-Moderator
Mitarbeiter
Die Meldung besagt, dass er da die Abhängigkeiten des Projekts nicht laden kann. Hat das System kein Internet? Musst Du da ggf. einen Proxy konfigurieren?
 

Jw456

Top Contributor
Welche Gradle und Plugin Version nutzt du mit dem alten AS ?

Android-Studio (3.2.1) aktuell haben wir
Android Studio Koala | 2024.1.1

3.2.1 ist von ca. 2018

2018 hatten wir ca Gradle 4 / 5 jetzt api 33 sollte es 8.2 sein
 
Zuletzt bearbeitet:

alfware17

Mitglied
@ M.L. nun ja, ich verstehe irgendwie, jcenter ist umgezogen oder abgeschaltet. Aber was kann ich konkret machen? Die URL selbst finde ich nirgends. In der build.gradle Datei immerhin ein jcenter() welches ich auskommentieren kann, aber es geht trotzdem nicht.

Fragen die sich mir auch stellen: warum arbeiten meine anderen Android Studios immer noch, obwohl doch da die gleichen Projekte drin sind?

Und welches Studio sollte ich nehmen (möglichst Linux und Windows), damit es meine Projekte auch noch übersetzt?

Ja, die Systeme haben alle Internet - es ist privat zuhause und von proxy weiß ich nichts...
 

KonradN

Super-Moderator
Mitarbeiter
Hmm, die URL kann ich bei mir herunter laden - wenn ich also z.B. auf
Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://jcenter.bintray.com/org/jet...lib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom'.
klicke, dann lädt er die POM herunter. Das macht auch Sinn, denn so weit ich weiss, leitet jcenter an mavenCentral weiter.
(Evtl. folgt der Browser der Weiterleitung und Gradle nicht?) (Aber da scheint es ein Problem mit dem Zertifikat zu geben. Das sieht man ja in den Logs...)

Aber davon abgesehen: Wenn Du das Repository anpassen willst, dann reicht natürlich nicht ein einfaches auskommentieren. Du musst halt angeben, woher er es laden soll:
Declaring repositories (gradle.org)

Also vermutlich wird da ein google() Sinn machen. Aber wenn die Abhängigkeiten auch auf maven central sind, dann ginge auch ein mavenCentral.
 

Jw456

Top Contributor
jcenter ist auch nicht mehr üblich.
Benutze mavenCentral in der Projekt build.gradle Datei

Java:
buildscript {
    repositories {
        google()
         mavenCentral()
            
            ...
        
allprojects {
    repositories {
        google()
        mavenCentral()
 

alfware17

Mitglied
@Jw456 Ja danke, das mit dem mavenCentral() hat geholfen. Zumindestens konnte ich es jetzt builden. Glaube ich jedenfalls :) Weil so nutzt es mir noch nicht so viel, weil anscheinend fehlen mir zwei wichtige Werkzeuge, die ich bisher als selbstverständlich hingenommen hatte.
Ich konnte zwar ein AVD erstellen und starten, meine App benutzt es aber nicht. Und was noch schlimmer ist - wenn ich Build APK wähle, passiert da rein gar nichts... Irgendwie hatte ich mir oder war es noch im letzten Jahr komfortabler automatisch eingerichtet...
 

Jw456

Top Contributor
Erstmal für mein Verständnis.
Du hast ein avd erstellt welche API Version?
Und der emulator läuft?

Du hast eine App erstellt welche Target und min Sdk hast du da?

Welche AS Version hast du bist du noch bei 3.1......?

Welche gradle und plugin Version nutzt du?
 

alfware17

Mitglied
Ich habe das AS (3.2.1) neu gestartet, bin der Aufforderung nach Update BuildTool (28) nachgekommen, habe einmal oben auf das Icon für AVD Manager gedrückt und plötzlich war alles wie vorher.

Mein Menuepunkt Build APK war wieder da und es funktioniert auch.

Und wenn ich auf Run drücke, fragt er mich nach meinen (einzigen vorhandenen) AVD. Das ist ein Nexus 5 mit API 16, ganz einfach also aber meine App ist auch anspruchslos, ich habe sie jetzt real von Samsung S3 mini bis Xiaomi Note 13 pro überall gesehen (letzteres war die Ursache weshalb ich das mit dem API 29 anfassen mußte)

Soweit funktioniert also alles (wieder), ich bin erleichtert. Muß nur mal probieren, was eines der älteren AS (ich werde in der Virtualbox probieren)
zu dem mavenCentral() statt jcenter() sagt...
Frage: woher weiß man eigentlich diese Funktionen(?) wo sind die definiert wenn man sie im build.gradle benutzen kann?

Also ich habe Target API 29, min API 16, Gradle war 2.3.3 habe ich nun auf 3.2.0 gesetzt mal sehen vielleicht zum Spielen noch höher.
API habe ich 16, 20, 25,26,27,28,29,30,31 und 32 installiert und ausprobiert, 30 ging bei mir leider nicht mehr (vor 4 Wochen Selbstversuch)

Ebenso hatte ich gestern noch das AS 2024 installiert und probiert was es mit meiner App macht - nunja weit kam ich nicht, Im API 29(?) oder hat er doch 35 genommen(?) wurde ein Sprachfeature von mir angemeckert (extends Thread) und noch eine zweite Fehlermeldung, die die alten Builds nicht hatten. Außerdem fand ich die Bedienung/Ergonomie eine Katastrophe und bin froh daß ich beim AS 3.2.1 bleiben kann. Da ich wie gesagt nicht vorhabe weiter zu entwickeln, sondern nur Daten einspielen und technisch anpassen an die unteren Mindestgrenzen wenn mir wie jetzt Google/Xiaomi Grenzen zieht. Ich sehe ja ein daß sowas auch mal sein muß, aber man fragt sich eben warum läuft mein altes Programm nicht mehr.

Ich fand es sehr lehrreich, daß die alten jcenter Links und Ressourcen anscheinend lokal immer noch da sind, so daß meine alten AS weiter funktionieren. Dummer Zufall und ungünstiger Zeitpunkt nun nur, daß mein Linux Mint welches ich erst 06/2023 gemacht hatte, AS auch 06/2023 und wie gesagt 07/2024 für ne größere Aktion mit den API benutzt - dann 08/2024 platt gemacht werden "mußte" und damit das AS "weg" war womit ich niemals gerechnet hätte. AS nur noch in älteren Linux/Windows bzw auch im aktuellen Windows aber ausgerechnet nicht im sonst braven Linux: für mich sehr ärgerlich und unvorstellbar.

Danke für den entscheidenden Tip
 

Jw456

Top Contributor
Wenn deine App min SDK 19 ist finde ich ein Target 29 nicht so sinnvoll.
Unterstützt auch deine App auch das SDK 29?
Ab Android 8 und 10 hat sich einiges geändert. Unterstütz du das auch in deinen Code.
Denn du baust Ja die App für Android 10 (Target 29) die App könnte somit auch auf einen A10 Handy installiert werden. Und du solltest sicherstelle das da auch alles läuft.

Welches Target hastest zuvor?
 

alfware17

Mitglied
Wenn deine App min SDK 19 ist finde ich ein Target 29 nicht so sinnvoll.
Unterstützt auch deine App auch das SDK 29?
Ab Android 8 und 10 hat sich einiges geändert. Unterstütz du das auch in deinen Code.
Denn du baust Ja die App für Android 10 (Target 29) die App könnte somit auch auf einen A10 Handy installiert werden. Und du solltest sicherstelle das da auch alles läuft.

Welches Target hastest zuvor?
Min 16 damit die App auch noch auf dem S3 Neo läuft. API 29 (nur) weil Xiaomi sich geweigert hat sie unter HpyerOS 14 zu installieren. Vorher hatte ich lange API 20, so habe ich das 2014/2015 auch entwickelt. Da ist nur SQLite und ein paar Buttons und ein Timer drin (Sprüche anzeigen).
API 29 war insofern eher lästig. Wenn du willst kann ich die App nächste Woche mal in ein GIT stellen, hier ist der Zip zu groß sind sicher jede Menge Schrott von Builds drin.
Und ja, nach 3-4 Java Änderungen hatte API 29 die App akzeptiert, sonst hätte ich sie unter HyperOS 14 nicht installiert bekommen. Ob die API 29 App direkt auf dem S3 Neo (Android 4.4) noch läuft muß ich mal testen, vielleicht muß ich sie neu builden. API 30-32 hatte ich probiert, bekomme ich Fehlermeldungen irgendwas depricated und/oder nicht initialisiert, habe das zwar vor noch zu untersuchen, wenn mir mein "Thread" wegfällt, gebe ich an der Stelle aber auf. Hoffe daß Android 10 noch lange akzeptiert wird bis mein persönlicher Life cycle endet.
 

alfware17

Mitglied
Hallo und hier noch mein Projekt.
Mußte/durfte es mal wegen Github "säubern" das war mitlerweile 130MB groß - hoffe habe nicht zu viele Ordner einfach gelöscht, jedenfalls ließ es sich eben noch so builden
 

Jw456

Top Contributor
Hallo habe mir mall dein Projekt angesehen.
Was ich schon mal sehe ist das du erstens noch alte Support Libs benutzt.

Konvertiere es zu Androidx


Auch das Compile im Gradele ist schon lange veraltet .
compile is deprecated; replace with implementation



Wo genau ist jetzt dein Problem was willst du genau verändert haben.

Ist es richtig das die DB leehr ist willst du nicht schon eine gefüllte mitgeben?
 
Zuletzt bearbeitet:

alfware17

Mitglied
Ich würde gerne wissen, ob und wie ich das Projekt auch über SKD 29 kriege. Bei 30-32 (probiert) gabe es Java-Probleme (ich erinnere mich nur an das mit der ArrayListe Liste<Zitate> wo wohl was unsauber initialisiert ist und an ein Meckern bezüglich des extends Thread. Auch lehnt dann manchmal Android (HyperOS) auf dem Handy das noch ab. Habe es jetzt mit J1 signiert und das Projekt SDK 29 aus dem GIT läßt sich installieren, bei mir jedenfalls und bei einem EX-Kollegen.

Und ja, die DB ist anfangs leer. Da der Aufbau einmalig eh nur ms oder wenige s dauert. ist es für mich im Update-Fall einfacher einfach die Text-Dateien zu erweitern/ersetzen als die ganze SQLite DB. Wenn ich im Datenbank-Modul die Versionsnummer ändere, wird auch die SQLite-DB neu erzeugt. Ich könnte dann im Zweifel sogar noch die (jetzt 45) Kategorien neu sortieren oder anordnen, was ich übrigens auch gerade im Juli tat
(die Nummern - ich schiebe einfach die TXT im Array um).
Rein theoretisch kann das Programm auch zusätzliche Textdateien als neue Kategorien speichern aber dazu müßte die App die Texte schon downloaden und sowas war damals im 4-Wochen Crashkurs nicht vorgesehen. Ich habe schon die ganze App nebst Konzeption der Datenbank in den 4 Wochen gemacht und im Wesentlichen danach nur gefellt.

Es gibt das Programm auch in Java und Lazarus am PC, hier wird die SQLite Datenbank aber tatsächlich vorher erzeugt, dafür habe ich ein Dienstprogramm... Spannenderweise läuft das PC-Programm immer noch nur sehr rudimentär mit SQL, da es vorher 20 Jahre reine Textdateien gelesen hatte und ich dann mit der App bzw der Datenbank nur mal so eine Idee hatte...

Ich habe am Wochenende nachgeschaut (in einer anderen Stadt steht der Laptop), ich hatte tatsächlich noch Anfang Juni Android-Studio 3.2.1 in einem frischen Mint 21.3 installiert bekommen, meine Erinnerung trügt mich nicht. Das bedeutet, das "Abklemmen" des jcenter() ist erst in den vergangenen 4 Wochen geschehen. Murphy...
 

Jw456

Top Contributor
Ja das Projekt konnte ich übersetzen und starten.
Beim umstenn auf androidx also keine Support Lib mehr. Kam das Tehma statische IDs. In den switch case.
 

alfware17

Mitglied
Soweit ich mich erinnere, war was mit der Liste<Zitate> und wenn ich das ignoriere dann lehnt mir HyperOS also mein Xiaomi reales Handy das ab.
Ich nehme an auch das Buildtool (28) ist nicht mehr optimal für SDK 29++ aber höhere konnte ich nicht eintragen?

Das mit Androidx und/oder statische ID habe ich nicht verstanden? Was soll ich ändern?

Hier https://github.com/bernd22/zitadell
meine Version SDK 30. Version 1.88 oder 1.89 oder 4.89 ist egal/identisch (ich habe nur alle anderen Programme in dem Gesamt-Paket auf Version 4.89 gleich gezogen daher der komische Sprung hier).

Interessanterweise hat sie das AS gebuildet und ich konnte ein APK schnüren, aber spätestens auf meinem Handy war dann Schluß. "Die App wurde nicht installiert da das Paket offenbar ungültig ist". Warum, keine Ahnung. Ich habe echt von 20 bis 30 alle gebuildet der Reihe nach und dem Handy angeboten und bei 29 war Schluß. 31 und 32 suche ich nachher noch raus.
 

alfware17

Mitglied
Ich habe gestern noch API 30-33 gebuildet (erfolgreich komischerweise, die Java-Fehler sind weg, lag es nur an dem Update der Buildtools bzw dem mavenCentral()? ), leider weist mein Xiaomi die alle zurück "Die App wurde nicht installiert da das Paket offenbar ungültig ist".
Mitterweile vermute ich das Problem beim Signieren (habe es aber wiederholt, mit altem und neuen jks Key). Oder ein anderes Problem, weshalb das zurückgewiesen wird, was sich mir leider nicht erschließt.

API 34 oder 35 konnte ich nicht builden, da mir mein Androidstudio irgendwas von korrupten ZIPs erzählt. Habe das SDK 2x versucht zu deinstallieren und wieder zu installieren. Ich kann nach dem Urlaub noch mal mit einem neueren Androidstudio probieren oder vielleicht findest du ja was heraus.
 

Jw456

Top Contributor
Hallo habe mal deinen Code in ein aktuell erstelltes Projekt eingefügt und etwas angepasst.
Ich habe einfach ein neues Projekt mit der aktuellen AS Version erstellt und deinen Dateien eingefügt.
Es ist SDK 34.



Zum Thema Switch Case mit IDs da habe ich erstmal den einfachsten weg genommen kein Switch sondern( if/else if ).
Ich würde hier vielleicht auf ViewBinding setzen.
Das alte Prinzip mit dem ich sage mal Sammle Click Listener ist nicht mehr gut und geläufig. Dazu schaue dir Lambdas an.
Oder benutze das neuere Navigation Compose.



Was sicherlich auch Probleme machen wird (und zwar schon seit API 23) ist das Thema Dateizugriff auf externen Speicher.
Seit Api 23 reicht es nicht mehr die Permission im Manifest zu setzen sondern du musst die dir auch vom User zur Laufzeit holen.
Ab API 31 ist es wieder anders da haben wir Storage Access Framework.
Das habe ich dir nicht angepasst.
 

Jw456

Top Contributor
hier das zip

ps AsyncTask ist auch deprecated seit android 11
Du nutzt also doch einiges was mit Android 13 nicht konfom ist.
 

Anhänge

  • Zitadellv.zip
    1,4 MB · Aufrufe: 0
Zuletzt bearbeitet:

alfware17

Mitglied
Hallo und danke für deine Bemühungen und Verbesserungen. Ich habe gerade versucht das Projekt zu übersetzen, kommt leider gleich eine Fehlermeldung: "

Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.For more details on the daemon, please refer to https://docs.gradle.org/8.7/userguide/gradle_daemon.html in the Gradle documentation.
Process command line: C:\Program Files\Android\Android Studio\jre\bin\java.exe -Xmx2048m -Dfile.encoding=UTF-8 -Duser.country=DE -Duser.language=de -Duser.variant -cp C:\Users\Bernd\.gradle\wrapper\dists\gradle-8.7-bin\bhs2wmbdwecv87pi65oeuq5iu\gradle-8.7\lib\gradle-launcher-8.7.jar -javaagent:C:\Users\Bernd\.gradle\wrapper\dists\gradle-8.7-bin\bhs2wmbdwecv87pi65oeuq5iu\gradle-8.7\lib\agents\gradle-instrumentation-agent-8.7.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 8.7
Please read the following process output to find out more:
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap"

Ok das kann an meinem kleinen derzeitigen Rechner liegen (Windows, 8GB RAM) - ich habe noch größere und auch Linux und kann die mal probieren.

Welches Android Studio hast du benutzt? Und welches Java JDK (AS hat sein eigenenes oder nutzt das vom PC?)
Welche Android Studio Version sollte ich benutzen für dein API 34 (kann Win 10/11 oder Linux Mint inne Virtualbox nehmen).

Und, hast du mal versucht, eine APK zu erstellen und zu signieren und einem Handy anzubieten?
Woran könnte es liegen, daß mein Format angeblich "ungültig" ist. Laut Google, wenn das APK nicht richtig signiert ist (habe aber bei 30+ nichts anderes gemacht als bei 29), wenn der Inhalt selber bestimmten Richtlinien nicht entspricht ja aber welchen.

Ich dachte auch es liegt am Format des .jks keystrores und habe den in pkcs12 umgewandelt aber den kann dann wieder AS nicht lesen....

Min SDK 24 und dann versuchen zu signieren kann ich auch machen. Hast du v1 und/oder v2 angeklickt bei Signierverfahren. Sorry ich stümpere mich so durch...
 

Jw456

Top Contributor
Welches Android Studio hast du benutzt? Und welches Java JDK (AS hat sein eigenenes oder nutzt das vom PC?)
Ich nutze natürlich die neuste Version Koala 2024.1.1

Welches JDK auf dem Rechner ist ist nicht so wichtig da AS seine eigenes mitbringt.


Dann hänge doch das Handy mal mit Usb Kabel an den Rechner. Wenn auf dem Handy USB Debugging aktiv ist sollte es in der AVD Liste auftauchen.
Debugger auf dem Echten Gerät und nicht mit Emulator. Einfach oben den Grünen Pfeil drücken und es wird die Debugg Version (Standard Zertifikat ) auf das Handy Übertragen.

Wenn alles läuft kannst du es vom Handy löschen und dein Zertivikat benutzen und deine apk oder aab bauen und auf das Handy übertragen und Installieren . Natürlich musst du die Installieren ohne Playstore auch auf den Gerät erlauben. (nicht sichere Quelle)
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Sowas ist auch nicht mehr notwendig und falsch.
Ein altes buildTool und dann soll das eine ordentliche 30 oder gar 34 Version entstehen.;)
Java:
android {
    compileSdkVersion 30
    buildToolsVersion '28.0.2'

    defaultConfig {
        applicationId "de.alfware.bernd.zitadell"
        minSdkVersion 15
        targetSdkVersion 30
        versionCode 18814
        versionName "1.88n 64bit SDK 30"
     ...

 

alfware17

Mitglied
Sowas ist auch nicht mehr notwendig und falsch.
Ein altes buildTool und dann soll das eine ordentliche 30 oder gar 34 Version entstehen.;)
Java:
android {
    compileSdkVersion 30
    buildToolsVersion '28.0.2'

    defaultConfig {
        applicationId "de.alfware.bernd.zitadell"
        minSdkVersion 15
        targetSdkVersion 30
        versionCode 18814
        versionName "1.88n 64bit SDK 30"
     ...


Habe ich jetzt (in meiner SDK 31 Version auf 31.0.0 gesetzt) und wird auch gebuildet,
  • Läuft im Emulator
  • Habe ich das Xiaomi Note 13 pro Handy per USB-Kabel angeschlossen, wird von Windows auch angezeigt und kann ich im Explorer zugreifen,
Entwicklerprivilegien auch freigeschalten -> aber Androidstudion erkennt das nicht (vielleicht ist AS zu alt)
- und läßt sich ein APK bauen und signieren. Schicke ich das APK als File ans Handy (Telegram), schwups installiert es das nicht mehr aus dem APK :-(
Googles Sicherheitsscan und die Frage auf Fremdsoftware besteht es noch aber dann "kein gültiges Paket"
 

Jw456

Top Contributor
Entwicklerprivilegien auch freigeschalten -> aber Androidstudion erkennt das nicht (vielleicht ist AS zu alt)
USB Debuggin an?
Mal abstecken und Debugging aus und wieder an . Debugging Einstellung mal löschen.
Beim Anstecken sollte ein Abfrage auf den Handy kommen ob du das Debugging für diesen Rechner freigeben willst.

"vielleicht ist AS zu alt" NEIN Wenn dan falsche Treiber.
 

alfware17

Mitglied
Deine angepaßte Projektversion SDK 34 kann ich leider noch immer nicht builden - mein Androidstudio (3.2.1. in Win 10) sagt dazu
"No matching variant of com.android.tools.build:gradle:8.5.2 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.7' but:
- Variant 'apiElements' declares a library, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component for use during compile-time, compatible with Java 11 and the consumer needed a component for use during runtime, compatible with Java 8
- Other compatible attribute:
- Doesn't say anything about org.gradle.plugin.api-version (required '8.7')
- Variant 'javadocElements' declares a component for use during runtime, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about its target Java version (required compatibility with Java 8)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.7')
- Variant 'runtimeElements' declares a library for use during runtime, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component, compatible with Java 11 and the consumer needed a component, compatible with Java 8
- Other compatible attribute:
- Doesn't say anything about org.gradle.plugin.api-version (required '8.7')
- Variant 'sourcesElements' declares a component for use during runtime, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about its target Java version (required compatibility with Java 8)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.7')"

Ich habe jetzt 2 Wochen Auszeit und ohne Laptop - aber danach werde ich deine Version mal mit einem Kotlin AS 2024 probieren, vom Scratch - ich hoffe der holt und fordert sich dann alle erforderlichen Tools und Ressourcen. Empfiehlst du Windows oder Linux Mint. Ich habe mehrere Rechner mit verschiedenen Systemen, kann aber auch ne Virtualbox nehmen. Solange wie ich immer zurückfallen kann auf meine (reparierten) Androidstudios 3.2.1

Ich will ja lernen und wenn es sein muß auch was Aktuelles benutzen, nur machen das oft meine betagten Rechner und Betriebssysteme nicht alle mit und dann würde ich mir gerne einen gemeinsamen Fallback erhalten. (hab da so die Idee, deine fortgeschrittenste Variante SDK 34 für neue Handys und dann pflege ich eben noch das schwer erkämpfte Variante SDK 29 parallel mit für Veteranen.
 

alfware17

Mitglied
USB Debuggin an?
Mal abstecken und Debugging aus und wieder an . Debugging Einstellung mal löschen.
Beim Anstecken sollte ein Abfrage auf den Handy kommen ob du das Debugging für diesen Rechner freigeben willst.

"vielleicht ist AS zu alt" NEIN Wenn dan falsche Treiber.
Also ich habe unter Android Version 7x getippt und dann sagtr es "du bist jetzt Entwickler". Angedockt, die Frage ob Datenübertragung sein darf mit ja beantwortet. AS sieht Redmi nur als USB - Gerät aber ADB benutzt es nicht. Debugging "freischalten"?
 

Jw456

Top Contributor
Deine angepaßte Projektversion SDK 34 kann ich leider noch immer nicht builden - mein Androidstudio (3.2.1. in Win 10) sagt dazu
"No matching variant of
Mit der AS Version 3.2.1 kannst du das definitiv vergessen.

Benutze die neuste Version.
Wenn dein Rechner alt ist dann kein virtual box das nimmt auch wieder Rechenleistung.

Ich arbeite meistens mit win 11 manchmal Linux mint. Linux ist meist etwas schneller auf einem alten Rechner.

Mit einer neuen AS Version kannst du auch alte Projekte bauen.
Du brauchst keine underschiedlichen Versionen. Wie tief willst du denn runder?
 

alfware17

Mitglied
Also ich habe mein Xiaomi nicht testen können, wahrscheinlich fehlt wie du vermutest, ein (AGB) Treiber für mein Windows. Das hat für mich aber keine Prio.
Ich habe mir nun AS 2024.1.1 (Koala) heruntergeladen und wollte es in Win 11 und in Linux Mint 21.3 probieren mit deiner SDK 34 Version.

Vielleicht verhält sich AS 2024.1.1 auch anders beim APK Signieren, daß da beim Übergang von SDK 29 auf 30 eine Einschränkung bei Xiaomi/Google existiert, die so das AS 3.2.1. nicht erfüllen kann und dann kann ich ja lange suchen. Wie gesagt, übersetzt hatte ich mit SDK 31 ja schon und es läuft auch, nur lehnt das Handy es ab zu installieren.

Was die Abwärtskompatibilität betrifft: Nunja, ich habe derzeit noch 7 Handys, 2 davon mit Android 4.4 (SDK 20?), wo meine App auch gerne laufen soll. Daher hatte ich auch minSDK so tief gelassen, bisher reichte das aus damit es akzeptiert wurde und die Java-Änderungen sind ja auch nicht so groß (da war eine weggefallene Klassse und so).

Ich kann für die alten Handys das nehmen, was ich jetzt bis SDK 29 habe und ja, deine guten Änderungen bezüglich des switch->if usw kann ich gerne kopieren. So war halt der Stil, den uns der Dozent im 4-Wochen-Crashkurs vor 10 Jahren beigebracht hat. Also SDKMin 16? 20? und Target 29.

Neu (für die anderen Handys incl Xiaomi) würde ich es dann gerne unter SDK 34 zum Laufen und signiert bringen und SDKmin 24 setzen.

Eine andere Überlegung wäre, wo überall das AS selber noch laufen soll (mit App SDK 29 und/oder neu SDK 34). Ich sehe Win 10/11 und Linux Mint 21.3 auf meinen neueren 3 PCs aber wünschte mir auch so ein System zum Einpacken wie Mint 19 oder Win 7. Wie ich ja gelernt habe, liefen die AS 3.2.1. dort immer noch, obwohl jcenter() im Juli 2024 abgeschaltet wurde und mir im August das Linux crashte, weil die Ressourcen lokal (im Projekt oder im Studio?) immer noch da waren
 

Jw456

Top Contributor
hier das überarbeite projekt.
die signet apk kann ich hier nicht hochladen. zu gross.
ca 8mb private Mail währe eine möglichkeit.
 

Anhänge

  • Zitadellv.zip
    1,4 MB · Aufrufe: 0

Jw456

Top Contributor
min sdk 20
fehler
Task :app:processReleaseMainManifest FAILED
package="com.example.zitadell_v" found in source AndroidManifest.xml: D:\Android-Work\Zitadellv\app\src\main\AndroidManifest.xml.
Setting the namespace via the package attribute in the source AndroidManifest.xml is no longer supported, and the value is ignored.
Recommendation: remove package="com.example.zitadell_v" from the source AndroidManifest.xml: D:\Android-Work\Zitadellv\app\src\main\AndroidManifest.xml.
D:\Android-Work\Zitadellv\app\src\main\AndroidManifest.xml Error:
uses-sdk:minSdkVersion 20 cannot be smaller than version 21 declared in library [androidx.appcompat:appcompat-resources:1.7.0] D:\Android-Work\Carousel\caches\transforms-4\6f934661ac7d01c20e680bb152b08fd3\transformed\appcompat-resources-1.7.0\AndroidManifest.xml as the library might be using APIs not available in 20
Suggestion: use a compatible library with a minSdk of at most 20,
or increase this project's minSdk version to at least 21,
or use tools:eek:verrideLibrary="androidx.appcompat.resources" to force usage (may lead to runtime failures)
 

Jw456

Top Contributor
dann schaue ob du für die alten Handys ein Custom Rom LineageOS bekommst.
dann wirst du da bestimmt Android >9 bekommen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Feld eines Eingabeformulars automatisch mit UserID ausfüllen Android & Cross-Platform Mobile Apps 1
L Android Länge eines Musikordners Android & Cross-Platform Mobile Apps 7
C Zugriff auf die Position eines String- bzw Spinner-Arrays Android & Cross-Platform Mobile Apps 1
L Hintergrund eines Switch(Buttons) ändern Android & Cross-Platform Mobile Apps 3
Robat Android Umsetzung eines Spiels mit Minispielen Android & Cross-Platform Mobile Apps 5
A Android Öffnen eines ProgressDialogs Android & Cross-Platform Mobile Apps 5
antonbracke Android OpenGL - Element zum Zeigen eines .obj Models Android & Cross-Platform Mobile Apps 2
M [Android] Wie erstellt man eine Verknüpfung eines Ordners? Android & Cross-Platform Mobile Apps 7
H Frage bei erstellen eines Projectes Android & Cross-Platform Mobile Apps 3
M Inhalt eines Eingabefeldes an einen Server senden? Android & Cross-Platform Mobile Apps 9
B Überlagern eines Layouts Android & Cross-Platform Mobile Apps 6
A Fehler beim Starten eines Intents - alles in einer Klasse funktioniert... Android & Cross-Platform Mobile Apps 4
T Android Ergebnis eines XML+XSLT "transform" in eine HTML - Datei schreiben (Android) Android & Cross-Platform Mobile Apps 2
Bastifantasti Lagesensor eines Handys ansprechen? Android & Cross-Platform Mobile Apps 48
A Problem beim Subtrahieren eines Double von einem Double Android & Cross-Platform Mobile Apps 5
C Woche eines Jahres rausfinden Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen


Oben