Jesse, I did not create an JIRA issue yet because I do not have a small sample project to reproduce this. I am using the command line to create this cordova app. The project has a config.xml and it starts correctly (which is prove that it has the config.xml. otherwise I would see the spinner eternally). The version is 3.3-rc1 (Installed 30 minutes ago).
I have an ant script that does the work. I would not 100%-ly rule it out that this build.xml is missing some steps. It creates the projects folders (www, merges, etc) and then calls e.g. cordova platform add android and cordova build. "cordova create hello com.example.hello HelloWorld" is NOT called. I attached my build.xml and the AndroidManifest.xml -Axel config.xml is there where it belongs. ignisvulpis@ubuntu:/host/20131210/phonegap$ ls -l platforms/android/res/xml/ insgesamt 4 -rwxrwxrwx 1 root root 2528 Dez 11 20:22 config.xml ignisvulpis@ubuntu:/host/20131210/phonegap$ 2013/12/11 Jesse <purplecabb...@gmail.com> > Is this a JIRA issue and reproducable steps yet? > Does the project that is failing actually have a config.xml file? > How are you creating the project? Platform script, cordova-cli? What > version of the cli? ... > > 3.3.0 is already tagged and ready to go, so this needs reproducible steps > to get attention. > > > @purplecabbage > risingj.com > > > On Wed, Dec 11, 2013 at 11:28 AM, Axel Nennker <ignisvul...@gmail.com > >wrote: > > > Sorry no. It does not work on 3.3-rc1 > > Axel > > > > ignisvulpis@ubuntu:/host/20131210/phonegap$ cordova -v > > 3.3.0-rc.1 > > ignisvulpis@ubuntu:/host/20131210/phonegap$ > > > > same error: > > D/CordovaActivity( 4871): CordovaActivity.init() > > D/CordovaWebView( 4871): >>> > > > > > loadUrl(file:///android_asset/www/index.html?file=/storage/sdcard0/Download/WalletImport-InfoCard-MyCard2-1.json) > > D/PluginManager( 4871): init() > > E/PluginManager( 4871): > > > > > ===================================================================================== > > E/PluginManager( 4871): ERROR: config.xml is missing. Add > > res/xml/config.xml to your project. > > E/PluginManager( 4871): > > > > > https://git-wip-us.apache.org/repos/asf?p=cordova-android.git;a=blob;f=framework/res/xml/config.xml > > E/PluginManager( 4871): > > > > > ===================================================================================== > > D/CordovaWebView( 4871): >>> loadUrlNow() > > D/ItemImport( 4871): onResume() loadURL started: > > D/CordovaActivity( 4871): > > > > > onMessage(onPageStarted,file:///android_asset/www/index.html?file=/storage/sdcard0/Download/WalletImport-InfoCard-MyCard2-1.json) > > > > > > > > > > 2013/12/11 Andrew Grieve <agri...@chromium.org> > > > > > If it worked in 3.1 and broke in 3.2, then it's very likely > > > CB-5481<https://issues.apache.org/jira/browse/CB-5481> and > > > is fixed in 3.3 > > > > > > > > > On Wed, Dec 11, 2013 at 11:29 AM, Joe Bowser <bows...@gmail.com> > wrote: > > > > > > > No. As far as I'm concerned this problem doesn't exist until it is a > > JIRA > > > > issue with some sample code that I can use to reproduce the error. I > > > doubt > > > > that this was a regression since we never explicitly supported your > use > > > > case to begin with. > > > > > > > > Of course, patches are always welcome. > > > > On 11 Dec 2013 07:58, "Axel Nennker" <ignisvul...@gmail.com> wrote: > > > > > > > > > No. I intented this to be on the list. Gmail UI irks. > > > > > Could this be fixed in 3.3? > > > > > I know it is late but... > > > > > > > > > > -Axel > > > > > > > > > > > > > > > 2013/12/11 Joe Bowser <bows...@gmail.com> > > > > > > > > > > > Did you mean to to send this to me personally? > > > > > > > > > > > > On Wed, Dec 11, 2013 at 7:24 AM, Axel Nennker < > > ignisvul...@gmail.com > > > > > > > > > > wrote: > > > > > > > Well, this repeatable. Use 3.2 fail, go back to 3.1 win. > > > > > > > The config.xml is where it belongs but PluginManager does not > > find > > > it > > > > > in > > > > > > a > > > > > > > certain (legal) setting. > > > > > > > When the app is started "normally" PluginManager finds > config.xml > > > > > (which > > > > > > > proves that is at the correct location) > > > > > > > When the app is started because an IntentFilter triggers then > > > > > > > PluginInManager does not find it. > > > > > > > > > > > > > > The "main" activity is in one class like a.b.c.Main while the > > > > > > IntentFilter > > > > > > > activity is in another e.g. u.v.w.IF > > > > > > > IF starts Main successfully but - my guess is - that > > PluginManager > > > > > tries > > > > > > to > > > > > > > find config.xml in package u.v.w > > > > > > > > > > > > > > The JUNIT/spec test should be updated to catch this situation > if > > > > > > possible. > > > > > > > I guess I could change the package names so that IF is in a.b.c > > too > > > > but > > > > > > it > > > > > > > worked in 3.1 and I see no reason why this is "complex" > > > > > > > The u.v.w.IF features are implemented in a plugin that > registers > > > the > > > > > > intent > > > > > > > filter in the app's AndroidManifest. It is developed by my > > > colleagues > > > > > who > > > > > > > chose the u.v.w package name. I am using this plugin in my app > > that > > > > has > > > > > > the > > > > > > > a.b.c package namespace. > > > > > > > I do not agree that this a complex or irregular use of cordova > or > > > > > > Intents. > > > > > > > > > > > > > > Please revert the code back to the 3.1 behaviour. > > > > > > > > > > > > > > Axel > > > > > > > > > > > > > > > > > > > > > 2013/12/11 Joe Bowser <bows...@gmail.com> > > > > > > >> > > > > > > >> I haven't noticed this during any of our testing, nor have I > > > noticed > > > > > > >> this when hacking with Google Glass, which uses the Google > Glass > > > > voice > > > > > > >> trigger intent to launch Cordova, not the LAUNCHER intent like > > the > > > > > > >> launch menu. Furthermore, our JUnit tests haven't caught the > > > tests > > > > > > >> either, and they depend on at least three plugins to be loaded > > by > > > > > > >> PluginManager from config.xml. Honestly, this only breaks if > > you > > > > > > >> don't know what you're doing with Intents. > > > > > > >> > > > > > > >> Honestly, It sounds to me like your config.xml isn't in the > > > correct > > > > > > >> place in your project, especially if you're trying to do > > something > > > > > > >> complex with Android and intents. I would check that making > > these > > > > > > >> sorts of statements. If config.xml wasn't being read, it > would > > > have > > > > > > >> been caught right away, since everything is a plugin now. > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> On Wed, Dec 11, 2013 at 4:33 AM, <axel.nenn...@telekom.de> > > > wrote: > > > > > > >> > Hi, > > > > > > >> > > > > > > > >> > We are seeing some strange effect on Android when we move > from > > > > > > >> > 3.1.0-0.2.0 to a newer version. > > > > > > >> > We tried with 3.2.0-0.4.0 and 3.3-rc1 > > > > > > >> > > > > > > > >> > I think that PluginManager changed and now fails to load > > > > config.xml > > > > > > >> > > > > > > > >> > This happens in my project when the app is opened by the > > > operating > > > > > > >> > system because it is configured so through an intent filter. > > > > > > >> > The original activity is not a child of DroidGap but starts > > the > > > > > "main" > > > > > > >> > activity using startActivity. > > > > > > >> > > > > > > > >> > The code to get the id of the config.xml file is not working > > in > > > > this > > > > > > >> > case. > > > > > > >> > > > > > > > >> > Why was the 3.1.0 code changed? > > > > > > >> > > > > > > > >> > Cheers > > > > > > >> > Axel > > > > > > >> > > > > > > > >> > D/CordovaActivity(12320): CordovaActivity.init() > > > > > > >> > D/CordovaWebView(12320): >>> > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > loadUrl(file:///android_asset/www/index.html?file=/storage/sdcard0/Download/WalletImport-InfoCard-PremiumBank2-2.json) > > > > > > >> > D/PluginManager(12320): init() > > > > > > >> > E/PluginManager(12320): > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > ===================================================================================== > > > > > > >> > E/PluginManager(12320): ERROR: config.xml is missing. Add > > > > > > >> > res/xml/config.xml to your project. > > > > > > >> > E/PluginManager(12320): > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-android.git;a=blob;f=framework/res/xml/plugins.xml > > > > > > >> > E/PluginManager(12320): > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > ===================================================================================== > > > > > > >> > D/CordovaWebView(12320): >>> loadUrlNow() > > > > > > >> > D/ItemImport(12320): onResume() loadURL started: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
<?xml version='1.0' encoding='utf-8'?> <manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" android:windowSoftInputMode="adjustPan" package="de.telekom.tlabs.wallet.cordova" xmlns:android="http://schemas.android.com/apk/res/android"> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="WalletExperience" android:theme="@android:style/Theme.Black.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:finishOnTaskLaunch="true" android:launchMode="singleInstance" android:name="de.dtag.tlabs.wallet.handler.UiccTransactionEventHandlerActivity" android:noHistory="true" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="android.nfc.action.TRANSACTION_DETECTED" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="secure" android:path="/a00000000102" android:port="0" android:scheme="nfc" /> </intent-filter> </activity> <activity android:label="@string/app_name" android:name="de.telekom.tlabs.wallet.fileimport.ItemImport"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" /> <data android:scheme="file" /> <data android:mimeType="*/*" /> <data android:pathPattern=".*\\.json" /> <data android:host="*" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" /> <uses-permission android:name="android.permission.VIBRATE" /> </manifest>
<project name="BasicWallet" basedir="." default="build-app"> <property environment="env"/> <property name="target" value ="${env.target}"/> <property name="android-home" value ="${env.ANDROID_HOME}"/> <property name="www.dir" value="${basedir}/www"/> <property name="plugins.dir" value="${basedir}/plugins"/> <property name="merges.dir" value="${basedir}/merges"/> <property name="platforms.dir" value="${basedir}/platforms"/> <property name="src.dir" value="src"/> <property name="src-www.dir" value="${src.dir}/www"/> <property name="src.plugins.dir" value="${src.dir}/plugins"/> <property name="build.dir" value="www.dir"/> <condition property="android.set"> <equals arg1="${target}" arg2="android"/> </condition> <condition property="ios.set"> <equals arg1="${target}" arg2="ios"/> </condition> <condition property="path" value="${env.Path}" else="${env.PATH}"> <os family="windows"/> </condition> <condition property="cordova.command" value="cmd" else="cordova"> <os family="windows"/> </condition> <condition property="cordova.arg" value="/c cordova" else=""> <os family="windows"/> </condition> <condition property="debug.set"> <contains string="${env.ANT_CMD_LINE_ARGS}" substring="-d"/> </condition> <condition property="cordova-debug.arg" value="-d" else=""> <isset property="debug.set"/> </condition> <available file="${basedir}/platforms/${target}" property="platform.exists"/> <available file="${basedir}/plugins" property="plugins.exists"/> <target name="check-javac" if="android.set"> <exec executable="${env.JAVA_HOME}/bin/javac" dir="${basedir}" failonerror="true"> <arg line="-version"/> </exec> </target> <target name="check-env" depends="check-javac"> <fail> <condition> <not> <isset property="target"/> </not> </condition> <!-- JAVA_HOME required by ...\cordova\3.1.0\bin\create --> Must specify target parameter. Either set 'target' environment variable or execute ant -Dtarget=[android|ios] </fail> <fail> <condition> <not> <or> <isset property="android.set"/> <isset property="ios.set"/> </or> </not> </condition> Invalid target '${target}'. Target needs to be set to [android|ios] </fail> <fail> <condition> <and> <isset property="android.set"/> <not> <isset property="env.JAVA_HOME"/> </not> </and> </condition> <!-- JAVA_HOME required by ...\cordova\3.1.0\bin\create --> Must set JAVA_HOME environment variable pointing to JDK. </fail> <fail> <condition> <and> <isset property="android.set"/> <not> <isset property="env.ANDROID_HOME"/> </not> </and> </condition> Must set ANDROID_HOME environment variable pointing to Android SDK. </fail> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} -v"/> </exec> <echo>Building BasicWallet for: ${target} ${cordova-debug.arg}</echo> </target> <target name="clean"> <delete dir="${www.dir}"/> </target> <target name="dist-clean" depends="clean"> <delete dir="${platforms.dir}"/> <delete dir="${merges.dir}"/> <delete dir="${plugins.dir}"/> </target> <!-- Copy files to www and do a cordova build ant build-app -Dtarget=android --> <target name="build-app" depends="check-env,add-platform,install-plugins,copy-app-src"> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} build ${target} ${cordova-debug.arg}"/> <env key="PATH" path="${path}:${env.ANDROID_HOME}/tools:${env.ANDROID_HOME}/platform-tools"/> </exec> </target> <target name="build-test" depends="check-env,add-platform,install-plugins,copy-test-src"> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} build ${target} ${cordova-debug.arg}"/> <env key="PATH" path="${path}:${env.ANDROID_HOME}/tools:${env.ANDROID_HOME}/platform-tools"/> </exec> </target> <!-- Copy files to www and do a cordova build and install. ant run-app -Dtarget=android --> <target name="run-app" depends="check-env,copy-app-src"> <echo>Build and run BasicWallet for: ${target}</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} run ${target} ${cordova-debug.arg}"/> <env key="PATH" path="${path}:${env.ANDROID_HOME}/tools:${env.ANDROID_HOME}/platform-tools"/> </exec> </target> <target name="run-test" depends="check-env,add-platform,install-plugins,copy-test-src"> <echo>Build and run BasicWallet for: ${target}</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} run ${target} ${cordova-debug.arg}"/> <env key="PATH" path="${path}:${env.ANDROID_HOME}/tools:${env.ANDROID_HOME}/platform-tools"/> </exec> </target> <!-- Add a platform to this project. You have to call with a plaform parameter: ant add-platform -Dtarget=android --> <target name="add-platform" depends="check-env" unless="platform.exists"> <echo>Adding platform: ${target}</echo> <echo>Create "platforms" directory</echo> <mkdir dir="${platforms.dir}"/> <echo>Create "plugins" directory</echo> <mkdir dir="${plugins.dir}"/> <echo>Copy config.xml</echo> <copy todir="${www.dir}"> <fileset file="${src-www.dir}/config.xml"/> </copy> <echo>Add Platform ${target}</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} platform add ${target} ${cordova-debug.arg}"/> <env key="PATH" path="${path}:${env.ANDROID_HOME}/tools:${env.ANDROID_HOME}/platform-tools"/> </exec> </target> <!-- ## Install plugins All needed plugins should be integrated in the "install-plugins" task. To install all necessary plugins do this: ant install-plugins You can run this command anytime, i.e. if something in the plugins source directory changed. --> <macrodef name="add-plugins"> <sequential> <echo>cordova plugin add cordova-plugin-globalization</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/cordova-plugin-globalization ${cordova-debug.arg}"/> </exec> <echo>cordova plugin add src/plugins/cordova-plugin-file</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/cordova-plugin-file ${cordova-debug.arg}"/> </exec> <echo>cordova plugin add src/plugins/cordova-plugin-file-transfer</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/cordova-plugin-file-transfer ${cordova-debug.arg}"/> </exec> <echo>cordova plugin add src/plugins/cordova-plugin-console</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/cordova-plugin-console ${cordova-debug.arg}"/> </exec> <!-- Das hier macht Probleme. Die Javascriopt files sollten iin src/www liegen und nicht in plugins. <echo>cordova plugin add src/plugins/de.telekom.tlabs.wallet.framework</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/de.telekom.tlabs.wallet.framework"/> </exec> <echo>cordova plugin add src/plugins/de.telekom.tlabs.wallet.libs</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/de.telekom.tlabs.wallet.libs"/> </exec> --> <echo>cordova plugin add src/plugins/de.telekom.tlabs.wallet.POScardlet</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/de.telekom.tlabs.wallet.POScardlet ${cordova-debug.arg}"/> </exec> <echo>cordova plugin add src/plugins/de.telekom.tlabs.wallet.fileimport</echo> <exec executable="${cordova.command}" dir="${basedir}" failonerror="true"> <arg line="${cordova.arg} plugin add src/plugins/de.telekom.tlabs.wallet.fileimport ${cordova-debug.arg}"/> </exec> </sequential> </macrodef> <target name="install-plugins" depends="check-env" unless="plugins.exists"> <add-plugins/> </target> <target name="update-plugins" depends="check-env"> <add-plugins/> </target> <!-- Copy all neccessary files from src-www to www folder. If you need other files or directories on the device you have to add them here. --> <target name="copy-app-src"> <copy-src index-html="index.html"/> </target> <target name="copy-test-src"> <copy-src index-html="TestJKl.html"/> </target> <macrodef name="copy-src"> <attribute name="index-html"/> <sequential> <echo>Copy files to www ${src-www.dir}/@{index-html}</echo> <copy file="${src-www.dir}/@{index-html}" tofile="${www.dir}/index.html" overwrite="true"/> <copy todir="${www.dir}"> <fileset file="${src-www.dir}/config.xml"/> <fileset file="${src-www.dir}/app.js"/> </copy> <copy todir="${www.dir}/app"> <fileset dir="${src-www.dir}/app"/> </copy> <copy todir="${www.dir}/js"> <fileset dir="${src-www.dir}/js"/> </copy> <copy todir="${www.dir}/resources/css"> <fileset dir="${src-www.dir}/resources/css"/> </copy> <copy todir="${www.dir}/resources/locales"> <fileset dir="${src-www.dir}/resources/locales"/> </copy> <copy todir="${www.dir}/resources/dummyData"> <fileset dir="${src-www.dir}/resources/dummyData"/> </copy> <copy todir="${www.dir}/resources/images"> <fileset dir="${src-www.dir}/resources/images"/> </copy> <copy todir="${www.dir}/touch-2.3.0"> <fileset file="${src-www.dir}/touch-2.3.0/sencha-touch.js"/> <fileset file="${src-www.dir}/touch-2.3.0/sencha-touch-all.js"/> </copy> <copy todir="${www.dir}/touch-2.3.0/src"> <fileset dir="${src-www.dir}/touch-2.3.0/src"/> </copy> <copy todir="${www.dir}/touch-2.3.0/resources/css"> <fileset file="${src-www.dir}/touch-2.3.0/resources/css/sencha-touch.css"/> </copy> </sequential> </macrodef> </project>