Application Type: Mobile phones
Titanium SDK: 3.1.2 GA
Platform & Version: Android Device over version 2.3 ( test it on 4.0 and 4.1 ) ,Emulator work like a charm
Devices: Physical Device Samsumg Galaxy SII and Primux OMEGA2(chinese chipset MTK6577 )
Host Operating System: MAC OSX 10.8.4
Titanium Studio: Build: jenkins-titanium-rcp-master-482 (origin/master) Date: 09 August 2013, 16:20:52
Hello,
We develop an application that use intensively maps, read kmls and show the information to the users. five o six days ago all code works like a charm but when update to 3.1.2 GA we have got crash when trying to run the application on physical devices with Android version over 2.3 ( works perfectly on Emulator iOS and Android versions 2.3 and 4.0 and physical devices with iOS) .
In logs we can see the problem is "Strict Mode" ( see logs below ) StrictMode$AndroidBlockGuardPolicy.onNetwork.... it seems like the new version not do a new Thread and crash with ANR alert!!
Now we go back and use 3.1.1GA goes fine again :-) ... any ideas why 3.1.2 GA fail with HTTPClient call???
Thanks in advance Antonio
EXAMPLE CODE:
function cargaMapa (mapa){
datosApp = JSON.parse(Titanium.App.Properties.getString("datosApp"));
var xhr2 = Ti.Network.createHTTPClient({
timeout:5000
});
xhr2.open('GET',datosApp.kml_points_url+'username='+datosApp.userName +'&password='+datosApp.password+'&latitude='+datosApp.latitudActual+'&longitude='+datosApp.longitudActual+'&languange=es&mapradius=200000.00');
xhr2.send();
xhr2.onerror = function (e) {
alert('Error al cargar el mapa:'+e.error);
return false;
};
xhr2.onload = function () {
var data = []; // array de datos donde vamos a guardar la descripcion del kml
var annotationData = [];
var kml = this.responseXML.documentElement;
puntos = [];
puntos = kml.getElementsByTagName('Placemark');
for (var c=0; c< puntos.length ; c++)
{
var punto = puntos.item(c);
var nombre = punto.getElementsByTagName('name').item(0).textContent;
var descripcion = punto.getElementsByTagName('description').item(0).textContent;
var elementos = [];
elementos = descripcion.split('#');
var imagen_codigo = [];
imagen_codigo = elementos[2].split('?');
var vista_izquierda = Titanium.UI.createView({
width: Ti.UI.SIZE,
height: Ti.UI.SIZE
});
var imagen_punto = Titanium.UI.createImageView({
image:datosApp.image_point_url+imagen_codigo[1]+'.jpg',
width: '32dp',
height: '32dp',
borderWidth :'2dp',
borderRadius: '1dp'
});
vista_izquierda.add(imagen_punto);
var latlon = punto.getElementsByTagName('Point').item(0).textContent;
elementos[0]=elementos[0].split(' ').join(''); /// EQUIVALENTE A LA FUNCION TRIM
elementos[1]=elementos[1].split(' ').join('');
elementos_detalle = elementos[0].split('Desc:');
var arrayLatLon = [];
arrayLatLon = latlon.split(',');
var lon = parseFloat(arrayLatLon[0]);
var lat = parseFloat(arrayLatLon[1]);
if (nombre != 'Your Position') { // SI NO HAY PUNTOS CERCA :-)
var annotation = Ti.Map.createAnnotation({
latitude: lat,
longitude: lon,
title: nombre,
subtitle: elementos_detalle[0],
image:imagen_codigo[0],
rightButton: '/icons/disclosure.jpg',
leftView:vista_izquierda,
//leftButton: imagen_punto.image,
animate: true,
myid:imagen_codigo[1]
});
} else {
var annotation = Ti.Map.createAnnotation({
latitude: lat,
longitude: lon,
title: nombre,
subtitle: elementos[0],
image:imagen_codigo[0],
animate: true
});
}
annotationData.push(annotation);
}
mapa.removeAllAnnotations();
mapa.addAnnotations(annotationData);
mapa.applyProperties({
mapType: Ti.Map.STANDARD_TYPE,
region:{
latitude:parseFloat(datosApp.latitudActual),
longitude:parseFloat(datosApp.longitudActual),
latitudeDelta:0.05,
longitudeDelta:0.05},
animate:true,
regionFit:true,
userLocation:true,
width:Ti.UI.FILL,
height:Ti.UI.FILL,
top:'0dp',
annotationData:annotationData
});
};
return true;
}
module.exports = cargaMapa;
LOGS:
[INFO][System.out(17138)] [socket][/10.122.123.196:32811] connected [INFO][System.out(17138)] [CDS]rx timeout:20000 [INFO][System.out(17138)] >doSendRequest [INFO][System.out(17138)] <doSendRequest [DEBUG][skia (17138)] --- SkImageDecoder::Factory returned null [DEBUG][skia (17138)] --- SkImageDecoder::Factory returned null [DEBUG][dalvikvm(17138)] threadid=15: exiting [DEBUG][dalvikvm(17138)] threadid=15: bye! [INFO][TiAPI (17138)] El valor del nombre del punto es:AlarmasUrgente Mantenimiento -- [INFO][TiAPI (17138)] La ruta de la imagen:http://appbout.appmakerscompany.com/scavisa//images/iconsAppboutInterest/regroup.png Codigo:78 [INFO][TiAPI (17138)] El valor del la descripcion es:ESTADO:Pendiente Desc: Distance:94.5369795079086#icon#http://appbout.appmakerscompany.com/scavisa//images/iconsAppboutInterest/regroup.png?78#/icon#-- [INFO][TiAPI (17138)] La latitud y lo longitud son:-16.2863608,28.4619371 [INFO][TiAPI (17138)] El valor del nombre del punto es:AlumbradoAccidente -- [INFO][TiAPI (17138)] La ruta de la imagen:http://appbout.appmakerscompany.com/scavisa//images/iconsAppboutInterest/star.png Codigo:34 [INFO][TiAPI (17138)] El valor del la descripcion es:ESTADO:Pendiente Desc: Distance:318.405912457442#icon#http://appbout.appmakerscompany.com/scavisa//images/iconsAppboutInterest/star.png?34#/icon#-- [INFO][TiAPI (17138)] La latitud y lo longitud son:-16.284261,28.459787 [INFO][System.out(17138)] [socket][2] connection /10.132.61.10:8080;LocalPort=36553(0) [INFO][System.out(17138)] [CDS]connect[/10.132.61.10:8080] tm:90 [DEBUG][AndroidRuntime(17138)] Shutting down VM [WARN][dalvikvm(17138)] threadid=1: thread exiting with uncaught exception (group=0x41ef6908) [ERROR][TiApplication(17138)] (main) [2037,20008] Sending event: exception on thread: main msg:android.os.NetworkOnMainThreadException; Titanium 3.1.2,2013/08/14 12:46,5ceaff8 [ERROR][TiApplication(17138)] android.os.NetworkOnMainThreadException [ERROR][TiApplication(17138)] at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1125) [ERROR][TiApplication(17138)] at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) [ERROR][TiApplication(17138)] at libcore.io.IoBridge.connectErrno(IoBridge.java:159) [ERROR][TiApplication(17138)] at libcore.io.IoBridge.connect(IoBridge.java:112) [ERROR][TiApplication(17138)] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) [ERROR][TiApplication(17138)] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) [ERROR][TiApplication(17138)] at java.net.Socket.connect(Socket.java:857) [ERROR][TiApplication(17138)] at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76) [ERROR][TiApplication(17138)] at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) [ERROR][TiApplication(17138)] at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) [ERROR][TiApplication(17138)] at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) [ERROR][TiApplication(17138)] at libcore.net.http.HttpConnection.connect(HttpConnection.java:117) [ERROR][TiApplication(17138)] at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) [ERROR][TiApplication(17138)] at libcore.net.http.HttpEngine.connect(HttpEngine.java:311) [ERROR][TiApplication(17138)] at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) [ERROR][TiApplication(17138)] at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) [ERROR][TiApplication(17138)] at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292) [ERROR][TiApplication(17138)] at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:185) [ERROR][TiApplication(17138)] at java.net.URL.openStream(URL.java:462) [ERROR][TiApplication(17138)] at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:176) [ERROR][TiApplication(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:791) [ERROR][TiApplication(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:300) [ERROR][TiApplication(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:284) [ERROR][TiApplication(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getDrawable(TiDrawableReference.java:440) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView.makeMarker(TiMapView.java:1097) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView.access$800(TiMapView.java:58) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView$TitaniumOverlay.createItem(TiMapView.java:292) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView$TitaniumOverlay.createItem(TiMapView.java:244) [ERROR][TiApplication(17138)] at com.google.android.maps.ItemizedOverlay.populate(ItemizedOverlay.java:309) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView$TitaniumOverlay.setAnnotations(TiMapView.java:267) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView.doSetAnnotations(TiMapView.java:963) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView.doUpdateAnnotations(TiMapView.java:721) [ERROR][TiApplication(17138)] at ti.modules.titanium.map.TiMapView.handleMessage(TiMapView.java:610) [ERROR][TiApplication(17138)] at android.os.Handler.dispatchMessage(Handler.java:95) [ERROR][TiApplication(17138)] at android.os.Looper.loop(Looper.java:153) [ERROR][TiApplication(17138)] at android.app.ActivityThread.main(ActivityThread.java:4987) [ERROR][TiApplication(17138)] at java.lang.reflect.Method.invokeNative(Native Method) [ERROR][TiApplication(17138)] at java.lang.reflect.Method.invoke(Method.java:511) [ERROR][TiApplication(17138)] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) [ERROR][TiApplication(17138)] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) [ERROR][TiApplication(17138)] at dalvik.system.NativeStart.main(Native Method) [ERROR][AndroidRuntime(17138)] FATAL EXCEPTION: main [ERROR][AndroidRuntime(17138)] android.os.NetworkOnMainThreadException [ERROR][AndroidRuntime(17138)] at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1125) [ERROR][AndroidRuntime(17138)] at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) [ERROR][AndroidRuntime(17138)] at libcore.io.IoBridge.connectErrno(IoBridge.java:159) [ERROR][AndroidRuntime(17138)] at libcore.io.IoBridge.connect(IoBridge.java:112) [ERROR][AndroidRuntime(17138)] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) [ERROR][AndroidRuntime(17138)] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) [ERROR][AndroidRuntime(17138)] at java.net.Socket.connect(Socket.java:857) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpConnection.connect(HttpConnection.java:117) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpEngine.connect(HttpEngine.java:311) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292) [ERROR][AndroidRuntime(17138)] at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:185) [ERROR][AndroidRuntime(17138)] at java.net.URL.openStream(URL.java:462) [ERROR][AndroidRuntime(17138)] at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:176) [ERROR][AndroidRuntime(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:791) [ERROR][AndroidRuntime(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:300) [ERROR][AndroidRuntime(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:284) [ERROR][AndroidRuntime(17138)] at org.appcelerator.titanium.view.TiDrawableReference.getDrawable(TiDrawableReference.java:440) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView.makeMarker(TiMapView.java:1097) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView.access$800(TiMapView.java:58) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView$TitaniumOverlay.createItem(TiMapView.java:292) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView$TitaniumOverlay.createItem(TiMapView.java:244) [ERROR][AndroidRuntime(17138)] at com.google.android.maps.ItemizedOverlay.populate(ItemizedOverlay.java:309) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView$TitaniumOverlay.setAnnotations(TiMapView.java:267) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView.doSetAnnotations(TiMapView.java:963) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView.doUpdateAnnotations(TiMapView.java:721) [ERROR][AndroidRuntime(17138)] at ti.modules.titanium.map.TiMapView.handleMessage(TiMapView.java:610) [ERROR][AndroidRuntime(17138)] at android.os.Handler.dispatchMessage(Handler.java:95) [ERROR][AndroidRuntime(17138)] at android.os.Looper.loop(Looper.java:153) [ERROR][AndroidRuntime(17138)] at android.app.ActivityThread.main(ActivityThread.java:4987) [ERROR][AndroidRuntime(17138)] at java.lang.reflect.Method.invokeNative(Native Method) [ERROR][AndroidRuntime(17138)] at java.lang.reflect.Method.invoke(Method.java:511) [ERROR][AndroidRuntime(17138)] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) [ERROR][AndroidRuntime(17138)] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) [ERROR][AndroidRuntime(17138)] at dalvik.system.NativeStart.main(Native Method)