LatinIME (2x dasselbe Package lässt Android nicht zu)

  • Antworten:8
AlCap0rn
  • Forum-Beiträge: 32

14.06.2012, 10:02:23 via Website

Ich brauche mal wieder eure Hilfe liebe Community :D

Folgende Problematik:
Ich möchte die LatinIME auf meine Bedürfnisse anpassen und habe den Quellcode und dort schon einige Änderungen gemacht. Anschließend wollte ich das Teil launchen, und ich bekomme folgende Fehlermeldung:

1Re-installtion failed due to different application signatures
2You must perform a full uninstall of the application. WARNINUNG: This will remove [...]
3Please execute 'adb uninstall com.android.inputmethod.latin' in a shell
4Launch canceled!


Da ich den LatinIME nicht einfach so entfernen kann (theoretisch schon, aber wenn ich sie anderen User anbiete, müssten die sich damit rumschlagen und Root-Rechte benötigen sie dazu auch), habe ich mir gedacht, ich bennene das Package einfach um bzw. modifiziere es. Da kommt auch schon die nächste Problematik. mit den Packages sind binäre Funktionen verbunden, das heisst wenn ich das Package umbennene, werden die Funktionen umbrauchbar.

Kann mir jemand vllt einen alternativen Lösungsweg vorschlagen?

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

14.06.2012, 15:22:16 via Website

das heißt aber nur, dass du kein update der installation machen kannst mit einer anderen signatur als der orginalen.

du musst das app vorher deinstallieren und dann neu installieren.

swordiApps Blog - Website

Antworten
AlCap0rn
  • Forum-Beiträge: 32

14.06.2012, 15:27:15 via Website

Klar, aber diese Anwendung existiert unter Umständen schon auf irgendwelchen Android-Geräten und gehört zum Standard-Inventar dazu, das heisst ich kann sie ohne Root-Rechte gar nicht löschen. Daher brauche ich einen anderen Lösungsweg.

Ich bin auch ein Stück weiter gekommen.

Das Package in der Manifest habe ich umbenannt in com.android.inputmethod.latin.ime und habe jeweils in jeder Datei das Package importet. Es lies sich auch installieren und wurde mir in den Eingabemethoden angezeigt. Allerdings startet der Service nicht und er meint immer er findet keine Klasse >.<

ClassNotFoundException

Kann jemand etwas damit anfangen?

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

14.06.2012, 15:31:36 via Website

ok package umbenennen ist sicher eine lösung

du musst aber auch die pfade dann zum service anpassen.

denke da steht sowas wie

<service name=".mein.service"

das müsstest ändern auf
<service name="das.alte.package.mein.service"


hoffe das ist ungefähr verständlich :D

swordiApps Blog - Website

Antworten
AlCap0rn
  • Forum-Beiträge: 32

14.06.2012, 15:38:48 via Website

1<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2 package="com.android.inputmethod.latin.ime"
3 android:versionCode="00001"
4 android:versionName="Version 0.01 #00001 [201206140951]"
5 >
6
7 <original-package android:name="com.android.inputmethod.latin" />
8
9 <uses-sdk android:minSdkVersion="10" />
10
11 <uses-permission android:name="android.permission.VIBRATE"/>
12 <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
13 <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
14 <uses-permission android:name="android.permission.RECORD_AUDIO" />
15 <uses-permission android:name="android.permission.READ_CONTACTS" />
16
17 <application android:label="@string/english_ime_name"
18 android:backupAgent="LatinIMEBackupAgent"
19 android:killAfterRestore="false">
20
21 <service android:name="LatinIME"
22 android:label="@string/english_ime_name"
23 android:permission="android.permission.BIND_INPUT_METHOD">
24 <intent-filter>
25 <action android:name="android.view.InputMethod" />
26 </intent-filter>
27 <meta-data android:name="android.view.im" android:resource="@xml/method" />
28 </service>
29
30 <activity android:name="LatinIMESettings" android:label="@string/english_ime_settings">
31 <intent-filter>
32 <action android:name="android.intent.action.MAIN"/>
33 </intent-filter>
34 </activity>
35
36 <activity android:name="InputLanguageSelection"
37 android:label="@string/language_selection_title">
38 <intent-filter>
39 <action android:name="android.intent.action.MAIN"/>
40 <action android:name="com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION"/>
41 <category android:name="android.intent.category.DEFAULT" />
42 </intent-filter>
43 </activity>
44 </application>
45</manifest>

Hier ist der Code, leider kann ich keinen kompletten Packagenamen angeben ^^

Antworten
AlCap0rn
  • Forum-Beiträge: 32

14.06.2012, 15:43:43 via Website

Er möchte ganze Zeit den Service com.android.inputmethod.latin.ime.LatinIme initialisieren. Der Service heisst aber: com.android.inputmethod.latin.LatinIme

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

14.06.2012, 16:08:29 via Website

ja genau meine antwort von vorher

du musst folgendes schreiben:

1<service android:name="com.android.inputmethod.latin.LatinIme" ....>

swordiApps Blog - Website

Antworten
AlCap0rn
  • Forum-Beiträge: 32

14.06.2012, 16:16:22 via Website

Das mit dem Service ist gelöst, aber der backupAgent funktioniert jetzt nicht, und die Package-Angabe beim backupAgent auch net >.>

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

14.06.2012, 16:57:26 via App

ist wohl das gleiche Problem

swordiApps Blog - Website

Antworten