I'm trying to prepare a single APK for my game for both Tango and non-Tango devices. (Tango-specific features will not be available on regular devices). I'm using C native API.
Running the app on a non-tango device always throws an exception
java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libtango_support_api.so" needed by "libtroikaproject.so"; caused by could not load library "libcxsparse.so" needed by "libtango_support_api.so"; caused by library "libcxsparse.so" not found
Is it possible to link with Tango libraries so that the app could be
launched on regular devices without error?
Is it possible to use "Multiple APK" mechanism to publish
single app on Google Play for Tango and regular devices?
Is it possible to link with Tango libraries so that the app could be launched on regular devices without error?
Yes, it is possible. The error is caused by how Tango links the library internally, and it is going to be fixed soon. As the temp fix, you could download the libcxsparse.so from their website and package it in to your APK's lib folder.
Is it possible to use "Multiple APK" mechanism to publish single app on Google Play for Tango and regular devices?
Multiple APK is possible, but you will need to specify different build flavors in gradle. This is currently not there in the sample code.
Related
I have an Android app under development which uses Dynamic Features. I know that apps with Dyn. Features should be build as a BUNDLE, but the probleme is that I need to deploy the app and all its features to a test device that is located in a remote office and that has a separate network (not bind-able to my Android Studio) in order to start testing and showing the app to the final customers before the final release. I have tried to build an APK, but the app crashes because it doesn't find the classes defined inside the Dynamic Features. It there a way to build an APK that contains all the feature and that can be installed on a clean device which is not bound to an Android Studio ?
If the app is already in the Play Store, you could use internal app sharing? Then you would just share a link to your clients and they'd be able to download the app from Play.
If you really need to share an APK, you can use bundletool to build a "universal APK" (see flag --mode=universal). You'll have a single APK that you can then share to your clients. Note that you will to ensure that the dynamic features are configured with "fusing=true" so that they're compiled in the universal APK. Note that this means that these modules will not be downloaded since they're already in the APK.
If you care about your clients seeing and testing the download flow, you'll need to use the internal app sharing feature, or an internal test track.
I am working on unity 2018.3.7f1 for Android.
The game was working fine as far as we were sending apks on android but now we are giving 64-bit support and making android app bundles from unity.
The problem I'm facing is when a user downloads the game from the play store it is stuck after one scene. I have checked the logs and it says dll not found exception: Unable to load dll 'AkSoundEngine': The specified module could not be found.
I am using wwise for sounds in the project.
I create application in Android Studio, and send it to Google Play Store, after time i add library "littleprxy"(based on netty), and when it came time to send updated application in Google Play Console i see Supported platform : amd64-Linux-gpp, amd64-Windows-gpp, arm-Linux-gpp, i386-Linux-gpp, i386-MacOSX-gpp, x86_64-MacOSX-gpp, x86-Windows-gpp, and ofcourse 0 supported Android devices, but i can install apk manually, and it work fine.
How i can fix it? Maybe some parameters for gradle or manifest...
Sorry for English
LittlePrxy is written atop Netty. Netty is kind of "heavy" for Android. Most of Android devices are resource limit. memory footprint, cpu usage should be carefully treated. This is the reason why Netty doesn't support Android OS. Sure you will be able to use this lib but it is not recommended. This is why GooglePlay reports an error, because Android is not specified in the list of supported OS of this lib.
In short, you should not use LittlePrxy in your app. You should find another library.
I got an error in the build server when sending an Android build during the dex phase.
Googling a bit I learned that there is a hard limit of 64K functions (including all libs, the heaviest is google play services), or you can use the multiple dex mechanism.
How do I activate this for Codename One?
I understand Codename One uses Ant and as far as I understand this only works for gradle.
FYI this is the workaround, that splits google play services into sub libraries with native android:
http://android-developers.blogspot.com.es/2014/12/google-play-services-and-dex-method.html
I had a very similar issue and corresponded with Codename One's pro support on this. Gradle support was something they just recently announced so its not as documented but should be available in the next update.
You need to add the following build hints to your project:
android.gradle=true
android.multidex=true
I understand that gradle will be the default build once 3.3 rolls around so in the future only the multidex option will be needed.
You don't have to add Google Play Service Library in your codenameone app, just add android.includeGPlayServices=true to your build hint and it would be included in build server.
I need to produce 2 apks, one for x86 and one for ARM. I do this with different versions of crosswalk, which internally uses cordova. All I need to do one the two projects are created is ./cordova/build --release and then sign the APK. The Google Play store docs mention a way of uploading both into a single app listing, but they assume I'm using the Android NDK, which I'm not. Will I need to start using it or is there another way to simply upload both apks?
Google does support posting of architechture-specific APKs: http://developer.android.com/google/play/publishing/multiple-apks.html. Note however that the documentation states, in bold:
we encourage you to develop and publish a single APK
So, if you take the single APK approach:
Just compile your native code into libraries (i.e. .so files) and place them in the following locations
<Project_Root>/app/src/main/jniLibs/armeabi/
and
<Project_Root>/app/src/main/jniLibs/x86/
The build process will package these in the appropriate manner so that your APK contains libs for both architectures. Then at runtime, Android will ensure that the architecture-appropriate library is loaded.
Note that the above assumes that you are using Gradle to build your APKs. If you are using the old ant-based build process, the locations are slightly different:
<Project_Root>/libs/armeabi/
and
<Project_Root>/libs/x86/