Software Archive
Read-only legacy content
17061 Discussions

Architectures mismatch with Crosswalk APKs built by Intel XDK

Andrea_C_
New Contributor I
794 Views

Hi everyone,

we are going to release a new version of our app, unfortunately we are unable to submit our app to the store because the APKs are recognized by the store as "multiplatforms", while this is not true. You can see here the screenshot generated using the play store management page. Please look at the "Piattaforme native" field (Native platforms in Italian).

We are using version 7 of Crosswalk. I attach here also the build log.

Hope to have an answer soon since we cannot publish any update for this reason.

 

 

 

s1.png

0 Kudos
1 Solution
PaulF_IntelCorp
Employee
794 Views

ALL: -- sorry, I thought I had responded to this thread earlier in the week, but it appears that my post got lost.

  • The "unsigned" issue is a "red herring" (as we say in English) -- meaning that it is an unfortunate distraction, it looks like a problem but it is not an actual problem -- the build system always builds an unsigned APK and then signs the APK after the "build" has completed. Unfortunately, you do not see the final signing process in the build log, all you see is the Cordova build process messages, which always builds an unsigned APK.
     
  • There is a bug in the UI that regarding the value of the signed/unsigned directive, so all builds are delivered as signed APKs, regardless of what you select in that build setting. You can manually force a signed or unsigned build by using ONE of the following preferences in the intelxdk.config.additions.xml file:
     
    <preference name="android-signed" value="false"/>  <!-- creates an unsigned APK -->
    <preference name="android-signed" value="true"/>  <!-- creates a signed APK -->
     
    If no preference is provided, the default action is to build a signed APK, which is why the builds always work.
     
  • You have included the SQLite plugin in your app (see this line in the build log: Installing "io.litehelpers.cordova.sqlite" for android), which includes binary libraries in the build and that is what is confusing the Google Play store. I'm assuming this is a new addition to your app. This is the source of the problem you are having.

The last point, regarding the SQLite plugin, is a known issue that is being worked on in our build system. It requires that the build system "scrape" the excess binary files from the APK after building the app but before signing it. There are two workarounds:

  • Build the Crosswalk APK yourself.
  • Build a "shared" model APK.

The second one is accomplished by selecting "shared" in the Crosswalk Runtime setting in the Android-Crosswalk build settings section of the Projects tab. When you build a shared model APK for Crosswalk you will get a single multi-architecture APK and the Crosswalk library must then be downloaded. Unfortunately, it will only work with the Google Play store, since that is currently the only place this shared library is distributed, and it does require that your customers perform that extra download to get the library. See this doc page for more details: https://software.intel.com/en-us/xdk/docs/choosing-crosswalk-build-options-shared-or-embedded

I have escalated the issue and have asked that this problem get resolved ASAP. Unfortunately, I don't have a date for implementation.

View solution in original post

0 Kudos
15 Replies
Brandon_K_Intel
Employee
794 Views

So the problem is that each apk created from our build system is identified as an apk that is supported on multiple platforms? I just wanted to clarify so we have a place to start.

0 Kudos
Swati_S_Intel1
Employee
794 Views

When you build the app using Android Crosswalk build, you get two APKs in a zip file. One for ARM architecture and one for X86 architecture. When you submit the application in the store, you upload both the APKs and when the user downloads your app, only APK that is relevant to their device architecture will be downloaded.  

0 Kudos
Andrea_C_
New Contributor I
794 Views

SWATI S. (Intel) wrote:

When you build the app using Android Crosswalk build, you get two APKs in a zip file. One for ARM architecture and one for X86 architecture. When you submit the application in the store, you upload both the APKs and when the user downloads your app, only APK that is relevant to their device architecture will be downloaded.  

Yes, I know we have to upload both APK, but as said above we can't as the APKs contain a wrong information (the fact that that each one supports *both* the architectures). I hope that the problem is now better explained.

0 Kudos
Andrea_C_
New Contributor I
794 Views

Brandon Kiefer (Intel) wrote:

So the problem is that each apk created from our build system is identified as an apk that is supported on multiple platforms? I just wanted to clarify so we have a place to start.

Exactly, this is what happens.

 

0 Kudos
Swati_S_Intel1
Employee
794 Views

From your log I see that your app is not signed. You have to sign the app in order to submit to the store. Check the Signed checkbox in the Projects > Build Settings page.

 

0 Kudos
Andrea_C_
New Contributor I
794 Views

SWATI S. (Intel) wrote:

From your log I see that your app is not signed. You have to sign the app in order to submit to the store. Check the Signed checkbox in the Projects > Build Settings page.

 

FYI,

I am using Intel XDK EA. The flag was actually checked, but didn't reflect the settings in the .xdk file. So I unchecked and checked the flag, so now the setting is saved. I will let you know if something changes after the new build.

Thanks again,

Andrea

 

0 Kudos
Anusha_M_Intel1
Employee
794 Views

Looks like the signed check not getting reflected is a bug on our part. Has been escalated to the engineering team.

0 Kudos
Andrea_C_
New Contributor I
794 Views

I tried to build again with the signed check enabled (this time saved on the project), but the issue still remains. The apk  supports all the architectures. Notice also that from the logs the APKs looks still unsigned, seems like the setting is totally ignored.

 

0 Kudos
Brandon_K_Intel
Employee
794 Views

Will you try building with a newer version of Crosswalk (preferably 14) and let me know if that issue still persists?

0 Kudos
Andrea_C_
New Contributor I
794 Views

Brandon Kiefer (Intel) wrote:

Will you try building with a newer version of Crosswalk (preferably 14) and let me know if that issue still persists?

Thanks Brandon for your support,

I will try to build most probably on Monday with Crosswalk 14, even if we are willing to use crosswalk 7.

 

0 Kudos
Andrea_C_
New Contributor I
794 Views

Hi, I tried with Crosswalk 14 and, again, the app is not signed is compiled for both architectures.

Here is the log of the build with Crosswalk 14.

Hope that this problem will be soon solved as we are blocked in releasing and testing our app.

 

 

 

0 Kudos
PaulF_IntelCorp
Employee
795 Views

ALL: -- sorry, I thought I had responded to this thread earlier in the week, but it appears that my post got lost.

  • The "unsigned" issue is a "red herring" (as we say in English) -- meaning that it is an unfortunate distraction, it looks like a problem but it is not an actual problem -- the build system always builds an unsigned APK and then signs the APK after the "build" has completed. Unfortunately, you do not see the final signing process in the build log, all you see is the Cordova build process messages, which always builds an unsigned APK.
     
  • There is a bug in the UI that regarding the value of the signed/unsigned directive, so all builds are delivered as signed APKs, regardless of what you select in that build setting. You can manually force a signed or unsigned build by using ONE of the following preferences in the intelxdk.config.additions.xml file:
     
    <preference name="android-signed" value="false"/>  <!-- creates an unsigned APK -->
    <preference name="android-signed" value="true"/>  <!-- creates a signed APK -->
     
    If no preference is provided, the default action is to build a signed APK, which is why the builds always work.
     
  • You have included the SQLite plugin in your app (see this line in the build log: Installing "io.litehelpers.cordova.sqlite" for android), which includes binary libraries in the build and that is what is confusing the Google Play store. I'm assuming this is a new addition to your app. This is the source of the problem you are having.

The last point, regarding the SQLite plugin, is a known issue that is being worked on in our build system. It requires that the build system "scrape" the excess binary files from the APK after building the app but before signing it. There are two workarounds:

  • Build the Crosswalk APK yourself.
  • Build a "shared" model APK.

The second one is accomplished by selecting "shared" in the Crosswalk Runtime setting in the Android-Crosswalk build settings section of the Projects tab. When you build a shared model APK for Crosswalk you will get a single multi-architecture APK and the Crosswalk library must then be downloaded. Unfortunately, it will only work with the Google Play store, since that is currently the only place this shared library is distributed, and it does require that your customers perform that extra download to get the library. See this doc page for more details: https://software.intel.com/en-us/xdk/docs/choosing-crosswalk-build-options-shared-or-embedded

I have escalated the issue and have asked that this problem get resolved ASAP. Unfortunately, I don't have a date for implementation.

0 Kudos
Andrea_C_
New Contributor I
794 Views

Paul F. (Intel) wrote:

ALL: -- sorry, I thought I had responded to this thread earlier in the week, but it appears that my post got lost.

  • The "unsigned" issue is a "red herring" (as we say in English) -- meaning that it is an unfortunate distraction, it looks like a problem but it is not an actual problem -- the build system always builds an unsigned APK and then signs the APK after the "build" has completed. Unfortunately, you do not see the final signing process in the build log, all you see is the Cordova build process messages, which always builds an unsigned APK.
     
  • There is a bug in the UI that regarding the value of the signed/unsigned directive, so all builds are delivered as signed APKs, regardless of what you select in that build setting. You can manually force a signed or unsigned build by using ONE of the following preferences in the intelxdk.config.additions.xml file:
     
    <preference name="android-signed" value="false"/>  <!-- creates an unsigned APK -->
    <preference name="android-signed" value="true"/>  <!-- creates a signed APK -->
     
    If no preference is provided, the default action is to build a signed APK, which is why the builds always work.
     
  • You have included the SQLite plugin in your app (see this line in the build log: Installing "io.litehelpers.cordova.sqlite" for android), which includes binary libraries in the build and that is what is confusing the Google Play store. I'm assuming this is a new addition to your app. This is the source of the problem you are having.

The last point, regarding the SQLite plugin, is a known issue that is being worked on in our build system. It requires that the build system "scrape" the excess binary files from the APK after building the app but before signing it. There are two workarounds:

  • Build the Crosswalk APK yourself.
  • Build a "shared" model APK.

The second one is accomplished by selecting "shared" in the Crosswalk Runtime setting in the Android-Crosswalk build settings section of the Projects tab. When you build a shared model APK for Crosswalk you will get a single multi-architecture APK and the Crosswalk library must then be downloaded. Unfortunately, it will only work with the Google Play store, since that is currently the only place this shared library is distributed, and it does require that your customers perform that extra download to get the library. See this doc page for more details: https://software.intel.com/en-us/xdk/docs/choosing-crosswalk-build-optio...

I have escalated the issue and have asked that this problem get resolved ASAP. Unfortunately, I don't have a date for implementation.

 

Thanks Paul for the exhaustive reply,

I will try to check if it's possible to find a workaround that allows to use the Sqlite plugin and avoiding to confuse the Play Store.

I Hope that anyway a fix will be applied in the build system as this is a big showstopper for people that needs this plugin.

 

Kind regards,

Andrea

 

0 Kudos
Andrea_C_
New Contributor I
794 Views

I forked the sqlite plugin and added two branches:

 

1) One with the arm binary (arm)

2) One with the x86 binary (x86)

 

The link is here https://github.com/andreacimino/Cordova-sqlite-storage. ;This solution is not optimal, but at least I can build the app.

 

Thanks again,

Andrea

 

 

0 Kudos
PaulF_IntelCorp
Employee
794 Views

Great idea! Glad you are able to move forward with this solution. It will not stop us from fixing the problem, it needs to get fixed as there are other plugins out there that have the same issue.

0 Kudos
Reply