Funktioniert Upload unter Android in der Community Version?

Startseite Foren Deutsches LiveCode-Forum Funktioniert Upload unter Android in der Community Version?

Schlagwörter: ,

Ansicht von 15 Antwort-Themen
  • Autor
    Beiträge
    • #16009
      Peter_M
      Teilnehmer

        Hallo Leute,
        hat jemand es geschafft, mit der COMMUNITY EDITION von LiveCode eine ANDROID-App zu programmieren, mit der ein File erfolgreich per FTP ins Web upzuloaden ist?
        Nach endlosen Recherchen ist mir dieses immer noch nicht gelungen. Mein Stand ist folgender: während die Windowsversion meiner App anstandslos läuft, erzeugt der FTP-Upload aus der Android-App immer nur eine leere Datei!
        Weiß jemand, ob der Upload wieder nur ab INDY-Version möglich st?

      • #16011
        Klaus Major
        Administrator

          Hatte Torsten vor einiger Zeit nicht etwas herausfinden können?
          Selbes Problem
          Ganz unten.

        • #16021
          Peter_M
          Teilnehmer

            Hallo Klaus,
            leider hat das auch nicht funktioniert. Es ist immer dassebe: Windows-App funktioniert perfekt,
            Android Version erzeugt nur eine leere Datei. Daher meine Frage: Funktioniert Upload unter Android in der Community Version? Es wäre sehr schade, wenn ein Upload genau wie das Versenden von E-Mails direkt aus der App heraus hier nicht möglich wäre, weil die aufgerufenen Lizenzgebühren für Hobbyprogrammierer einfach zu hoch sind und sich LiveCode damit für sehr viele Freizeitprogrammierer disqualifiziert………

            Viele Grüße
            Peter

          • #16050
            Volker
            Teilnehmer

              Hallo Peter

              Ja, so ist das!
              Hatte lange Zeit die gleichen Probleme und hab mir dann die Indy Version gekauft und dann hat es funktioniert.

              Gruß Volker

            • #16055
              Klaus Major
              Administrator

                Die INDY Version nutzt ein External namen “tsNet”, die Community Version nur eine gescriptete Library “libURL”, die aber auch bei einem einfachen FTP Upload funktionieren sollte.

                Es handelt sich nicht zufällig um einen SFTP Server bei Dir?

              • #16084
                Peter_M
                Teilnehmer

                  Hallo Volker,

                  vielen Dank für deine Antwort. Meine Frage: Was hast du für die INDY Version bezahlt? Hast du sie tatsächlich
                  gekauft oder musst du jährlich Abogebühren zahlen?

                  Viele Grüße
                  Peter

                • #16087
                  Peter_M
                  Teilnehmer

                    Hallo Klaus,
                    ich habe intensiv auch im englischen Forum nach funktionierenden Codes recherechiert und alles ausprobiert, leider ohne Erfolg.
                    Laut Dictionary sollte ftp allerdings auch in der Community-Version als Android-Standalone funktionieren können. Ich habe deswegen heute eine E-Mail direkt zum Support der Herstellerfirma geschickt und bin sehr gespannt auf die Antwort. Sollte sich hier wider Erwarten eine kostenfreie Lösung ergeben, dürfte sie von allgemeinem Interesse sein, und ich würde sie hier im Blog posten.

                    Viele Grüße

                    Peter

                    • #16153
                      Axwald
                      Teilnehmer

                        Hallo,
                        hab mich extra hierfür angemeldet 🙂
                        Ich glaube es wurde schon mal im int. Forum behandelt, aber es geht definitiv!

                        Hier: LC 6.7.10 Community (= Stable!) auf Win10,
                        Android 6 (Yoga Tablet 3 850L), und ein FTP-Server bei AllInkl.

                        Ein Button:

                        on mouseUp
                           --  Zugangsdaten abfragen, ggf. gleich hier einsetzen:  --
                           ask question "The FTP-Username:" with "DeinUserName" titled "Credentials:"
                           if it is not empty then
                              put URLENCODE(it) into MyUSR  --  URLEncode für Sonderzeichen ... 
                           else
                              exit mouseUp
                           end if
                           
                           ask question "The FTP-Password" with "DeinPassWord" titled "Credentials:"
                           if it is not empty then
                              put URLENCODE(it) into MyPWR  --  URLEncode für Sonderzeichen ...
                           else
                              exit mouseUp
                           end if
                           
                           ask question "Die FTP-URL:" & CR & "( Ohne Slash am Ende!)" with "theUrl.com" titled "Credentials:"
                           if it is not empty then
                              put it into MyURL
                           else
                              exit mouseUp
                           end if
                           
                           --  URL zusammenbauen:  --
                           if char -1 of myURL <> slash then put slash after myURL
                           put "ftp://" & myUSR & ":" & MyPWR & "@" & MyURL into myFTPDir
                           answer information "Ich versuche jetzt, dahin hochzuladen:" & CR & \
                                 myFTPDir & CR & CR & "Sollte so aussehen: " & CR & "ftp://UserName:PassWord@Url.com/" titled "Bitte prüfen!"
                           
                           --  Eindeutigen Dateinamen erzeugen:  --
                           get the date && the long time
                           convert it to dateitems  --  2017,7,27,13,44,55,5
                           set itemdel to comma
                           delete item 7 of it
                           repeat for each item myItem in it
                              put format("%02s",myItem) after myFileName
                           end repeat                    --  => 20170727134455
                           
                           --  Und ab auf den FTP:  --
                           put the long system date & CR & the long system time into URL (myFTPDir & myFileName & ".txt")   --  To FTP!
                           answer information "Hochgeladen: " & myFileName & ".txt! Result:" & CR & the result
                        end mouseUp

                        Also bei mir gehts – grade auf dem Tablet getestet.
                        Ich weiß jetzt nicht, ob das bei neueren Android-Versionen genauso geht, aber wieso sollte es nicht?
                        Ich weiß auch nicht, wie es bei neueren LC-Versionen aussieht – jedesmal wenn ich mich aufraffe, doch wieder mal eine neue “Stable” auszuprobieren, sind sie elend langsam & stürzen nach kurzem ab :/

                        Hoffentlich kann man es lesen, der Editor hier ist gewöhnungsbedürftig 😉

                        Viel Spaß!

                    • #16164
                      Peter_M
                      Teilnehmer

                        Hallo Axwald,
                        Herzlichen Dank für deinen Code. Ich wedde ihn gleich ausprobieren, befürchte aber, dass der Hersteller von LiveCode die Up- und Downloadfunktionen unter Android bei der Community-Edituon 9.5 deaktiviert hat. Kann man deine Version 6.7.10 jetzt noch downloaden?
                        Viele Grüße
                        Peter

                      • #16173
                        Peter_M
                        Teilnehmer

                          Hallo Axwald,
                          deinen Code habe ich jetzt ausprobiert, leider ohne Erfolg. Es scheint so, als ob in der Version 9.5 die Up- und Download- funktionalität in der Community-Version abgeschaltet worden wäre. Gibt es eine Möglichkeit, die Version 6.7.10 noch downzuloaden?
                          Gruß
                          Peter

                        • #16175
                          Peter_M
                          Teilnehmer

                            Sorry, dumme Frage! Habe den Download gefunden…
                            Werde mir livecode 6.7.10 jetzt runterladen und ausprobieren…
                            Danke an Alle!

                          • #16230
                            guko56
                            Teilnehmer

                              Hallo
                              Habe mich lange mit dem Problem im letzten Winter rumgeschlagen.
                              Bin zu folgenden Ergebnis gekommen:
                              Um einen Upload machen zu können muß die Datei mind. 10.000 Byte Groß sein (warum auch immer?). Dann
                              funktioniert auch der upload. Fülle meine Dateien zusätzlich mit Nullen auf damit ich über die 10.000 Byte komme. Damit habe ich bisher keine Probleme mehr.
                              Gruß Günter

                            • #16284
                              Axwald
                              Teilnehmer

                                Hallo,
                                ich habe jetzt mal meine “mobilen Stacks” durchgeschaut, und meine damaligen Notizen rekapituliert (deswegen hat es so lange gedauert …).
                                Das bezieht sich jetzt alles auf Apps unter Android, erstellt mit LC Community 6.7.10; aber auch die Community 9.5 benutzt die LibURL, und da hat sich m.E. eh nix getan:

                                1. “put URL [Local_FilePath] into URL [FTP_FilePath]” klappt nicht, auch nicht mit “file:” / “binfile.” Mit “revCopyFile” hatte ich auch kein Glück, ebenso nicht mit “libURLftpUploadFile”.

                                2. Eine Datei auf dem FTP erstellen & was ‘reinschreiben geht:
                                put the system date & CR & the system time into URL ("ftp://username:password@myDomain.org/myFolder/myFile.txt")
                                (Hmm, sollte 1 Zeile sein …)

                                Damit kann ich jetzt aber auch Dateien übertragen:

                                get URL ("file:" & "/data/data/com.axwald.myApp/files/myFile.txt)
                                 put it into URL ("ftp://username:password@myDomain.org/myFolder/myFile.txt")

                                (den lokalen Pfad baue ich mit:
                                “specialFolderPath(“documents”) & slash & [filename]”)

                                Hoffe das hilft.

                              • #16292
                                Peter_M
                                Teilnehmer

                                  Hallo Axwald,
                                  vielen Dank für deinen Post. Zwischendurch hatte ich mir schon Live Code 6.7.1 installiert und bei Oeffnung meines Stacks die Fehlermeldung erhalten: Opening Not possible, stack was produced by a newer version! Lief LiveCode 6.7.1 bereits unter Java JDK 8 ? Brauche ich für 6.7.1 auch eine Vorversion vom Android SDK? Ich werde auf deinen Post hin noch einmal einen neuen Anlauf nehmen und dir dann berichten. Alternativ habe ich mir heute die Indy Trialversion installiert und stehe schon wieder vor dem nächsten Problem: die Umwandlung meines Stacks in die Standalone APK mündet in der Fehlermeldung:There was an error while saving the Standalone application: apk preparation failed 🙁
                                  Gruß
                                  Peter

                                  • #16308
                                    Axwald
                                    Teilnehmer

                                      Hallo,

                                      > Opening Not possible, stack was produced by a newer version!
                                      Livecode hat (in der 7er Version, dann nochmal in der 8er) das Dateiformat für “.livecode”/ “.rev” geändert.Die Meldung kriegst Du, wenn Du mit einer “alten Version” einen “neuen Stack” öffnen willst,
                                      Abhilfe: Stack mit neuer Version öffnen, “Speichern unter …”, Dateiformat “Legacy LiveCode Stack (5.5)” auswählen 😉

                                      Achtung, die neuen Versionen konvertieren einen alten Stack auch manchmal, wenn nicht gespeichert wurde! Also Vorsicht!

                                      > Lief LiveCode 6.7.1 bereits unter Java JDK 8 ?
                                      > Brauche ich für 6.7.1 auch eine Vorversion vom Android SDK?
                                      Die Android-Unterstützung von LiveCode ist recht halbherzig (wie auch die von allem anderen, solange kein Apfel ‘draufklebt …). Aber Java 8 geht auch mit 6.7.10.
                                      Generell ist es recht fricklig, eine funktionierende Umgebung für Android aufzusetzen. Und recht einfach, sich eine solche wieder zu zerschießen …

                                      Ich benutze Java 8 (“jdk-8u144-windows-x64”) und das Android SDK 24 (“Android SDK installer_r24.4.1-windows”).
                                      Installiert sind SDK tools 24.1.1, Platform tools 25.0.4, Build-tools 25, sowie die SDK platforms 2.1 (API 7), 2.2 (API 8), 4.0.3 (API 15, mit ARM system image) (diese platforms sind Pflicht), und dann die 5.0.1 (API 21, mit ARM system image), für die ich kompiliere (mit LC 6.7.10).

                                      LC 9.5 will damit nicht arbeiten, es erwartet zumindest die SDK platform 9.0 (API 28). Und tatsächlich ist letzte Woche ein erstes Gerät mit Android 9 beim Kunden aufgetaucht 😉
                                      Meine beschriebene Entwicklungsumgebung rühre jetzt ich nicht an – mit der muß ich regelmäßig Updates kompilieren, davon lebe ich.

                                      Aber ich habe einen anderen Rechner, auf dem, bei identischer Konfiguration, die 6.7.10 nie kompiliert hat (“could not compile application class” – der Standard-Fehler). Da habe ich nun die SDK platform 9.0 (API 28) geladen, sowie SDK tools, Platform tools und Build-tools auf den aktuellen Stand gebracht.
                                      Und mit LC 9.5 erfolgreich eine Android 9-Version kompiliert 🙂

                                      Während ich das hier schreibe, kommt mir ein Gedanke: RDP auf o.a. Maschine, LC 6.7.10 gestartet, leeren Stack angelegt, für Android 5 kompiliert: Jetzt geht’s auf einmal!

                                      Man sieht, kompilieren mit LiveCode, für Android, kann recht mühsam sein.

                                      Viel Spaß!

                                  • #16294
                                    Peter_M
                                    Teilnehmer

                                      Hallo Günter,

                                      vielen Dank für deinen sehr interessanten Tipp. Das werde ich gleich ausprobieren. Nutzt du auch die Community Edition, wenn ja welche Version? Das Merkwürdige ist ja, dass alle Probleme mit dem Upload erst nach dem Kompilieren, und zwar ohne jegliche Fehlermeldung auftreten. In der Programmierumgebung funktioniert alles wunderbar, selbst mit kleinsten Dateien….
                                      Gruß Peter

                                    • #16310
                                      guko56
                                      Teilnehmer

                                        Hallo Peter
                                        Ich benutze die Community Edition 9.0.2.
                                        Bei mir geht auch alles in der Programmierumgebung und auch in der kompilierten Windowsversion. Nur in der Adroidversion auf dem Handy hatte ich halt diese Probleme.
                                        Gruß Günter

                                      • #16314
                                        Axwald
                                        Teilnehmer

                                          Mysteriös.

                                          Ich hatte neulich mal den Fall, daß meine erzeugten .APK’s aus irgendeinem Grund kein Internet konnten. Nach Neu-Installation von LC gings wieder.
                                          Zum Testen, ob die App Internetzugriff hat, baue ich immer irgendwo eine Funktion ein, die die externe IP ermittelt:
                                          answer "Die externe IP ist:" & CR & CR & URL "https://api.ipify.org"
                                          Gut, ich benutze statt ‘ipify’ ein PHP-Script auf der jeweiligen Kundenseite:

                                          <?PHP
                                          function getUserIP()  // service script awa; don't change!
                                          {
                                              $client  = @$_SERVER['HTTP_CLIENT_IP'];
                                              $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
                                              $remote  = $_SERVER['REMOTE_ADDR'];
                                              if(filter_var($client, FILTER_VALIDATE_IP))
                                              {
                                                  $ip = $client;
                                              }
                                              elseif(filter_var($forward, FILTER_VALIDATE_IP))
                                              {
                                                  $ip = $forward;
                                              }
                                              else
                                              {
                                                  $ip = $remote;
                                              }
                                              return $ip;
                                          }
                                          $user_ip = getUserIP();
                                          echo $user_ip; // Output IP address [Ex: 177.87.193.134]
                                          ?>

                                          Damit sieht der Anwender, ob der für ihn relevante Server auch da ist 😉 (Und ipify ist nicht besonders schnell …)

                                          Ansonsten, was fällt mir noch ein?

                                          1. Android ist ein Linux, und als solches case-sensitive bei Dateinamen. Groß-/Kleinschreibung beachten!

                                          2. Manche Router bieten für den WLAN-Gastzugang (der oft von Mobil-Teilen genutzt wird) die Option “Nur Surfen und EMail erlauben” – böse Falle! Dann geht nämlich der Datenbankzugriff nicht – und möglicherweise FTP auch nicht :/
                                          Auch “Internet-Sicherheits”-Appliances div. Schlangenöl-Händler sind schon unangenehm aufgefallen.

                                          3. “URL mobil” ist nicht das Gleiche wie “URL aufm Desktop” (aus dem Dictionary, Keywort “URL”):

                                          The iOS and Android engines do not support ‘libUrl’ but allow you to use URL. When specifying URLs for iOS and Android, you must use the appropriate form that confirms to the RFC standards. Ensure that you urlEncode any username and password fields appropriately for FTP urls.

                                          Important! The space character is not valid in URLs, however libURL (Desktop platforms) replaces this character with the required ‘%20’. This is something that the mobile and server platforms do not do. Be careful to construct valid URLs when working an fully cross platform applications.

                                          Ich hoffe, da war etwas nützliches dabei. Viel Spaß!

                                      Ansicht von 15 Antwort-Themen
                                      • Du musst angemeldet sein, um auf dieses Thema antworten zu können.