Als je een mobiele engineer bent, gebruik je tijdens zowel het ontwikkelen als het testen waarschijnlijk enkele van de meest gangbare tools die er zijn om je netwerkoproepen te debuggen, te onderscheppen of te herschrijven, zoals Charles Proxy of Fiddler.
Je zult het proces van het instellen van de proxy in je apparaten waarschijnlijk ook behoorlijk vervelend vinden: ga naar Instellingen > Netwerk Instellingen > Selecteer je WiFi netwerk > Wijzig Netwerk > Voeg proxy toe. Elke. Enige. Elke. keer.
Als u met verschillende apparaten werkt, hebt u waarschijnlijk ook kleine verschillen opgemerkt tussen Android-versies, fabrikanten, enz., die de stappen die u neemt voor het instellen van de proxy kunnen toevoegen of wijzigen.
Er is een klein adb
commando dat u vanuit uw Terminal kunt uitvoeren om een globale proxy op uw verbonden apparaat in te schakelen:
adb shell settings put global http_proxy YOUR_IP:YOUR_PORT
Maar dit geeft u geen visuele indicator om te weten of het apparaat een proxy gebruikt of niet. Het vereist ook dat het apparaat is verbonden met een computer waarop adb is geïnstalleerd, elke keer dat u de proxy wilt in- of uitschakelen… waardoor het gebruik van deze workaround waarschijnlijk niet de meest ideale oplossing is.
Wel, ik heb goed nieuws voor je.
Proxy Toggle is een kleine hulpprogramma-applicatie die compatibel is met Android 5.0 en hoger, waarmee je snel je proxy-instellingen kunt in- en uitschakelen, en waarmee je het proces kunt verenigen en vereenvoudigen voor alle platformversies, apparaten, fabrikanten, enz.
Eenvoudige installatie: voeg gewoon het gewenste IP-adres en de poort toe, schakel de proxy in en voilà! klaar, uw hele apparaat wordt geproxied.
Het nog eenvoudiger maken
Ik weet dat dit allemaal opwindend nieuws is. Maar ik heb ook het gevoel dat het openen van de app elke keer dat u de proxy wilt inschakelen ook een lang proces kan zijn… toch?
Daarom heb ik ook twee optionele snelkoppelingen voor u toegevoegd: een widget voor het beginscherm en een tegel voor snelle instellingen.
Home Screen Widget
Deze snelkoppeling is erg handig om uw laatst gebruikte proxy snel in en uit te schakelen vanaf uw beginscherm.
Om de widget toe te voegen, moet je normaal gesproken lang op je startscherm drukken (afhankelijk van je launcher), Widget toevoegen selecteren en in je app-lijst naar beneden scrollen tot je de Proxy Toggle widget ziet.
Dat is alles! Met één tik schakelt u uw proxy in en uit!
Snelkoppeling
Als uw toestel op Android 7.0 of hoger draait, hebt u toegang tot nog een geweldige snelkoppeling: een snelkoppeling. Deze snelkoppeling bevindt zich in uw meldingslade, naast een aantal andere handige snelkoppelingen zoals WiFi, locatie, Bluetooth, vliegtuigmodus, enz.
Om het in te schakelen, vouwt u gewoon uw navigatie-lade uit, klikt u op het pictogram Bewerken en sleept u het pictogram Proxy-toggle naar de gewenste locatie.
Done! U kunt uw proxy in- en uitschakelen zonder de huidige app te verlaten!
Let op: als u netwerkgesprekken voert, kan het een paar seconden duren voordat deze zijn voltooid en bijgewerkt met de nieuwe instelling.
Alles wat blinkt is niet goud
Hoewel de app zijn doel perfect bereikt en ons leven eenvoudiger maakt, zijn er toch een paar kanttekeningen die ik bij deze blinkende app wil plaatsen.
Gebruik van systeembeveiligde machtigingen
De app zal gebruik maken van Settings.Global. Aangezien dit een systeeminstelling is, is het normaal een alleen-lezen instelling. Dit kleine ongemak wordt omzeild door de app WRITE_SECURE_SETTINGS
beveiligde toestemming te geven.
Note: dit is een beveiligde toestemming die alleen aan Systeem-apps mag worden gegeven. Wees extra voorzichtig wanneer u deze toestemming verleent aan apps van onbekende bronnen.
Ik weet dat dit tot enige bezorgdheid kan leiden, en ik begrijp dat.
Daarom heb ik besloten het project open te maken: om aan te tonen dat het volkomen veilig is om deze toestemming te geven, aangezien u volledige controle hebt over en weet wat er zich achter de schermen afspeelt.
Toekennen van systeem beperkte rechten
Omdat dit een beperkt recht is, kunnen we het niet runtime aanvragen zoals we normaal zouden doen, dus je moet het handmatig toekennen vanaf onze computer.
Als je gewoon de app wilt installeren zonder het te bouwen vanuit Android Studio, is er een klein script dat wordt gebundeld met de app. Download gewoon het zip-bestand en voer het installAndGrantPermission.sh
script uit.
Als alternatief kunt u de app handmatig installeren door adb install -g App.apk
op uw Terminal uit te voeren.
Om deze toestemming te verlenen als de app al is geïnstalleerd, sluit u het apparaat aan op uw computer en voert u het volgende commando uit op uw Terminal:
adb shell pm grant com.kinandcarta.create.proxytoggle android.permission.WRITE_SECURE_SETTINGS
Wees voorzichtig bij het verwijderen van de app
Treurig genoeg kunnen we als ontwikkelaars geen code uitvoeren wanneer de app wordt gedeïnstalleerd. Daarom zal het verwijderen van de app met de proxy ingeschakeld uw apparaat permanent met deze instelling achterlaten (aangezien het een Settings.Global configuratie is!).
U moet ervoor zorgen dat de proxy is uitgeschakeld voordat u de app verwijdert. Omdat we niet kunnen garanderen dat dit zal gebeuren, is er ook het uninstallAndCleanUp.sh
script om ervoor te zorgen dat alles in een schone staat is na het verwijderen van de app.
Als alternatief zou u de volgende opdrachten op uw Terminal kunnen uitvoeren om de proxy-instelling op te schonen:
adb shell settings delete global http_proxy
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port
Gemak binnen handbereik
Proxy Toggle maakt het gemakkelijker om een globale proxy op elke Android-telefoon in te stellen, en biedt ook verschillende snelkoppelingen voor het in- en uitschakelen van de proxy met een enkele tik op het scherm. Ik hoop dat deze tool net zo nuttig zal zijn voor uw team als het is geweest voor ons interne apps team, zowel ontwikkelaars als testers!
U kunt de laatste versie hier downloaden, of kloon het project van Github.
Met veel dank aan de unieke en geweldige Flor Novello voor haar onschatbare hulp met het app-ontwerp!