Ingenieurbüro Edelmann

Ingenieurbüro Edelmann

Softwareentwicklung • Softwarearchitektur • Beratung


Apple veröffentlicht iOS10.3beta mit App Store Ratings und Reviews

Apple hat gestern Abend (24.01.2017) eine neue Beta Version Ihres iOS Betriebssystems im Developer Portal veröffentlicht.

Das erste was ich dann immer mache, ich starte den Xcode Download und lese die Release Notes für Xcode, iOS und tvOS. Diese finden sich direkt mit auf der Downloadseite.

Da der Download ja meist doch etwas länger dauert ;) , schau ich als nächstes in den “Guides und Sample Code”-Bereich, ob sich hier auch etwas getan hat. Unter Resource Types gibt’s hier auch einen Release Notes Punkt.

Release Notes Übersicht

In den Release Notes findet sich dann meist ein Punkt What’s New in iOS. Den angeklickt und die Release Notes für iOS10.3 ausgewählt, findet sich da doch tatsächlich ein schon lange erwartetes Feature Managing App Store Ratings and Reviews.

Release Notes Übersicht

iOS bringt also ab 10.3 einen eigenen ViewController mit, der es ermöglicht, den User einer App “auf die Möglichkeit, die App zu reviewen” hinzuweisen. Und das, ohne wie bisher üblich, die App zu verlassen.

Nice!

unerwünschte Xcode 8 Logs

Eine neue Xcode Version bringt auch immer neue Überraschungen mit sich. Die Version 8 bringt eine neue Vielfalt an Log Infos (noch ist mir allerdings nicht klar wofür man die Info benutzen kann ;).

unerwünschte Xcode 8 Logs

Falls die zusätzlichen Logs nerven, dann einfach das aktuelle “Run-Schema” zum editieren öffnen.

unerwünschte Xcode 8 Logs

Hier dann einen neuen “Environment Variable” Eintrag erstellen und dafür “OS_ACTIVITY_MODE” und “disable” einfügen.

unerwünschte Xcode 8 Logs

Und schon ist das Logfenster wieder aufgeräumt, wie früher.

Android Studio - Constraint Layout, Guidelines und Percentage/Prozent

Die neue Android Studio Version 2.2 (aktuell Preview 2.2.0.1) bietet mit dem neuen ContraintLayout einen neuen, interessanten Layout Manager an. Via Support Library werden sogar SDK’s bis Version 9 unterstützt (Android 2.3 Gingerbread).

Ein interessantes neues Feature dabei, ist das Ausrichten an Hilflinien (Guidelines). Um das mal auszuprobieren, wollte ich ein Label über vier Constraints an Hilfslinien ausrichten. Damit das Erscheinungsbild auf unterschiedlichen Displaygrößen gleich aussieht, wollte ich zusätzlich anstelle von fixen Pixelgrößen lieber Verhältnisse in Form von Prozentangaben einstellen.

Im neuen Layout Editor des Android Studios ist das zwar möglich, aber zumindest in der aktuellen Preview nicht unbedingt selbsterklärend.

Als erstes habe ich im Layout Editor eine neue horizontale Guideline (Hilfslinie) angelegt. Um die Größenangaben auf “Prozent” umstellen zu können, darf (in der aktuellen Preview) nur der Blueprint aktiv sein. Dazu oben in der Leiste mit den Buttons umstellen.

Android Studio Constraint Layout 1

Ist nur der Blueprint aktiv, kann durch klicken auf den Aufwärts-Pfeil im Bild auf “%” umgestellt werden.

Android Studio Constraint Layout 2

… und die Hilfslinie einfach auf 33% verschoben werden.

Android Studio Constraint Layout 3

Für eine zweite horizontale Hiflslinie bei 66 Prozent genauso verfahren.

Android Studio Constraint Layout 4

Als nächstes zwei vertikale Guidelines erzeugen.

Android Studio Constraint Layout 5

Jetzt ein TextView Widget per Drag&Drop in den Bereich der sich kreuzenden Guidelines ziehen. Das Widget “rastet” dann dort links und oben ein. (erkennbar an den roten Linien)

Android Studio Constraint Layout 6

Dann das Widget nach unten ..

Android Studio Constraint Layout 7

… und nach rechts einrasten.

Android Studio Constraint Layout 8

Und die Größe des TextViews von “wrap_content” auf “0dp” umstellen.

Android Studio Constraint Layout 9

Zum Schluss noch die Abstände, wie im Bild, auf 0dp setzen …

Android Studio Constraint Layout 10

… und den Vorschau Modus wieder aktivieren.

Android Studio Constraint Layout 11

FERTIG!

So leicht ist es, im neuen Layout Editor, Widgets an Hilfslinien auszurichten.

Entstanden ist dabei die folgenden XML Datei:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="de.ib_edelmann.constraintlayout.MainActivity">
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline1"
android:orientation="horizontal"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="173dp"
app:relativePercent="34" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:id="@+id/guideline2"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="342dp"
app:relativePercent="67" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline3"
android:orientation="vertical"
tools:layout_editor_absoluteX="99dp"
tools:layout_editor_absoluteY="0dp"
app:relativePercent="26" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline4"
android:orientation="vertical"
tools:layout_editor_absoluteX="291dp"
tools:layout_editor_absoluteY="0dp"
app:relativePercent="76" />
<TextView
android:layout_height="0dp"
android:id="@+id/textView"
android:layout_width="0dp"
android:text="Layout Constraints"
android:textAppearance="@android:style/TextAppearance.Material.Large"
android:textAlignment="center"
app:layout_constraintLeft_toLeftOf="@+id/guideline3"
app:layout_constraintTop_toTopOf="@+id/guideline1"
app:layout_constraintRight_toLeftOf="@+id/guideline4"
app:layout_constraintBottom_toTopOf="@+id/guideline2"
android:background="#ff8000" />
</android.support.constraint.ConstraintLayout>

Einfach oder?

Also bis jetzt beeindruckt mich die neue Android Studio Version ja schon. Mal sehen wie sich diese noch weiter entwickelt und ich diese produktiv einstetzen werde. ;)

Google I/O 2016 - Android Studio 2.2 Preview - Constraint Layout

Vom 18. bis zum 20. Mai 2016 fand die diesjährige Google Entwicklerkonferenz Google I/O (https://events.google.com/io2016) statt. Google selbst spricht übrigens nicht mehr von Entwicklerkonferenz, sondern von einem Developer Festival ;). Stattgefunden hat die Google I/O dieses Jahr nicht in San Fransisco im Moscone Center, sondern in den Shoreline Amphitheatres in Mountain View, CA, sozusagen Googles Hinterhof.

Google I/O 2016

Im Rahmen der I/O wurden auch neue Developer Tools für Android vorgestellt. So zum Beispiel eine neue Version der Android Entwicklungsumgebung Android Studio in einer Preview Version (2.2.0.1 Preview). –> “This week at Google I/O 2016 we launched Android Studio 2.2 Preview.”

Die beinhaltet zahlreiche neue Features die die Entwicklung betreffen, aber auch neue und verbesserte Designunterstützung. Am interessantesten finde ich einen neuen Layout Manager namens “Constraint Layout”.

–> “Constraint Layout: A new powerful and flexible Android layout that allows you to express complex UIs without nesting multiple layouts.”

Der wird im ‘Rahmen’ einer Support Library rückwärtskompatibel bis Version 9 des Android SDKs angeboten.

Und für diesen neuen Constraint Layout Manager gibt es auch Design Unterstützung im neuen Android Studio. Allerdings ist die noch Work-in-Progess.

Ein erster Blick:

Android Studio Constraint Layout

Der Riesenvorteil im neuen Android Studio (zumindest wenn die Entwicklung abgeschlossen ist): Die Constraints können per UI (Drag and Drop) erstellt werden und das XML muss nicht nochmal angefasst werden. (So der Plan ;)

Constraints können vom aktiven View zu einem anderen Punkt erstellt werden, wie:

  • dem Ankerpunkt eines andern Views
  • dem Eckpunkt eines Layouts
  • einer unsichtbaren Hilfslinie

mehr demnächst hier!

PS: Irgendwie erinnert mich das ConstraintLayout an das AutoLayout bei iOS. Oder? ;)

Android Studio 2.0

Nach langem Warten ist das Android Studio nun in der Version 2.0 erschienen.

Mein absolutes Lieblingsfeature (ich weiß jetzt grad nicht wie es offiziell heißt, aber):

  • Instant Code Swapping

–> Der Entwicklungszyklus wird wieder erträglich im Emulator, wenn testweise Kleinigkeiten an der Benutzerobrfläche geändert werden. !!!

Weitere Features:

Android Studio 2.0 Features

Reto Meier im Youtube Android Developer Channel:

WWDC 2016 Ticket Lotterie

Apple alljährliche Entwicklerkonferenz “WWDC”:https://developer.apple.com/wwdc steht wieder an.

Die WWDC wird dieses Jahr vom 13.-17. Juni 2016 in San Francisco stattfinden. Viele, viele Developer werden zu dieser Zeit wieder nach San Francisco pilgern und Apple huldigen. Noch viel mehr werden allerdings wieder leer ausgehen, da die Tickets mittlerweile so begehrt sind, dass sie über eine Art Lotterie ausgespielt werden.

Für uns Europäer ist die ganze Konferenz sicherlich eine tolle Erfahrung mit interessanten Einblicken, allerdings auch ein ziemlich teurer Spaß. Zu der Zeit sind keine vernünftigen Hotelzimmer unter 150$ zu bekommen. Und der Flug schlägt auch nochmal mit mindestens 1000€ zu Buche bzw. zu Karte.

Ich werde dieses Jahr gar nicht erst versuchen ein Ticket über die Lotterie zu ergattern, sondern werde mich ganz auf die, mittlerweile tollen, Streamingangebote verlassen. Die Keynotes werden per Live Stream übertragen und meisten interessanten Sessions gibt es kurz nachher als Video.

Allen die bei der Lotterie teilnehmen viel Erfolg!

Apple WWDC 2016 Einladung Screenshot

UbiWoL - die neue WakeOnLAN App für iOS und tvOS 1 (später watchOS)

Um mein NAS und diverse andere Rechner bequem von überall im häuslichen WLAN starten zu können, war ich auf der Suche nach einer Wake-On-LAN App im iOS AppStore. Leider war da nichts vernünftiges und zeitgemäßes zu finden. Also Selbermachen ;)


Update 2016-04-05: Apples Review Team hat es noch immer nicht geschafft, die tvOS Version zu prüfen. Daher ist jetzt erstmal nur die iOS Version im AppStore verfügbar. :(


Hier ein Screenshot des Ergebnisses für iOS:

UbiWoL am iPhone SE

Nicht nur zum Starten eines Rechners ist die App geeignet, es werden auch die aktuell laufenden Rechner durch ein Indikatorfeld (rot/grün) angezeigt.

Aktuelle Features:

  • WakeOnLAN (WOL) Packete verschicken ;)
  • Status Indikator (Rechner an/aus)
  • iCloud Sync zwischen verschiedenen Rechnern

Demnächst im UbiWoL im AppStore

iOS 9 - AppIcons

Gerade habe ich für ein eigenes iOS und tvOS Projekt in Inkscape ein Icon entworfen. Um alle Plattformicons (25 Stück) zu erstellen, muss ich 25x in inkscape jeweils die neue Icongrüße und einen Namen angeben. Dauert …

iOS 9 App Icons

iOS 9 Watch Icons

tvOS 9 App Icons

Das muss doch einfacher gehen.

Tut’s auch.

Inkscape kann auch per Kommandozeile gesteuert werden. Dadurch kann ich alle Icons per Script zeitsparend erzeugen lassen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh
inkscape --export-area-drawing --export-png=icon__29.png --export-width=29 --export-height=29 $1
inkscape --export-area-drawing --export-png=icon__58.png --export-width=58 --export-height=58 $1
inkscape --export-area-drawing --export-png=icon__87.png --export-width=87 --export-height=87 $1
inkscape --export-area-drawing --export-png=icon__40.png --export-width=40 --export-height=40 $1
inkscape --export-area-drawing --export-png=icon__80.png --export-width=80 --export-height=80 $1
inkscape --export-area-drawing --export-png=icon_120.png --export-width=120 --export-height=120 $1
inkscape --export-area-drawing --export-png=icon_180.png --export-width=180 --export-height=180 $1
inkscape --export-area-drawing --export-png=icon__76.png --export-width=76 --export-height=76 $1
inkscape --export-area-drawing --export-png=icon_152.png --export-width=152 --export-height=152 $1
inkscape --export-area-drawing --export-png=icon_167.png --export-width=167 --export-height=167 $1
inkscape --export-area-drawing --export-png=icon__48.png --export-width=48 --export-height=48 $1
inkscape --export-area-drawing --export-png=icon__55.png --export-width=55 --export-height=55 $1
inkscape --export-area-drawing --export-png=icon__88.png --export-width=88 --export-height=88 $1
inkscape --export-area-drawing --export-png=icon_172.png --export-width=172 --export-height=172 $1
inkscape --export-area-drawing --export-png=icon_196.png --export-width=196 --export-height=196 $1
inkscape --export-area-drawing --export-png=icon1024.png --export-width=1024 --export-height=1024 $1

OS X 10.11 El Capitan von USB Stick installieren

Wer das neue OS X 10.11 Betriebssystem El Capitan auf mehreren Mac’s installieren möchte oder einfach nur einen Offline Installer sucht, ist hier richtig.

El Capitan von USB 1

So erstellt man einen bootbaren OS X 10.11 El Capitan USB Stick:

  • zuerst der zeitaufwändigste Teil, der Download von der neuen OS X Version El Capitan ( bei mir ca. eine ganze Stunde)

El Capitan von USB 2

  • einen USB Stick mit 8GB oder mehr einstecken

  • “diskutility” starten

El Capitan von USB 3

El Capitan von USB 4

  • den USB Stick mit Mac OS X Extended (Journaled) formatieren und als Name z.B. “ElCapUSB” angeben

  • wenn der Stick formatiert ist, kann das von Apple bereitgestellte Installations- bzw. Kopierscript verwendet werden:

bc. sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia –volume /Volumes/ElCapUSB –applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app –nointeraction

El Capitan von USB 5

  • 15 Minuten warten

–>

Done!