I've built the wire app from the following repository:
https://github.com/wireapp/wire-android
Using the following build directions:
How to build locally Check out the wire-android repository. Switch to
latest relase branch release From the checkout folder, run ./gradlew
assembleProdRelease. This will pull in all the necessary dependencies
from Maven.
I've tried the release branch:
git clone https://github.com/wireapp/wire-android.git --branch release
And the master:
git clone https://github.com/wireapp/wire-android.git
Initially both versions gave the error:
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.UnsatisfiedLinkError: Error looking up function 'wcall_set_video_send_state': undefined symbol: wcall_set_video_send_state
at com.sun.jna.Function.<init>(Function.java:245)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:566)
However, this error can be solved by running the following command prior to opening the project in Android Studio:
gradlew assembleProdRelease
This command also creates the apks in build/output/apks. However, the build isn't signed with either the release or debug key. I used the following tool to sign the apk:
https://github.com/patrickfav/uber-apk-signer/releases
The APK is stable and runs fine, but still cannot initiate a video call. It gives the following errors:
Android 5:
08-24 22:53:29.877 296-881/? E/FastThread: did not receive expected
priority boost
Android 8:
08-24 23:10:02.190 406-4592/? E/AudioALSAPlaybackHandlerBase:
-getHardwareBufferInfo(), pcm_get_htimestamp fail, ret = -1, pcm_get_error =
Android 9 Emulator:
08-25 19:56:58.425 1583-3268/? W/audio_hw_generic: Not supplying
enough data to HAL, expected position 4108693 , only wrote 4108320
UPDATE:
I thought about trying to build my own versions of the AVS libraries: following https://github.com/wireapp/wire-audio-video-signaling
The following command needs to be run:
make dist_android
C:\work\wire-audio-video-signaling>make dist-android mk/target.mk:167:
*** Unknown host system. Stop.
mk/target.mk looks like:
# Start by auto-determining host system and arch.
ifeq ($(HOST_OS),)
HOST_UNAME := $(shell uname)
ifeq ($(HOST_UNAME),Darwin)
HOST_OS := osx
else
ifeq ($(HOST_UNAME),Linux)
HOST_OS := linux
else
$(error Unknown host system)
endif
endif
endif
The Makefile doesn't seem to be setup to support Windows so I'm going to try building it from a Linux machine to see if that helps.
UPDATE 2:
It does build better on Ubuntu, but it eventually dies complaining about compiler arguments. [Sorry I don't have the error to hand]
But I've managed to find binary copies of the library built for Android/ARM here:
http://dl.bintray.com/wire-android/releases/com/wire/avs/
However, these libraries do not seem to solve the issue either.
UPDATE 3:
Tried the following:
Downloaded the latest version of the .aar file from the link above
Renamed it to avs.aar
Installed in app/libs
Uncommented the line: "implementation (name:'avs', ext:'aar')"
But I got the error:
Program type already present: com.waz.avs.VideoCapturer$4
Message{kind=ERROR, text=Program type already present:
com.waz.avs.VideoCapturer$4, sources=[Unknown source file], tool
name=Optional.of(D8)}
There is a another reference to the AVS library below, if you comment that out the error will go away.
However, none of these steps solve the problem.
Now I will try to build older versions of the release branch...
Update 4: Release Branch: 2.41.359
[The most recent non-beta tagged release]
No longer compiles in Android studio because some of the XML files in the layout DIR are not well formed. Those must be fixed and checked into Git since the build process checks all the files out from Git.
The app initially runs normally and allows login, but always crashes after the edit devices screen. The app then crashes every time that you try to open it.
08-25 14:51:02.142 29066-29109/? E/AndroidRuntime: FATAL EXCEPTION:
Thread-4
Process: com.wire, PID: 29066
java.lang.NullPointerException: Attempt to invoke interface method 'int com.waz.call.RequestHandler.request$1d4ff469()' on a null object
reference
at com.waz.call.FlowManager.request(FlowManager.java:365)
Note: Seems that edit devices screen is not the cause of the problem because I removed all my devices in the web app but then 2.41.359 crashes on the phone without displaying the edit devices screen.
This issue is mentioned in following threads:
https://github.com/wireapp/wire-android/issues/1271
https://github.com/wireapp/wire-android/issues/1288
The advice seems to be to use the avslib.so file from the production version since the provided one is inadequate to run the project.
So I've dowloaded the APK off their website:
https://wire.com/en/download/
It is version: 3.15.634 [That's older than the one in the app store: 3.16.638 though hopefully that doesn't matter].
For anyone that doesn't know, an APK is just a ZIP file so I renamed it to from .apk to .zip for purposes of obtaining libavs.so:
Root Dir:
Libs Dir:
Arm Dir:
With libavs.so extracted, I renamed the unsigned version of wire-prod-release-2.41.99999 produced by the build tools to wire-prod-release-2.41.99999-avs-mod.zip and deleted the old libavs.so and replaced it with the one that I just took from the production version of the app. I renamed it back to .pkg then ran the following command to sign it:
java -jar \uber-apk-signer-0.8.4.jar --apks wire-prod-release-2.41.99999-avs-mod.apk -debug
Pretty good result, 2.41.359 no longer crashes. However, I still cannot initiate any audio or video calls. Same error found in the latest version of the release branch:
08-25 16:01:51.748 406-4592/? E/AudioALSAPlaybackHandlerBase: -getHardwareBufferInfo(), pcm_get_htimestamp fail, ret = -1, pcm_get_error =
As a sanity check, I installed the production version: 3.15.634 used to extra libavs.so and it is able to make both audio and video calls. [The version on GooglePlay: 3.16.638 also works fine for audio and video...]
Any ideas?
After a few days of trying, I found a way to build the project in such a way that it will initiate audio and video calls:
Procedure:
git clone https://github.com/wireapp/wire-android.git --branch release
cd wire-android
git checkout 2.40.357
Load the project into Android Studio
Edit the file res/layout/collection_file_asset.xml
Move <?xml version="1.0" encoding="utf-8"?> above the copyright comment since the file must begin with the XML tag
git add .
git commit -m "fixed syntax error"
gradlew assembleProdRelease
java -jar \uber-apk-signer-0.8.4.jar --apks wire-prod-release-2.40.99999.apk -debug
adb install wire-prod-release-2.40.99999-aligned-debugSigned.apk
Other Notes:
Master currently does not build due to Scala errors...
The current release branch produces a stable app but results in the following error when tapping on the video icon: "E/AudioALSAPlaybackHandlerBase: -getHardwareBufferInfo(), pcm_get_htimestamp fail, ret = -1, pcm_get_error ="
The most recent stable release 2.41.359 does not work because it crashes on every app launch with: "AndroidRuntime: FATAL EXCEPTION: Thread-4 Process: com.wire, PID: 29066 java.lang.NullPointerException: Attempt to invoke interface method 'int com.waz.call.RequestHandler.request$1d4ff469()' on a null object reference at com.waz.call.FlowManager.request(FlowManager.java:365)"
While building 2.40.357 enables audio and video, it is unstable and crashes quite a bit while receiving and making calls. I've spoken with other developers using this code base and they've encountered similar problems...
Thoughts:
I'm not really sure what's happening with this project. There are developers pleading for help with audio / video issues on Git with little response. I think I'd feel a little uneasy about using this code for a commercial project unless there is a bit more stability and support...
I gave up to compile a working application from source. Aside from educational reasons, my motivation to compile from source was a particular code change (lifting the limit of simultaneous accounts in the android app, as I have more than 2)
Doing that change itself is trivial, its just a constant defined in
app/src/main/scala/com/waz/zclient/pages/main/profile/preferences/pages/ProfileBottomSheetDialog.scala:
val MaxAccountsCount = 2
However, since no working application can be built from the provided sources - even with considerable effort - I instead used the smali/backsmali tool from
https://github.com/JesusFreke/smali
to create a patch/diff of this particular code change between a modified and unmodified (nonfunctional) binary app built from source - reflecting the corresponding changes in bytecode. (Although apktool could probably be used to do the same)
This bytecode patch can then be applied to the precompiled and fully functional production app as well, also using smali/backsmali (or apktool)
I keep getting an error when trying to run my app in android studio.
Image of error.
Text version: "Emulator: glTexImage2D: got err pre :( 0x502 internal 0x1907 format 0x1907 type 0x1401"
Google doesn't turn up anything. Does anyone know what it means or how to fix it?
Edit: the other solution didn't work. I'm still getting the error and the virtual device only shows a white screen.
I'm trying to clone an android project from github, every time i build the project it gives me that error:
java.io.ioexception error=13 permission denied
Execution failed for this task : projectname.KaptGenerateStubsDebugKotlin.
i ran a gradle clean command then assembleDebug , it built successfully but i still have this error.
i tried the solution in this answer, but it didn't work :-
android studio kapt debug koltin internal compiler error
Any thoughts?
Logcat Screenshot
I'm using ACRA lib for getting crashes of my app.
It work fine (I receive crash-reports on my server with stackTrace and logCat info). But in my IDE (Eclipse) in logCat I see only this line, when I throw exception:
E/ACRA(18776): ACRA caught a IndexOutOfBoundsException exception for com.example.myapp. Building report.
So I able to read stackTrace of catched error only on my server... And, of course, if I disable ACRA initialization in my app I can see stackTrace of throwing error.
Also I read this, but it do not help me, as I already have "verbose" filter in logCat in my IDE (Eclipse).
UPD_0:
As I understand, this issue caused by Android version >=5 (Lolipop). I test on Nesus 4 (ver 5.1) and on LG g3s, ver.5.0.2. On thses devices there are no stackTrace of catched error in IDE's logCat. On devices with Android <5 (Lolipop) everything is all write and I can see error detailes in logCat of Eclipse.
UPD_1:
If read logs from cmd (adb logcat) everithing is all write. So there is problem with Eclipse...
If it's showing in the adb logcat, then it's a problem with either Eclipse or with your Eclipse config.
I have upgraded my Phonegap running on Windows 7 to the currently latest version to 3.3.0. I could create a project without any issue but when I try to add a platform say "android" an error occurs. Shown below is the error I get when I run "cordova platform add android" command on command promt on Windows 7. Please help.
E:\Dropbox\Development\Android\weatherlk>cordova platform add android
Creating android project...
C:\Users\Teshan\AppData\Roaming\npm\node_modules\cordova\node_modules\q\
throw e;
^
Error: An error occured during creation of android sub-project.
C:\Users\Teshan\.cordova\lib\android\cordova\3.3.0\bin\node_modules\q\q.
throw e;
^
Error: An error occurred while listing Android targets
at C:\Users\Teshan\.cordova\lib\android\cordova\3.3.0\bin\lib\check_
at _rejected (C:\Users\Teshan\.cordova\lib\android\cordova\3.3.0\bin
at C:\Users\Teshan\.cordova\lib\android\cordova\3.3.0\bin\node_modul
at Promise.when (C:\Users\Teshan\.cordova\lib\android\cordova\3.3.0\
at Promise.promise.promiseDispatch (C:\Users\Teshan\.cordova\lib\and
752:41)
at C:\Users\Teshan\.cordova\lib\android\cordova\3.3.0\bin\node_modul
at flush (C:\Users\Teshan\.cordova\lib\android\cordova\3.3.0\bin\nod
at process._tickCallback (node.js:415:13)
at C:\Users\Teshan\AppData\Roaming\npm\node_modules\cordova\src\plat
at ChildProcess.exithandler (child_process.js:641:7)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:735:16)
at Process.ChildProcess._handle.onexit (child_process.js:802:5)
I had exactly this problem today. Turned out I had white space in the path variable for \android-sdk\tools (in windows 7 environment variables). Check the android batch file runs, ie type android in a command prompt in any directory, and also adb for the platform-tools path. A similar question is answered here < An error occured during creation of android sub-project >.
Here is a blog about installing it from start to finish with a little more detail than phonegap/cordova docs offer. A lot easier than piecing together the different stack questions: http://www.andrewsavory.com/blog/2013/2517