Ist es leicht möglich eine APK für ics funktionsfähig zu machen? Hilfe gesucht

  • 10 Antworten
  • Letztes Antwortdatum
B

Bausparfuchs

Fortgeschrittenes Mitglied
18
Hallo,

ich habe da eine APK-Anwendung, die auf Gingerbread-Telefonen läuft, den Start bei einer Installation auf einem ICS-Telefon allerdings mit der Meldung "... reagiert nicht" quittiert.

Die App soll Sensordaten des Android-Devices über Bluetooth an das Engineeringsystem LabVIEW anbinden. Die App und ihr projektbezogener Kontext stammt von folgender Seite: LabVIEW hacker | android . Dort ist unter dem Link: http://labviewhacker.com/files/SendSensor.apk auch die entsprechende APK zu finden.

Der Entwickler antwortet bisher leider nicht auf meine Anfragen per Webformular.
Nach rudimentären ersten Recherchen soll der Code in einer APK ja begrenzt einsehbar sein (habe noch keinerlei Android Entwicklungserfahrung).

Die APK hat gerade mal eine Größe von 30KB, daher vermute ich einen relativ überschaubaren Code darin.

Falls dem so sein sollte, wer kann mir dabei helfen, die entsprechende APK irgendwie ICS-fähig zu bekommen?

Zur Verfügung stehen mir Windows oder Linuxumgebungen, auf denen ich das Projekt angehen könnte. Vielleicht kann mir ja jemand Starthilfe geben.

Java-Entwicklung ist mir leider fremd, ich kenne mich nur in C/C++, ASM und diversen hardwarenahen Programmierumgebungen aus.

Vielen Dank im Voraus

Gruß
 
wirf man eine blick in den system log
 
Wenn du das projekt hast villeicht möglich , das problem ist 30kb klingt wenig ist aber ne menge und du weisst nicht was genau den error auslöst da du
Glaub ich eine kostenflichtige Version von eclipse brauchst um apps im debugging auszuführen(bin aber nicht sicher) .also ich weiss nicht wie du dich auskennst aber ich würde es wohl nicht schaffen in einem fremden projekt den fehler wenn ich ihn finde richtig zu beheben und ics fähig zu machen...
Gesendet von meinem LT18i mit Tapatalk 2
 
debuggen fremder apps geht auch mit freier software.. wird aber vermutlich auch garnicht nötig sein..
 
Zuletzt bearbeitet:
Moinmoin,
danke schonmal für Eure Antworten.

Hier ist mal ein Syslog, ziemlich schwer für mich, da Dinge rauszulesen, vielelicht kannst Du ja was sehen. Zumindest einmal wird wohl ein Verzeichnis nicht gefunden.

Zum Zeitlichen Ablauf des Logs:

- ich habe "SendSensor" gestartet
- dann kommt die Meldung "SendSensor reagiert nicht, was ich mit OK quittiere"
- Das unterlagerte Popup fragt mich um Erlaubnis, dass SendSensor bluetooth einschalten will, was ich bejahe.
- Ich starte nun mit aktiviertem BT noch einmal "SendSensor" und quittiere die "reagiert nicht"-Meldung mit OK.

Danke und Gruß

Code:
10-25 10:38:18.871 I/ActivityManager(  294): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=develo.product.BtSendOri/.BtSendOri} from pid 723
10-25 10:38:18.894 W/ApplicationContext(  294): Unable to create files directory /data/data/develo.product.BtSendOri/files
10-25 10:38:18.910 D/dalvikvm(17475): Late-enabling CheckJNI
10-25 10:38:18.918 I/ActivityManager(  294): Start proc develo.product.BtSendOri for activity develo.product.BtSendOri/.BtSendOri: pid=17475 uid=10136 gids={3002, 3001}
10-25 10:38:18.941 I/dalvikvm(17475): Turning on JNI app bug workarounds for target SDK version 8...
10-25 10:38:18.964 D/OpenGLRenderer(  723): Flushing caches (mode 1)
10-25 10:38:19.004 D/LSAPP_Beacon(14758): mWifiScanReceiver: android.net.wifi.SCAN_RESULTS
10-25 10:38:19.011 D/LSAPP_Beacon(14758): notifyAllCallers : notify caller POI=null caller:Handler (com.motorola.contextual.virtualsensor.locationsensor.LocationDetection$MessageHandler) {41440898}
10-25 10:38:19.011 E/LSApp_App(14758): Sending Message to Handler (com.motorola.contextual.virtualsensor.locationsensor.LocationDetection$MessageHandler) {41440898}: msg :1010002
10-25 10:38:19.027 I/ActivityManager(  294): START {act=android.bluetooth.adapter.action.REQUEST_ENABLE cmp=com.android.settings/.bluetooth.RequestPermissionActivity} from pid 17475
10-25 10:38:19.058 D/OpenGLRenderer(  723): Flushing caches (mode 0)
10-25 10:38:19.058 W/ResourceType(17475): No package identifier when getting value for resource number 0x00000000
10-25 10:38:19.058 D/AndroidRuntime(17475): Shutting down VM
10-25 10:38:19.058 W/dalvikvm(17475): threadid=1: thread exiting with uncaught exception (group=0x40aaf210)
10-25 10:38:19.074 D/libgps  (  294): GpsInterface_inject_location( 49.228849, 7.031041, 20.000 )
10-25 10:38:19.074 D/libgps  (  294): MPDINJPOS_REQ msg id 12015
10-25 10:38:19.074 I/wpa_supplicant(  374): wpa_driver_nl80211_driver_cmd: Unsupported command SETSUSPENDOPT 0
10-25 10:38:19.074 E/AndroidRuntime(17475): FATAL EXCEPTION: main
10-25 10:38:19.074 E/AndroidRuntime(17475): java.lang.RuntimeException: Unable to start activity ComponentInfo{develo.product.BtSendOri/develo.product.BtSendOri.BtSendOri}: android.content.res.Resources$NotFoundException: Resource ID #0x0
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2083)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.ActivityThread.access$600(ActivityThread.java:134)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.os.Handler.dispatchMessage(Handler.java:99)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.os.Looper.loop(Looper.java:137)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.ActivityThread.main(ActivityThread.java:4697)
10-25 10:38:19.074 E/AndroidRuntime(17475): at java.lang.reflect.Method.invokeNative(Native Method)
10-25 10:38:19.074 E/AndroidRuntime(17475): at java.lang.reflect.Method.invoke(Method.java:511)
10-25 10:38:19.074 E/AndroidRuntime(17475): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
10-25 10:38:19.074 E/AndroidRuntime(17475): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
10-25 10:38:19.074 E/AndroidRuntime(17475): at dalvik.system.NativeStart.main(Native Method)
10-25 10:38:19.074 E/AndroidRuntime(17475): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.content.res.Resources.getValue(Resources.java:1020)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2124)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.content.res.Resources.getLayout(Resources.java:859)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.widget.TabHost$LabelIndicatorStrategy.createIndicatorView(TabHost.java:537)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.widget.TabHost.addTab(TabHost.java:223)
10-25 10:38:19.074 E/AndroidRuntime(17475): at develo.product.BtSendOri.BtSendOri.createMainTABHost(BtSendOri.java:239)
10-25 10:38:19.074 E/AndroidRuntime(17475): at develo.product.BtSendOri.BtSendOri.onCreate(BtSendOri.java:292)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.Activity.performCreate(Activity.java:4539)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-25 10:38:19.074 E/AndroidRuntime(17475): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2013)
10-25 10:38:19.074 E/AndroidRuntime(17475): ... 11 more
10-25 10:38:19.089 W/ApplicationContext(  294): Unable to create files directory files
10-25 10:38:19.535 W/ActivityManager(  294): Activity pause timeout for ActivityRecord{414339b8 develo.product.BtSendOri/.BtSendOri}
10-25 10:38:19.589 D/dalvikvm(  542): GC_FOR_ALLOC freed 953K, 19% free 10298K/12643K, paused 28ms
10-25 10:38:19.589 D/StatusBar.NetworkController(  378):  WifiManager.RSSI_CHANGED_ACTION | WIFI_STATE_CHANGED_ACTION | NETWORK_STATE_CHANGED_ACTION Received
10-25 10:38:19.589 D/ConnectivityService(  294): getMobileDataEnabled returning true
 
Es schaut wohl so aus als würde es Probleme mit den beigepackten Ressourcen geben. Allerdings ist Android abwärtskompatibel und ich würde erst mal klären ob das apk mit einer älteren Android Version wirklich überhaupt läuft. z.B mal im Emulator testen.
Programme die beim finden des Fehlers finden könnten sind zum einen
apktool android-apktool - A tool for reverse engineering Android apk files - Google Project Hosting
gut um an die Resourcen ranzukommen, erzeugt aber smali code

Dann gibts da noch:
dex2jar +
dex2jar - Tools to work with android .dex and java .class files - Google Project Hosting
JD-Gui
JD-GUI | Java Decompiler
Die Kombination hat den Vorteil lesbaren Java Code zu erhalten. Allerdings kommen dabei auch manchmal skurille Sachen raus: while(true)break; etc..
 
strider schrieb:
Es schaut wohl so aus als würde es Probleme mit den beigepackten Ressourcen geben. Allerdings ist Android abwärtskompatibel und ich würde erst mal klären ob das apk mit einer älteren Android Version wirklich überhaupt läuft. z.B mal im Emulator testen.

In meinem Eingangspost habe ich geschrieben, dass es auf GB Telefonen anstandslos läuft. Getestet habe ich es auf einem Samsung Galaxy Ace I, einem HTC One S auf Gingerbread sowie auf einem SGS3, einem SGS2 und auf meinem Razr mit ICS. Ich möchte jetzt nicht noch zig andere Geräte durchprobieren. Fakt ist, auf allen GB Telefonen läufts, auf allen ICS nicht.

apktool teste ich dieser Tage mal aus, hab ein tut gefunden, dass auch erklärt, wie der Smalicode wieder zu einem Eclipseprojekt werden kann.

Gruß
 
Ich würd mir mal Gedanken machen, wie das rechtlich aussieht.
Ich glaube nicht, dass es erlaubt ist die APK wieder umzuwandeln außer du bist der Entwickler selbst oder hast die Erlaubnis des Entwicklers.
 
Tja, was tun, wenn man den Entwickler nicht erreichen kann? Es gibt leider keine Lizenzinformationen auf der Webseite.

Das öffnen und einsehen eines Quelltextes ist glücklicherweise nicht problematisch. Problematisch ist dann das verändern und eventuell öffentlich machen.

Wenn beim hineinsehen im Code ein Vermerk auftaucht, dass es sich um eine GPL-Lizenz handelt, dann gibt es eh keine Probleme, aber das muss man erstmal rauskriegen.

Und solange der Entwickler nicht auf Kontaktanfragen reagiert, bleibt keine andere Möglichkeit.

Gruß
 
Wie du schon schriebst, solange du die veränderte Version nicht veröffentlichst kräht da kein Hahn nach..
 
Ist relativ einfach zu reparieren. Am besten besorgst du dir Anti-LVL. Ist zwar eigentlich zum entfernen von LVL calls gedacht, aber ist in diesem Fall nützlich, weil apktool dabei ist und Anti-LVL auch apks signieren kann.

-Anti-LVL entpacken, SendSensor.apk mit in den Ordner packen, dann Kommandozeile öffnen und in den Ordner wechseln.

-App dekompilieren mit 'apktool d -r SendSensor.apk'

-Im SendSensor Ordner die Datei BtSendOri.smali suchen mit einem beliebigen Texteditor öffnen.

-Folgende Zeile:

.line 211
new-instance v2, Landroid/widget/TabHost;

invoke-direct {v2, p0}, Landroid/widget/TabHost;-><init>(Landroid/content/Context;)V
ändern in

.line 211
new-instance v2, Landroid/widget/TabHost;

invoke-direct {v2, p0, v7}, Landroid/widget/TabHost;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
und speichern

-rekompilieren mit 'apktool b SendSensor SendSensor2.apk'

-signieren mit 'java -jar antilvl.jar --sign-only SendSensor2.apk'

SendSensor2.apk ist dann unter ICS lauffähig.
 

Ähnliche Themen

S
Antworten
7
Aufrufe
1.276
Silvasurf
S
C
Antworten
8
Aufrufe
577
CptGreenwood
C
Zurück
Oben Unten