[Developer] MIUI Entwickler-Thread

  • 205 Antworten
  • Letztes Antwortdatum
S

sandimann

Stamm-User
522

EDIT v. eybee1970 (01.02.11)
:

Ich möchte Euch bitten, in diesem Thread Eure ambitionierte und wichtige Entwicklerarbeit für MIUI fortzusetzen! :)

Danke Euch!:winki:

________________________________________________________________________________________________________________________


Kann mir mal jemand eine gescheite anleitung für apktool schreiben? also vom decompile, über recompile und signieren? was ich beachten muss?
 
Zuletzt bearbeitet von einem Moderator:
sandimann schrieb:
Kann mir mal jemand eine gescheite anleitung für apktool schreiben? also vom decompile, über recompile und signieren? was ich beachten muss?

Hab dir eben was geschickt...is allerdings für apkmanager...hab ich mal von alf gekriegt, aber nie selber intensiv dran gearbeitet...
 
  • Danke
Reaktionen: sandimann
eybee1970 schrieb:
Hab dir eben was geschickt...is allerdings für apkmanager...hab ich mal von alf gekriegt, aber nie selber intensiv dran gearbeitet...

Danke :) das hilft mir erstmal weiter ;)
 
Hmm.. habe mal gerade versucht, den Hotspot in den einstellungen zu "verdrahten".

Bin mal wie folgt vorgegangen:

Habe die settings.apk mit apktool decompiled. ("apktool if framework-res.apk" und dann "apktool d Settings.apk")

Dann habe ich in der system_settings.xml den Punkt
Code:
        <PreferenceScreen android:title="@string/network_share_settings_title" android:image="@drawable/ic_settings_share">
            <intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.android.settings.TetherSettings" />
        </PreferenceScreen>
in
Code:
        <PreferenceScreen android:title="@string/network_share_settings_title" android:image="@drawable/ic_settings_share">
            <intent android:targetPackage="com.motorola.mynet" android:action="android.intent.action.MAIN" android:targetClass="com.motorola.mynet" />
        </PreferenceScreen>
geändert.

Nun habe ich die settings.apk wieder mit apktool compiled ("apktool b Settings").

Anschliessend habe ich mir aus der fertigen settings.apk die system_settings.xml rausgenommen, und in die aktuelle aus dem system eingefügt (in winrar nur "speichern" ausgewählt). Dann habe ich die settings.apk ausgetauscht, permissions gesetzt und neu gestartet.

In die Einstellungen komme ich noch, das ist kein Thema, aber wenn ich nun auf "Tethering & Hotspot" drücke, kommt n FC.

Leider finde ich im Internet aber auch kaum wirklich verständliche Hilfe zu diesen XML-Tags. habe mir das mehr oder minder zusammen gereimt. Weiss hier vll jemand rat?
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: moviecut
hey sandimann, finds saucool, dass du dich daran versuchst! soll ich jetzt noch den schritt zurück zu miui wagen? oder lieber morgen. wenn ich jetzt damit anfange, sitz ich hier wieder bis inne puppen am einrichten ;) aber irgendwie hab ich ja auch mal wieder bock auf was anderes...ach ist das alles schwer..
 
sandimann schrieb:
Hmm.. habe mal gerade versucht, den Hotspot in den einstellungen zu "verdrahten".

Bin mal wie folgt vorgegangen:

Habe die settings.apk mit apktool decompiled. ("apktool if framework-res.apk" und dann "apktool d Settings.apk")

Dann habe ich in der system_settings.xml den Punkt
Code:
        <PreferenceScreen android:title="@string/network_share_settings_title" android:image="@drawable/ic_settings_share">
            <intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.android.settings.TetherSettings" />
        </PreferenceScreen>
in
Code:
        <PreferenceScreen android:title="@string/network_share_settings_title" android:image="@drawable/ic_settings_share">
            <intent android:targetPackage="com.motorola.mynet" android:action="android.intent.action.MAIN" android:targetClass="com.motorola.mynet" />
        </PreferenceScreen>
geändert.

Nun habe ich die settings.apk wieder mit apktool compiled ("apktool b Settings").

Anschliessend habe ich mir aus der fertigen settings.apk die system_settings.xml rausgenommen, und in die aktuelle aus dem system eingefügt (in winrar nur "speichern" ausgewählt). Dann habe ich die settings.apk ausgetauscht, permissions gesetzt und neu gestartet.

In die Einstellungen komme ich noch, das ist kein Thema, aber wenn ich nun auf "Tethering & Hotspot" drücke, kommt n FC.

Leider finde ich im Internet aber auch kaum wirklich verständliche Hilfe zu diesen XML-Tags. habe mir das mehr oder minder zusammen gereimt. Weiss hier vll jemand rat?

eigentlich bist du m.e. schon auf einem guten weg. aber ich denke, du musst diese zeile so ändern, also nur den zweiten eintrag anpassen ... aber ich bin auch grade erst am lernen was android-programmierung betrifft:

Code:
          <intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="[B]com.motorola.mynet-1[/B]" />
 
Zuletzt bearbeitet:
nene.. android:targetPackage muss meiner Meinung nach auch auf die andere app zeigen, die ja geöffnet werden soll. Ich möchte ja das der die andere Hotspot-App startet, wenn ich auf diesen menüeintrag drücke. Also muss ich ihm ja auch das Ziel mitgeben ;)
Die targetClass muss ich mir sicherlich aus der mynet.apk rausziehen. Das habe ich auch bereits getan und nochmal getstet. Immer noch FC.
 
  • Danke
Reaktionen: invd
Gibt es denn die Klasse "com.motorola.mynet" überhaupt in der apk? Wenn die anders heißt, dann ist es klar, dass du nen FC bekommst... Vielleicht solltest du dir mynet auch noch mal decompilen und dir den Code anschauen...

EDIT: schau dir am besten auch noch mal den Code der Klasse "com.android.settings.TetherSettings" genau an, nicht dass du an der falschen Stelle ansetzt und erst eine "Ebene" tiefer die Änderungen vornehmen musst... Weil du ja geschrieben hast, dass bei dir sofort ein FC kommt, wenn du auf Tethering klickst... Ich würde den FC aber erst erwarten, wenn ich den Regler in dem Menü bei Wireless Tethering "umlege"...
 
Zuletzt bearbeitet:
alles klar, ich drück mal die daumen :)
 
w00kiee: habe ich getan. habe die com.motorola.mynet.apk (ja, ich habe das "-1" aus dem namen gelöscht ;)) auch schon in /system/app kopiert und versucht. ausserdem habe ich innerhalb der com.motorola.mynet.apk die Manifest.xml angeschaut. package-name = com.motorola.mynet

ausserdem scheint die Hauptklasse MyNet zu sein. Daher habe ich auch bereits das hier versucht:
android:targetClass="com.motorola.mynet.MyNet"

kein Erfolg.
Interessanterweise spinnt mein Stein durch diese kleine aber feine Änderung ein wenig. beispielsweise zeigt der in der Statuszeile nicht mehr den Akkustand in Prozent an, sondern zeigt nur noch ein batteriesymbol mit nem Fragezeichen. Wenn ich meine sicherungskopie der Settings.apk zurück spiele und neustarte, zeigt ders wieder normal an. kann sich jemand dieses verhalten erklären? Ich habe irgendwie das Gefühl, das ich entweder beim erstellen der xml, oder aber beim befüllen der richtigen Settings.apk irgendeinen Fehler mache.

EDIT: kay.. werde mir TetherSettings mal genauer anschauen ;)
 
So habe nochmal weiter geschaut. Unter anderem habe ich mir mal nach einem bestehenden Menüpunkt in der Settings.apk gesucht, der eine andere Anwendung startet. Bin auch fündig geworden. Wenn man unter Persönlich auf Theme drückt, wird der ThemeManager gestartet. Also habe ich mir mal angeschaut, wie der in den xml's drin steht.

In der personal_settings.xml steht dazu das hier:
Code:
        <PreferenceScreen android:title="@string/customized_theme_title" android:image="@drawable/ic_settings_customized_theme">
            <intent android:targetPackage="com.android.thememanager" android:action="android.intent.action.MAIN" android:targetClass="com.android.thememanager.PersonalStyleSettings" />
        </PreferenceScreen>
Laut Manifest.xml aus der ThemeManager.apk PersonalStyleSettings ist die Hauptklasse. Also bin ich mit meiner Annahme, das MyNet bei der HotSpot-app die hauptklasse ist schonmal richtig.

Ausserdem weiss ich jetzt, das mein Eintrag
Code:
        <PreferenceScreen android:title="@string/network_share_settings_title" android:image="@drawable/ic_settings_share">
            <intent android:targetPackage="com.motorola.mynet" android:action="android.intent.action.MAIN" android:targetClass="com.motorola.mynet.MyNet" />
        </PreferenceScreen>
in der system_settings.xml richtig sein muss.

Anschliessend habe ich in der Manifest.xml der Settings.apk mal nach dem themeManager gesucht. Hierzu habe ich hier aber keinen Eintrag gefunden. Also habe ich mal versucht, den Eintrag für TetherSettings aus der Manifest.xml rauszulöschen.

Aber hier nach wollte die Settings.apk gar nicht mehr starten. Wenn ich auf Einstellungen drücke, kommt kein FC. gar nichts. Es passiert rein gar nichts. Wenn ich den Eintrag in der Manifest.xml drin lasse, und den (meiner Meinung nach richtigen Eintrag) in der system_settings.xml drin lasse, bekomme ich wieder einen FC.

Irgendwie will mich Android grad veräppeln :D

EDIT: Oder meint ihr, das er sich vll. an den noch bestehenden smali-Dateien im "smali"-Ordner stören könnte?
 
Zuletzt bearbeitet:
sandimann schrieb:
PS: Ist wohl keiner da, der mir mit meinem Problem beim anpassen der Settings.apk helfen kann, oder? (eine Seite zurück blättern bitte ;))

Schonmal versucht zu debuggen? Dann wüsstest du wenigstens, was den FC verursacht.

Gruss,
DAan
 
sandimann schrieb:
PS: Ist wohl keiner da, der mir mit meinem Problem beim anpassen der Settings.apk helfen kann, oder? (eine Seite zurück blättern bitte ;))

Hast du die apk beim Kompilieren neu gesigned? Wenn nicht, wird das wohl der Grund sein warum sie gar nicht startet nachdem du die AndroidManifest.xml bearbeitet hast.

EDIT: Ups. Sorry wegen Doppelpost
 
och gott.. warum muss das so kompliziert sein? :D

wie debuge ich das denn am besten im laufenden betrieb?
zum signieren: wie geht denn das überhaupt? wenn ich die settings.apk veränder, muss ich die ja dann komplett neu signieren. aber wie geht das? zumal ich ja dann den schlüssel des ersten urhebers der settings.apk brauche, oder nicht?
 
Am bequemsten geht beides mit Eclipse und dem Android plugin.
Ohne Eclipse kannst du mit Keytool und Jarsigner signen (gibts in der JDK).

Zum Debuggen kommst du um einen Debugger nicht rum^^.
 
hast du für das signieren evtl einen link zu einem tutorial oder sowas zu hand? :)
 
DAanDASja schrieb:
Am bequemsten geht beides mit Eclipse und dem Android plugin.
Ohne Eclipse kannst du mit Keytool und Jarsigner signen (gibts in der JDK).

Zum Debuggen kommst du um einen Debugger nicht rum^^.

hast du da evtl. einen link zu einem tutorial oder ein paar infos, wie man das am besten umsetzt?
 
zauberwort: Apk_Manager_4.8

kann signen decompilen, compilen und vieles mehr.

einfach im xda dev in der suche den namen eingeben ;)

lg.

Sakaschi
 
jo, habe den apk-manager inzwischen gefunden und ans laufen gebracht. allerdings steht da bei sign apk "dont do this if system apk".. jetzt bekomm ich wieder angst ^^

heisst das, ich kann die settings.apk nicht signen? weil irgendwie müssen das die chinesen ja auch hinbekommen...
 

Ähnliche Themen

mancloud
Antworten
11
Aufrufe
8.580
diloniga
diloniga
mancloud
Antworten
0
Aufrufe
7.226
mancloud
mancloud
mancloud
  • mancloud
2 3 4
Antworten
76
Aufrufe
32.576
hwithv
H
Zurück
Oben Unten