I'm trying to use Firebase Test Lab to run instrumentation tests of my Android app but some tests failed because the currency symbol is not euro (€) but the standard currency sign (¤).
The locale is well defined (French) and it works without problem on my local machine.
Am I supposed to not hard-write the € symbol in the test class and get it dynamically with Currency class ? But the good practise is to always hard-write the expected value...
Expected: with text: is "0,00 €"
Got: "AppCompatTextView{id=2131296465, res-name=total, visibility=VISIBLE, width=1071, height=57, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=android.widget.RelativeLayout$LayoutParams#120f8796, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=0,00 ¤, input-type=0, ime-target=false, has-links=false}"
one can pass the desired locale to test-lab with the --device parameter.
as the documentation for gcloud firebase test android run reads:
--device is now the preferred way to specify test devices and may not be used in conjunction with --devices-ids, --os-version-ids, --locales, or --orientations. Omitting all of the preceding dimension-related flags will run tests against a single device using defaults for all four device dimensions.
--device model=shamu,version=23,locale=fr_FR,orientation=default
else it will just use the default locale en - which results in that ¤ unspecified currency symbol.
to assume that French locale means the € as currency symbol might be wrongful; because when running gcloud firebase test android locales list, it outputs quite a bunch of the colonies:
│ fr │ French │
│ fr_BE │ French │ Belgium
│ fr_BF │ French │ Burkina Faso
│ fr_BI │ French │ Burundi
│ fr_BJ │ French │ Benin
│ fr_BL │ French │ Saint Barthélemy
│ fr_CA │ French │ Canada
│ fr_CD │ French │ Congo (DRC)
│ fr_CF │ French │ Central African Republic
│ fr_CG │ French │ Congo (Republic)
│ fr_CH │ French │ Switzerland
│ fr_CI │ French │ Côte d’Ivoire
│ fr_CM │ French │ Cameroon
│ fr_DJ │ French │ Djibouti
│ fr_DZ │ French │ Algeria
│ fr_FR │ French │ France
│ fr_GA │ French │ Gabon
│ fr_GF │ French │ French Guiana
│ fr_GN │ French │ Guinea
│ fr_GP │ French │ Guadeloupe
│ fr_GQ │ French │ Equatorial Guinea
│ fr_HT │ French │ Haiti
│ fr_KM │ French │ Comoros
│ fr_LU │ French │ Luxembourg
│ fr_MA │ French │ Morocco
│ fr_MC │ French │ Monaco
│ fr_MF │ French │ Saint Martin
│ fr_MG │ French │ Madagascar
│ fr_ML │ French │ Mali
│ fr_MQ │ French │ Martinique
│ fr_MR │ French │ Mauritania
│ fr_MU │ French │ Mauritius
│ fr_NC │ French │ New Caledonia
│ fr_NE │ French │ Niger
│ fr_PF │ French │ French Polynesia
│ fr_PM │ French │ Saint Pierre and Miquelon
│ fr_RE │ French │ Réunion
│ fr_RW │ French │ Rwanda
│ fr_SC │ French │ Seychelles
│ fr_SN │ French │ Senegal
│ fr_SY │ French │ Syria
│ fr_TD │ French │ Chad
│ fr_TG │ French │ Togo
│ fr_TN │ French │ Tunisia
│ fr_VU │ French │ Vanuatu
│ fr_WF │ French │ Wallis and Futuna
│ fr_YT │ French │ Mayotte
Related
I'm trying to track how many users have replied in my firebase DB, and I'm wondering what the best workflow is. I want to send a notification to the last user to reply.
My firebase Db is organised like so currently
├── chat
│ ├── -M5D96yP5Ac688-ZPU0C << chatId 1
│ │ ├── info
│ │ │ ├── groupName: Breakfast Club
│ │ │ ├── id: -M5D96yP5Ac688-ZPU0C
│ │ │ ├── last_reply_from: 8J7PX3ezjMTuOiAPO1BbOGJGP1g1
│ │ │ ├── no_of_users: 4
│ │ │ └── Users:
│ │ │ ├── 8J7PX3ezjMTuOiAPO1BbOGJGP1g1: true
│ │ │ ├── QvmGG2vPfTrdjZBfWP2ZotajYE3: false
│ │ │ ├── y1EKihfmIJTDCD9OJt0N89WDC643: false
│ │ │ └── zQvmGG2vPfTrdjZBfWP2ZotajYE3: false
│ │ └──Messages
│ │ .....
├── user
And I was going to do the following.
count the amount of users and add to "no_of_users" field uing getChildrenCount()
count how many users have true as their value
subtract one from the other, and if == 1 then send notification
reset all users values to false, and start again.
private void checkReplies() {
final DatabaseReference chatInfoDb = FirebaseDatabase.getInstance().getReference().child("chat").child(mChatObject.getChatId()).child("info").child("users");
final DatabaseReference numberOfUsers = FirebaseDatabase.getInstance().getReference().child("chat").child(mChatObject.getChatId()).child("info").child("no_of_users");
Query query = chatInfoDb.orderByValue().equalTo(true);
query.addListenerForSingleValueEvent(new ValueEventListener() {
#Override
public void onDataChange(#NonNull DataSnapshot dataSnapshot) {
final long howManyReplies = dataSnapshot.getChildrenCount();
System.out.println("How many users have replied " + howManyReplies);
numberOfUsers.addListenerForSingleValueEvent(new ValueEventListener() {
#Override
public void onDataChange(#NonNull DataSnapshot dataSnapshot) {
long numberOfUser = (long) dataSnapshot.getValue();
long maths = numberOfUser - howManyReplies;
if(maths == 1){
Query query = chatInfoDb.orderByValue().equalTo(false);
query.addListenerForSingleValueEvent(new ValueEventListener() {
#Override
public void onDataChange(#NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot childsnapshot : dataSnapshot.getChildren()) {
String lastToReply = childsnapshot.getKey();
runSomethingElse(lastToReply);
}
}
#Override
public void onCancelled(#NonNull DatabaseError databaseError) {
}
});
}
}
But now I'm wondering if it would be better to have a "replied" node, and add users to it as they reply, then use myRef.removeValue() to clear out all replies. That seems like it'd be easier than looping through all the users to set them to false again.
e.g.
│ ├── -M5D96yP5Ac688-ZPU0C << chatId 1
│ │ ├── info
│ │ │ ├── groupName: Breakfast Club
│ │ │ ├── id: -M5D96yP5Ac688-ZPU0C
│ │ │ ├── last_reply_from: 8J7PX3ezjMTuOiAPO1BbOGJGP1g1
│ │ │ ├── no_of_users: 4
│ │ │ ├── Users:
│ │ │ │ ├── 8J7PX3ezjMTuOiAPO1BbOGJGP1g1: true
│ │ │ │ ├── QvmGG2vPfTrdjZBfWP2ZotajYE3: true
│ │ │ │ ├── y1EKihfmIJTDCD9OJt0N89WDC643: true
│ │ │ │ └── zQvmGG2vPfTrdjZBfWP2ZotajYE3: true
│ │ │ └── replies:
│ │ │ ├── 8J7PX3ezjMTuOiAPO1BbOGJGP1g1: true
│ │ │ └── zQvmGG2vPfTrdjZBfWP2ZotajYE3: true
│ │ └──Messages
│ │ .....
Which of these would be the more efficient workflow for this? Or is there another way to track this.
Many Thanks!
Instead of complicating your nodes like this, have a super node that tracks replies of a certain chat ID, everytime a user replies add their IDs to this super node. Something like that:
Replies
|
|
|-------------M5D96yP5Ac688-ZPU0C << chatId 1
|
-----8J7PX3ezjMTuOiAPO1BbOGJGP1g1: true
-----QvmGG2vPfTrdjZBfWP2ZotajYE3: true
|
|
|-------------QRE36yP5Ac688-ZPU0C << chatId 2
|
-----8J7PX3ezjMTuOiAPO1BbOGJGP1g1: true
Whenever you want to check who didn't reply yet
when you enter the chat loop through the users in the chat and check if there ids exist in this super node, if not then send notification. After that just delete the chatID form the super node. And start over.
UPDATE:
I will explain one more time.
Ofcourse I assume that you have the list of UIDs in the chat from your datbase I see that. Now these are the steps to know which user replied and which didn't:
1) When user replies add his/her UID in the supernode under Replies/chatID.
2) Until now this means the existance of the UID of the user under Replies/chatID means that they replied.
3) When you want to check which user replied, you run a query over the users of the current chat, and loop through them. And check if their UIDs exist under Replies/chatID. If yes they replied, if no they didn't reply.
I need to identify the current connection type (etc 3G, 4G, 5G). I've used the ConnectivityManager but on some phones, the reported connection is 4G even if the download speed is so big that the phone is clearly on 5G.
Here I found a possible way to fix it. I need to check it on different devices.
I was wondering whether there is a way to use Firebase test-lab to do it. I used Firebase test-lab in the past but I was always mocking the network connection to run instrumentation tests so I don't know whether it is possible to actually use a cellular connection and whether it is possible to choose the SIM card used.
EDIT
Following the suggestion I'm using gloud beta. I run gcloud firebase test network-profiles list and I have got the following list:
┌────────────┐
│ PROFILE_ID │
├────────────┤
│ LTE │
└────────────┘
┌──────┬────────┬────────────┬───────────────────┬───────────┬───────┐
│ RULE │ DELAY │ LOSS_RATIO │ DUPLICATION_RATIO │ BANDWIDTH │ BURST │
├──────┼────────┼────────────┼───────────────────┼───────────┼───────┤
│ up │ 0.040s │ 0.001 │ │ 16000.0 │ │
│ down │ 0.040s │ 0.001 │ │ 16000.0 │ │
└──────┴────────┴────────────┴───────────────────┴───────────┴───────┘
┌────────────┐
│ LTE-poor │
└────────────┘
┌──────┬────────┬────────────┬───────────────────┬───────────┬───────┐
│ RULE │ DELAY │ LOSS_RATIO │ DUPLICATION_RATIO │ BANDWIDTH │ BURST │
├──────┼────────┼────────────┼───────────────────┼───────────┼───────┤
│ up │ 0.060s │ 0.0015 │ │ 4000.0 │ │
│ down │ 0.060s │ 0.0015 │ │ 4000.0 │ │
└──────┴────────┴────────────┴───────────────────┴───────────┴───────┘
┌────────────┐
│ HSPA │
└────────────┘
┌──────┬────────┬────────────┬───────────────────┬───────────┬───────┐
│ RULE │ DELAY │ LOSS_RATIO │ DUPLICATION_RATIO │ BANDWIDTH │ BURST │
├──────┼────────┼────────────┼───────────────────┼───────────┼───────┤
│ up │ 0.060s │ 0.001 │ │ 2000.0 │ │
│ down │ 0.060s │ 0.001 │ │ 4000.0 │ │
└──────┴────────┴────────────┴───────────────────┴───────────┴───────┘
┌────────────┐
│ HSPA-poor │
└────────────┘
┌──────┬────────┬────────────┬───────────────────┬───────────┬───────┐
│ RULE │ DELAY │ LOSS_RATIO │ DUPLICATION_RATIO │ BANDWIDTH │ BURST │
├──────┼────────┼────────────┼───────────────────┼───────────┼───────┤
│ up │ 0.100s │ 0.0015 │ │ 500.0 │ │
│ down │ 0.100s │ 0.0015 │ │ 1000.0 │ │
└──────┴────────┴────────────┴───────────────────┴───────────┴───────┘
...
5G is not in the list (yet). And the result is the same with gcloud beta firebase test network-profiles list
Devices in Firebase Test Lab are connected via WiFi by default. There's no guarantee that a device has a SIM at all, and you should not rely on that. Your best choice is to use a specific network profile, which can be configured as part of the test.
You can list all available network profiles and their settings with the command below:
$ gcloud firebase test network-profiles list
You can set the network profile by using gcloud beta, as the setting is not GA yet:
$ gcloud beta firebase test android run \
--network-profile=LTE \
<your other args>
I'm building a library module that might be used in an Android application. In a certain part of the code, I need to load a JavaScript file so the script engine runs it. My file structure looks something like this: https://i.snag.gy/R7hHPI.jpg
└───src
├───main
│ ├───java
│ │ └───calegari
│ │ └───murilo
│ │ └───qacadscrapper
│ │ │ QAcadScrapper.java
│ │ │
│ │ └───utils
│ │ Grade.java
│ │ Subject.java
│ │ User.java
│ │
│ └───resources
│ └───lib
│ Barrett.js
│ BigInt.js
│ RSA.js
│
└───test
├───java
│ └───calegari
│ └───murilo
│ └───qacadtest
│ QAcadTest.java
│
└───resources
When building the artifact, I configure it so IntelliJ puts the contents of the /resources folder on root folder of the Jar file:
https://i.snag.gy/fN4z6t.jpg
These are the contents of the .jar file: https://i.snag.gy/QPR9XK.jpg
├───calegari
│ └───murilo
│ └───qacadscrapper
│ └───utils
├───com
│ └───sun
│ └───script
│ ├───javascript
│ └───util
├───javax
│ └───script
├───lib ---> Here are the JavaScript files
├───META-INF
│ ├───maven
│ │ └───org.jsoup
│ │ └───jsoup
│ └───services
├───org
│ ├───jsoup
│ │ ├───helper
│ │ ├───internal
│ │ ├───nodes
│ │ ├───parser
│ │ ├───safety
│ │ └───select
│ └───mozilla
│ ├───classfile
│ └───javascript
│ ├───annotations
│ ├───ast
│ ├───commonjs
│ │ └───module
│ │ └───provider
│ ├───debug
│ ├───jdk13
│ ├───jdk15
│ ├───json
│ ├───optimizer
│ ├───regexp
│ ├───resources
│ ├───serialize
│ ├───tools
│ │ ├───debugger
│ │ │ └───treetable
│ │ ├───idswitch
│ │ ├───jsc
│ │ ├───resources
│ │ └───shell
│ ├───typedarrays
│ ├───v8dtoa
│ ├───xml
│ └───xmlimpl
└───sun
├───misc
├───reflect
└───security
├───action
└───util
But when I try to install the APK I receive a "INSTALL_FAILED_NO_MATCHING_ABIS" error. I'm pretty sure that what's causing it are these .js files under /lib, since the error disappears if I remove them from the .jar build.
Library is configured using Gradle.
How can I avoid this error? Hope someone can help!
Update
I made IntelliJ add the .js files alongside the Java files inside my jar package, it works when running from the .jar file, but if I try to run some tests in IntelliJ it doesn't work, since gradle isn't adding the files to the compiled code...
Solution
I was able to make it work by moving the files to inside the source path and adding this to the gradle.build file:
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDir 'src/main/java'
include '**/*.js'
}
}
test {
java {
srcDirs = ['src/test/java']
}
}
}
i had this problem using bitcoinJ library (org.bitcoinj:bitcoinj-core:0.14.7) added to build.gradle(in module app) a packaging options inside the android scope. it helped me.
android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
}
I have a bit of a problem with my libGDX project. In class(high school, don't think of too much), we have to make a hangman game. With some of my friends, we started to make it in Scala. Well, it works, kind of.
But the problem is that I cannot read the files from which the words are generated. It's a yaml file(words.yml), inside the android sub-project's assets. It is packed inside the .jar file, I checked it, however when I try to read it using Gdx.files.internal it stops with a NullPointerException. It's bugging me because I was able to read the image files. I thought it is impossible to read using Gdx.files.internal from not the main file from the core project. But that doesn't seem to be the case since it crashes as well if I put it in that file.
The field where it dies:
private val map: (Int, Array[String]) = {
val yaml: Yaml = new Yaml //using the snakeyaml library
//Debug
println("DBG")
println(Gdx.files.local("words.yml").path()) //<-------It crashes here
println("more DBG")
val tmp: util.LinkedHashMap[String, Any] = yaml.load(
scala.io.Source.fromFile(Gdx.files.internal("words.yml").file()) mkString)
//^^^^^or here if I remove the debug part^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(tmp.get("wordCount").asInstanceOf[Int],
tmp.get("words").toString.replaceAll("[\\[\\]]","").split(",")
.map((s: String) => {
if(s(0) == ' ') s.substring(1)
else s
}))
}
Error msg:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.infosoftcorp.wordpress.ish.Save.<init>(Save.scala:7)
at com.infosoftcorp.wordpress.ish.InfoSoftHangman.<init>(InfoSoftHangman.scala:35)
at com.infosoftcorp.wordpress.ish.desktop.DesktopLauncher.main(DesktopLauncher.java:17)
Caused by: java.lang.NullPointerException
at com.infosoftcorp.wordpress.ish.FileHandler$.<init>(FileHandler.scala:25)
at com.infosoftcorp.wordpress.ish.FileHandler$.<clinit>(FileHandler.scala)
... 3 more
File structure:
.
├── android
│ ├── android.iml
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── icon.png
│ │ ├── img
│ │ │ ├── 10.png
│ │ │ ├── 11.png
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ ├── 4.png
│ │ │ ├── 5.png
│ │ │ ├── 6.png
│ │ │ ├── 7.png
│ │ │ ├── 8.png
│ │ │ ├── 9.png
│ │ │ └── line.png
│ │ └── words.yml
│ ├── build.gradle
│ ├── ic_launcher-web.png
│ ├── libs
│ │ ├── armeabi
│ │ │ ├── libgdx-bullet.so
│ │ │ └── libgdx.so
│ │ ├── armeabi-v7a
│ │ │ ├── libgdx-bullet.so
│ │ │ └── libgdx.so
│ │ └── x86
│ │ ├── libgdx-bullet.so
│ │ └── libgdx.so
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher.png
│ │ ├── values
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-hu
│ │ └── strings.xml
│ └── src
│ └── com
│ └── infosoftcorp
│ └── wordpress
│ └── ish
│ └── android
│ └── AndroidLauncher.java
├── asd.html
├── bitbucket-pipelines.yml
├── build
│ ├── android-profile
│ │ ├── profile-2018-02-12-00-57-01-965.rawproto
│ │ ├── profile-2018-02-12-00-58-00-422.rawproto
│ │ ├── profile-2018-02-12-00-59-18-263.rawproto
│ │ ├── profile-2018-02-12-00-59-55-075.rawproto
│ │ ├── profile-2018-02-12-01-00-22-650.rawproto
│ │ └── profile-2018-02-12-01-03-02-363.rawproto
│ ├── generated
│ │ ├── mockable-android-26.jar
│ │ └── mockable-android-27.jar
│ └── intermediates
│ ├── lint-cache
│ │ ├── api-versions-6-27.0.1.bin
│ │ ├── typos-en.txt-2.bin
│ │ └── typos-hu.txt-2.bin
│ └── proguard-files
│ ├── proguard-android-optimize.txt-2.3.0
│ └── proguard-android.txt-2.3.0
├── build.gradle
├── core
│ ├── build
│ │ ├── classes
│ │ │ └── main
│ │ │ └── com
│ │ │ └── infosoftcorp
│ │ │ └── wordpress
│ │ │ └── ish
│ │ │ ├── FileHandler$$anonfun$1.class
│ │ │ ├── FileHandler.class
│ │ │ ├── FileHandler$.class
│ │ │ ├── InfoSoftHangman$$anonfun$create$1.class
│ │ │ ├── InfoSoftHangman$$anonfun$drawLines$1$1.class
│ │ │ ├── InfoSoftHangman.class
│ │ │ ├── InfoSoftHangman$InputHandler.class
│ │ │ ├── Parsing$$anonfun$parseString$1.class
│ │ │ ├── Parsing$$anonfun$removeEach$1.class
│ │ │ ├── Parsing.class
│ │ │ ├── Parsing$.class
│ │ │ ├── Parsing$DecLives.class
│ │ │ ├── Parsing$HMSignal.class
│ │ │ ├── Parsing$ParseError.class
│ │ │ ├── Parsing$ParsingResult.class
│ │ │ ├── Save.class
│ │ │ └── Save$.class
│ │ ├── libs
│ │ │ └── core-1.0.jar
│ │ └── tmp
│ │ ├── compileScala
│ │ └── jar
│ │ └── MANIFEST.MF
│ ├── build.gradle
│ ├── core.iml
│ └── src
│ └── com
│ └── infosoftcorp
│ └── wordpress
│ └── ish
│ ├── FileHandler.scala
│ ├── InfoSoftHangman.scala
│ ├── Parsing.scala
│ └── Save.scala
├── desktop
│ ├── build
│ │ ├── classes
│ │ │ └── main
│ │ │ └── com
│ │ │ └── infosoftcorp
│ │ │ └── wordpress
│ │ │ └── ish
│ │ │ └── desktop
│ │ │ └── DesktopLauncher.class
│ │ ├── dependency-cache
│ │ ├── libs
│ │ │ └── desktop-1.0.jar
│ │ └── tmp
│ │ └── <chaos>
│ ├── build.gradle
│ ├── desktop.iml
│ ├── out
│ │ └── production
│ │ └── classes
│ └── src
│ └── com
│ └── infosoftcorp
│ └── wordpress
│ └── ish
│ └── desktop
│ └── DesktopLauncher.java
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── is-hangman.iml
├── is-hangman.ipr
├── is-hangman.iws
├── local.properties
├── README.md
└── settings.gradle
I added the working directory for the desktop sub-project
So I was really stupid that is what happened.
When the new Save is initialized it wasn't called inside the create() function, but before it
Well, sometimes I do stupid stuff.
Sorry for asking stupid questions you could never answer as I didn't post the code.
Titanium Console.
[INFO] : Making sure the adb server is running
[INFO] : Removing deploy.json from SD card
[INFO] : Installing apk: C:\androidAulaEscolar_Laboratorio\build\android\bin\Aula Escolar.apk
[INFO] : Installing app on device: GT-S5830M
log
!SESSION 2015-02-17 10:21:41.279 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_55
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=es_MX
Command-line arguments: -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.ui 2 0 2015-02-17 10:21:45.364
!MESSAGE Warnings while parsing the images from the 'org.eclipse.ui.commandImages' extension point.
!SUBENTRY 1 org.eclipse.ui 2 0 2015-02-17 10:21:45.364
!MESSAGE Cannot bind to an undefined command: plug-in='com.appcelerator.titanium.android.ui', id='com.appcelerator.titanium.mobile.command.run_on_device.android'
!SUBENTRY 1 org.eclipse.ui 2 0 2015-02-17 10:21:45.364
!MESSAGE Cannot bind to an undefined command: plug-in='com.appcelerator.titanium.android.ui', id='com.appcelerator.titanium.mobile.command.debug_on_device.android'
!ENTRY com.aptana.syncing.core 2 0 2015-02-17 10:21:50.553
!MESSAGE (Build 3.2.1.201402041146) [WARNING] com.aptana.syncing.core/debug Failed to load source connection point from URI file:/C:/Users/juanvilu
!ENTRY com.appcelerator.titanium.ui.ide 4 0 2015-02-17 10:22:03.164
!MESSAGE (Build 3.2.1.201402041146) [ERROR] com.appcelerator.titanium.core/debug/dashboard Unknown SDK iphone
!ENTRY com.appcelerator.titanium.core 2 0 2015-02-17 10:23:32.446
!MESSAGE (Build 3.2.1.201402041146) [WARNING] Failed parsing a command handler priority. Using the default priority.
Diagnostic log
Host OS: Windows 8
OS Version: 6.2
OS Arch: x86
JRE Version: 1.7.0_55
JRE Vendor: Oracle Corporation
JRE Home: C:\Program Files (x86)\Java\jre7
Titanium Studio Version: 3.2.1.201402041146
Install Directory: file:/C:/Users/juanvilu/AppData/Local/Titanium Studio/
Workspace Directory: file:/C:/WorkSpace/
VM Arguments: -Xms128m
-Xmx1024m
-XX:MaxPermSize=256m
-Xverify:none
-Declipse.p2.unsignedPolicy=allow
-Declipse.log.size.max=10000
-Declipse.log.backup.max=5
-Djava.awt.headless=true
-Djava.class.path=C:\Users\juanvilu\AppData\Local\Titanium Studio\\plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
Language: es_MX
ACS App URL: https://api.cloud.appcelerator.com/v1/apps/create.json?key=7fI2AZHmrSvAHNKsSQKzrSXz5NWjo2tt
ACS Login URL: https://api.cloud.appcelerator.com/v1/admins/studio_login.json?key=7fI2AZHmrSvAHNKsSQKzrSXz5NWjo2tt
Latest Titanium SDK: 3.2.2.GA
Titanium SDK Version: 3.1.2.GA
SDK Modules API Version:2
SDK Timestamp: 08/14/13 12:45
SDK Build Number: 5ceaff8
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.1.2.GA
Titanium SDK Version: 3.1.3.GA
SDK Modules API Version:2
SDK Timestamp: 09/18/13 12:00
SDK Build Number: 222f4d1
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.1.3.GA
Titanium SDK Version: 3.2.0.GA
SDK Modules API Version:2
SDK Timestamp: 12/20/13 10:56
SDK Build Number: d9182d6
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.2.0.GA
Titanium SDK Version: 3.2.1.GA
SDK Modules API Version:2
SDK Timestamp: 02/06/14 17:01
SDK Build Number: 991027b
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.2.1.GA
Titanium SDK Version: 3.2.2.GA
SDK Modules API Version:2
SDK Timestamp: 03/05/14 12:21
SDK Build Number: 96e9a07
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.2.2.GA
Browsers
- Default system web browser: Unknown (N/A)
- Internet Explorer: 9.10.9200.17228 (C:\Program Files (x86)\Internet Explorer\iexplore.exe)
- Internet Explorer: 9.10.9200.17228 (C:\Program Files\Internet Explorer\iexplore.exe)
- Mozilla Firefox: 35.0.1 (C:\Program Files (x86)\Mozilla Firefox\firefox.exe)
- Google Chrome: 40.0.2214.91 (C:\Program Files (x86)\Google\Chrome\Application\chrome.exe)
- Opera Stable: 27.0.1689.69 (C:\Program Files (x86)\Opera\Launcher.exe)
- Safari: 5.34.57.2 (C:\Program Files (x86)\Safari\Safari.exe)
Android SDK Version: 4.4.2
Android NDK Version: r9d (64-bit)
Titanium CLI Enabled: true
Node.ACS Host URL: null
Node.JS Version: v0.10.13
NPM Path: C:\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js
NPM Version: 1.3.2
C:\Users\juanvilu\AppData\Roaming\npm
├── acs#1.0.14
├── alloy#1.3.1
├── jade#1.1.5
├── stylus#0.42.2
└── titanium#3.2.1
npm -g ls titanium: C:\Users\juanvilu\AppData\Roaming\npm
└── titanium#3.2.1
Packages: C:\Users\juanvilu\AppData\Roaming\npm
├─┬ acs#1.0.14
│ ├── acs-node#0.9.2
│ ├── colors#0.6.0-1
│ ├── commander#0.6.1
│ ├─┬ connect#2.3.5
│ │ ├── bytes#0.0.1
│ │ ├── cookie#0.0.4
│ │ ├── crc#0.2.0
│ │ ├── debug#0.7.4
│ │ ├── formidable#1.0.11
│ │ ├── fresh#0.0.1
│ │ ├── mime#1.2.4
│ │ ├── qs#0.4.2
│ │ └── range-parser#0.0.4
│ ├── ejs#0.8.0
│ ├── esprima#0.9.9
│ ├─┬ express#3.0.0
│ │ ├─┬ connect#2.6.0
│ │ │ ├── bytes#0.1.0
│ │ │ ├── formidable#1.0.11
│ │ │ ├── pause#0.0.1
│ │ │ ├── qs#0.5.1
│ │ │ └─┬ send#0.0.4
│ │ │ └── mime#1.2.6
│ │ ├── cookie#0.0.4
│ │ ├── crc#0.2.0
│ │ ├── debug#0.7.4
│ │ ├── fresh#0.1.0
│ │ ├── methods#0.0.1
│ │ ├── range-parser#0.0.4
│ │ └─┬ send#0.1.0
│ │ └── mime#1.2.6
│ ├─┬ fstream#0.1.18
│ │ ├── graceful-fs#1.1.14
│ │ ├── inherits#1.0.0
│ │ └── rimraf#2.2.6
│ ├─┬ jade#0.28.1
│ │ └── coffee-script#1.4.0
│ ├─┬ log4js#0.5.1
│ │ └── async#0.1.15
│ ├── mkdirp#0.3.3
│ ├── node-uuid#1.3.3
│ ├─┬ npm#1.4.4
│ │ ├── abbrev#1.0.4
│ │ ├── ansi#0.2.1
│ │ ├── ansicolors#0.3.2
│ │ ├── ansistyles#0.1.3
│ │ ├── archy#0.0.2
│ │ ├── block-stream#0.0.7
│ │ ├── child-process-close#0.1.1
│ │ ├── chmodr#0.1.0
│ │ ├── chownr#0.0.1
│ │ ├── cmd-shim#1.1.1
│ │ ├── columnify#0.1.2
│ │ ├── editor#0.0.5
│ │ ├── fstream#0.1.25
│ │ ├─┬ fstream-npm#0.1.6
│ │ │ └── fstream-ignore#0.0.7
│ │ ├── github-url-from-git#1.1.1
│ │ ├── github-url-from-username-repo#0.0.2
│ │ ├── glob#3.2.7
│ │ ├── graceful-fs#2.0.2
│ │ ├── inherits#2.0.1
│ │ ├── ini#1.1.0
│ │ ├─┬ init-package-json#0.0.14
│ │ │ └── promzard#0.2.1
│ │ ├── lockfile#0.4.2
│ │ ├── lru-cache#2.5.0
│ │ ├─┬ minimatch#0.2.14
│ │ │ └── sigmund#1.0.0
│ │ ├── mkdirp#0.3.5
│ │ ├── node-gyp#0.12.2
│ │ ├── nopt#2.2.0
│ │ ├── npm-install-checks#1.0.0
│ │ ├── npm-registry-client#0.4.4
│ │ ├── npm-user-validate#0.0.3
│ │ ├─┬ npmconf#0.1.12
│ │ │ └─┬ config-chain#1.1.8
│ │ │ └── proto-list#1.2.2
│ │ ├── npmlog#0.0.6
│ │ ├── once#1.3.0
│ │ ├── opener#1.3.0
│ │ ├── osenv#0.0.3
│ │ ├── path-is-inside#1.0.0
│ │ ├─┬ read#1.0.5
│ │ │ └── mute-stream#0.0.4
│ │ ├── read-installed#1.0.0
│ │ ├─┬ read-package-json#1.1.7
│ │ │ └── normalize-package-data#0.2.9
│ │ ├─┬ request#2.30.0
│ │ │ ├── aws-sign2#0.5.0
│ │ │ ├── forever-agent#0.5.0
│ │ │ ├─┬ form-data#0.1.2
│ │ │ │ ├── async#0.2.9
│ │ │ │ └─┬ combined-stream#0.0.4
│ │ │ │ └── delayed-stream#0.0.5
│ │ │ ├─┬ hawk#1.0.0
│ │ │ │ ├── boom#0.4.2
│ │ │ │ ├── cryptiles#0.2.2
│ │ │ │ ├── hoek#0.9.1
│ │ │ │ └── sntp#0.2.4
│ │ │ ├─┬ http-signature#0.10.0
│ │ │ │ ├── asn1#0.1.11
│ │ │ │ ├── assert-plus#0.1.2
│ │ │ │ └── ctype#0.5.2
│ │ │ ├── json-stringify-safe#5.0.0
│ │ │ ├── mime#1.2.11
│ │ │ ├── node-uuid#1.4.1
│ │ │ ├── oauth-sign#0.3.0
│ │ │ ├── qs#0.6.6
│ │ │ ├─┬ tough-cookie#0.9.15
│ │ │ │ └── punycode#1.2.3
│ │ │ └── tunnel-agent#0.3.0
│ │ ├── retry#0.6.0
│ │ ├── rimraf#2.2.6
│ │ ├── semver#2.2.1
│ │ ├─┬ sha#1.2.3
│ │ │ └── readable-stream#1.0.24
│ │ ├── slide#1.1.5
│ │ ├── tar#0.1.19
│ │ ├── text-table#0.2.0
│ │ ├── uid-number#0.0.5
│ │ └── which#1.0.5
│ ├── pkginfo#0.2.2
│ ├─┬ request#2.14.0
│ │ ├─┬ form-data#0.0.7
│ │ │ ├── async#0.1.22
│ │ │ └─┬ combined-stream#0.0.4
│ │ │ └── delayed-stream#0.0.5
│ │ └── mime#1.2.9
│ ├─┬ socket.io#0.9.16
│ │ ├── base64id#0.1.0
│ │ ├── policyfile#0.0.4
│ │ ├── redis#0.7.3
│ │ └─┬ socket.io-client#0.9.16
│ │ ├─┬ active-x-obfuscator#0.0.1
│ │ │ └── zeparser#0.0.5
│ │ ├── uglify-js#1.2.5
│ │ ├─┬ ws#0.4.31
│ │ │ ├── nan#0.3.2
│ │ │ ├── options#0.0.5
│ │ │ └── tinycolor#0.0.1
│ │ └── xmlhttprequest#1.4.2
│ ├── string#1.1.0
│ ├─┬ tar#0.1.13
│ │ ├─┬ block-stream#0.0.7
│ │ │ └── inherits#2.0.1
│ │ └── inherits#1.0.0
│ ├── temp#0.4.0
│ ├── uglify-js#1.3.2
│ ├── underscore#1.3.3
│ └── wrench#1.3.9
├─┬ alloy#1.3.1
│ ├── colors#0.6.0-1
│ ├── commander#0.6.1
│ ├─┬ jsonlint#1.5.1
│ │ ├── JSV#4.0.2
│ │ └─┬ nomnom#1.6.2
│ │ ├── colors#0.5.1
│ │ └── underscore#1.4.4
│ ├── pkginfo#0.2.2
│ ├─┬ source-map#0.1.9
│ │ └── amdefine#0.1.0
│ ├─┬ uglify-js#2.2.5
│ │ └─┬ optimist#0.3.7
│ │ └── wordwrap#0.0.2
│ ├── wrench#1.3.9
│ ├─┬ xml2tss#0.0.5
│ │ └─┬ xml2js#0.2.8
│ │ └── sax#0.5.8
│ └── xmldom#0.1.13
├─┬ jade#1.1.5
│ ├── character-parser#1.2.0
│ ├── commander#2.1.0
│ ├─┬ constantinople#1.0.2
│ │ └─┬ uglify-js#2.4.12
│ │ ├── async#0.2.10
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ ├─┬ source-map#0.1.32
│ │ │ └── amdefine#0.1.0
│ │ └── uglify-to-browserify#1.0.2
│ ├── mkdirp#0.3.5
│ ├─┬ monocle#1.1.51
│ │ └─┬ readdirp#0.2.5
│ │ └─┬ minimatch#0.2.14
│ │ ├── lru-cache#2.5.0
│ │ └── sigmund#1.0.0
│ ├─┬ transformers#2.1.0
│ │ ├─┬ css#1.0.8
│ │ │ ├── css-parse#1.0.4
│ │ │ └── css-stringify#1.0.5
│ │ ├─┬ promise#2.0.0
│ │ │ └── is-promise#1.0.0
│ │ └─┬ uglify-js#2.2.5
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ └─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └─┬ with#2.0.0
│ └─┬ uglify-js#2.4.0
│ ├── async#0.2.10
│ ├─┬ optimist#0.3.7
│ │ └── wordwrap#0.0.2
│ ├─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └── uglify-to-browserify#1.0.2
├─┬ stylus#0.42.2
│ ├── css-parse#1.7.0
│ ├── debug#0.7.4
│ ├─┬ glob#3.2.8
│ │ ├── inherits#2.0.1
│ │ └─┬ minimatch#0.2.14
│ │ ├── lru-cache#2.5.0
│ │ └── sigmund#1.0.0
│ ├── mkdirp#0.3.5
│ └── sax#0.5.8
└─┬ titanium#3.2.1
├── async#0.2.10
├── colors#0.6.2
├─┬ fields#0.1.12
│ └── keypress#0.1.0
├── humanize#0.0.9
├─┬ jade#0.35.0
│ ├── character-parser#1.2.0
│ ├── commander#2.0.0
│ ├─┬ constantinople#1.0.2
│ │ └─┬ uglify-js#2.4.12
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ ├─┬ source-map#0.1.32
│ │ │ └── amdefine#0.1.0
│ │ └── uglify-to-browserify#1.0.2
│ ├── mkdirp#0.3.5
│ ├─┬ monocle#1.1.50
│ │ └─┬ readdirp#0.2.5
│ │ └─┬ minimatch#0.2.14
│ │ ├── lru-cache#2.5.0
│ │ └── sigmund#1.0.0
│ ├─┬ transformers#2.1.0
│ │ ├─┬ css#1.0.8
│ │ │ ├── css-parse#1.0.4
│ │ │ └── css-stringify#1.0.5
│ │ ├─┬ promise#2.0.0
│ │ │ └── is-promise#1.0.0
│ │ └─┬ uglify-js#2.2.5
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ └─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └─┬ with#1.1.1
│ └─┬ uglify-js#2.4.0
│ ├─┬ optimist#0.3.7
│ │ └── wordwrap#0.0.2
│ ├─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └── uglify-to-browserify#1.0.2
├── longjohn#0.2.2
├── moment#2.4.0
├─┬ node-appc#0.2.0
│ ├── adm-zip#0.4.4
│ ├── diff#1.0.8
│ ├─┬ dox#0.4.4
│ │ ├── commander#0.6.1
│ │ └── github-flavored-markdown#1.0.1
│ ├── node-uuid#1.4.1
│ ├── semver#2.1.0
│ ├─┬ uglify-js#2.3.6
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ └─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └── xmldom#0.1.19
├─┬ optimist#0.6.1
│ ├── minimist#0.0.7
│ └── wordwrap#0.0.2
├─┬ request#2.27.0
│ ├── aws-sign#0.3.0
│ ├── cookie-jar#0.3.0
│ ├── forever-agent#0.5.2
│ ├─┬ form-data#0.1.2
│ │ └─┬ combined-stream#0.0.4
│ │ └── delayed-stream#0.0.5
│ ├─┬ hawk#1.0.0
│ │ ├── boom#0.4.2
│ │ ├── cryptiles#0.2.2
│ │ ├── hoek#0.9.1
│ │ └── sntp#0.2.4
│ ├─┬ http-signature#0.10.0
│ │ ├── asn1#0.1.11
│ │ ├── assert-plus#0.1.2
│ │ └── ctype#0.5.2
│ ├── json-stringify-safe#5.0.0
│ ├── mime#1.2.11
│ ├── node-uuid#1.4.1
│ ├── oauth-sign#0.3.0
│ ├── qs#0.6.6
│ └── tunnel-agent#0.3.0
├── semver#2.2.1
├── sprintf#0.1.3
├─┬ temp#0.6.0
│ ├── osenv#0.0.3
│ └─┬ rimraf#2.1.4
│ └── graceful-fs#1.2.3
├─┬ winston#0.6.2
│ ├── async#0.1.22
│ ├── cycle#1.0.3
│ ├── eyes#0.1.8
│ ├── pkginfo#0.2.3
│ ├── request#2.9.203
│ └── stack-trace#0.0.8
└── wrench#1.5.7
NPM_CONFIG_PREFIX env value: null
Npm config prefix value : C:\Users\juanvilu\AppData\Roaming\npm
ENV:
ProgramData=C:\ProgramData
USERPROFILE=C:\Users\juanvilu
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
JAVA_HOME=%PROGRAMFILES%\Java\jdk1.7.0_40\bin
ProgramFiles(x86)=C:\Program Files (x86)
VBOX_MSI_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\
Path_v2=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Java\jdk1.8.0_31\bin;C:\Program Files (x86)\nodejs\;C:\Program Files (x86)\nodejs\;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\WinSCP;C:\Program Files (x86)\Windows Live\Shared
SystemDrive=C:
TEMP=C:\Users\juanvilu\AppData\Local\Temp
ProgramFiles=C:\Program Files (x86)
Path=C:/Program Files (x86)/Java/jre7/bin/client;C:/Program Files (x86)/Java/jre7/bin;C:/Program Files (x86)/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Java\jdk1.7.0_40\bin;C:\Program Files (x86)\nodejs\;C:\Program Files (x86)\nodejs\;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\WinSCP;C:\Program Files (x86)\Windows Live\Shared;C:\Users\juanvilu\AppData\Roaming\npm;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\Git\bin;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\Git\bin;C:\Program Files\nodejs;C:\Program Files\Java\jdk1.7.0_40\bin;C:\Python27;C:\Users\juanvilu\AppData\Local\Titanium Studio;
HOMEDRIVE=C:
PROCESSOR_REVISION=3a09
USERDOMAIN=dev-juanvilu-w8
ALLUSERSPROFILE=C:\ProgramData
android_sdk=c:\android-sdk
ProgramW6432=C:\Program Files
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
SESSIONNAME=Console
TMP=C:\Users\juanvilu\AppData\Local\Temp
PROCESSOR_ARCHITECTURE=x86
LOGONSERVER=\\DEV-JUANVILU-W8
CommonProgramFiles=C:\Program Files (x86)\Common Files
PROCESSOR_ARCHITEW6432=AMD64
OS=Windows_NT
FP_NO_HOST_CHECK=NO
HOMEPATH=\Users\juanvilu
PROCESSOR_LEVEL=6
CommonProgramW6432=C:\Program Files\Common Files
USERDOMAIN_ROAMINGPROFILE=dev-juanvilu-w8
LOCALAPPDATA=C:\Users\juanvilu\AppData\Local
COMPUTERNAME=DEV-JUANVILU-W8
SystemRoot=C:\Windows
windir=C:\Windows
NUMBER_OF_PROCESSORS=4
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
USERNAME=juanvilu
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
ComSpec=C:\Windows\system32\cmd.exe
APPDATA=C:\Users\juanvilu\AppData\Roaming
Confirm that you have the compatible build-tool folder, like r20. It must be compatible with the SDK tool which you are using to build. For example 3.5.0.GA can be build using r21.