Mixin Android messenger, crypto wallet and light node to the Mixin Network
- Written in Kotlin
- Uses Jetpack: Room, LiveData, Paging, Lifecycle and ViewModel
- Uses Hilt for dependency injection
This project uses ktlint
📱 Android private messenger, crypto wallet and light node to Mixin Network
Home Page: https://play.google.com/store/apps/details?id=one.mixin.messenger
License: GNU General Public License v3.0
打开扫描界面后退出等一会儿就蹦了
Some phones no Google Map, we should fallback to another map.
In order to verify direct APK download from github/google-play/(mirror/download)-websites the output from apksigner is needed.
see for example the verification section in aegis app:
https://github.com/beemdevelopment/Aegis#verification
Running apksigner (Command: apksigner verify --print-certs --verbose 320100.apk
) on apk downloaded from github:
https://github.com/MixinNetwork/android-app/releases/download/v0.32.1/320100.apk
sha256sum: 46342aab01445b09d19cb1b3dd6c5f13a757d050d5112c519a19a55ae37e4652
Result:
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): true
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: true
Number of signers: 1
Signer #1 certificate DN: CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Signer #1 certificate SHA-256 digest: 02fb466874975338337ec00ab80b95b623c057814356b2ea3fa3f57578f81ab6
Signer #1 certificate SHA-1 digest: 8da0fc40e504fc2c533c527292c63af226d46e67
Signer #1 certificate MD5 digest: 073c2a74a5c5d6ba2fe43351fb6d95ad
Signer #1 key algorithm: RSA
Signer #1 key size (bits): 4096
Signer #1 public key SHA-256 digest: 8063aa2ebcc8c31931a37b79d5f7e0b668a1a546edb3bb51bb3d9b9160fed973
Signer #1 public key SHA-1 digest: 3127e65d3e1daac7f89db579f604360a0245a444
Signer #1 public key MD5 digest: a92d6cd0c8bff7d7d8b4670c994eccbe
Source Stamp Signer certificate DN: CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Source Stamp Signer certificate SHA-256 digest: 3257d599a49d2c961a471ca9843f59d341a405884583fc087df4237b733bbd6d
Source Stamp Signer certificate SHA-1 digest: b1af3a0bf998aeede1a8716a539e5a59da1d86d6
Source Stamp Signer certificate MD5 digest: 577b8a9fbc7e308321aec6411169d2fb
Source Stamp Signer key algorithm: RSA
Source Stamp Signer key size (bits): 4096
Source Stamp Signer public key SHA-256 digest: 4c53c1d28f2ecceadcb1351603f0b702615b3454b6e30070de759359f241b802
Source Stamp Signer public key SHA-1 digest: 188b067a9ee881bde55dabe0f8f7ecb320b1a091
Source Stamp Signer public key MD5 digest: 965afac83f033aa037a54482eb6922d5
WARNING: META-INF/services/io.jsonwebtoken.CompressionCodec not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/services/io.jsonwebtoken.io.Deserializer not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/services/io.jsonwebtoken.io.Serializer not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/services/kotlinx.coroutines.CoroutineExceptionHandler not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/services/kotlinx.coroutines.internal.MainDispatcherFactory not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
All the files in WARNING should be removed or moved to other directory, it's not much problematic because apk also signed with v2, when v1 verification is used (which is deprecated from 2016) the files in WARNING are not authenticated ("Unauthorized modifications to this JAR entry will not be detected.")
They probably should be removed, which can be done for example by adding exclude lines to packagingOptions in build.gradle file.
see related question on stackoverflow for info on removing such files:
https://stackoverflow.com/questions/66897483/how-can-i-exclude-all-files-in-meta-inf-except-for-the-three-signature-files
* What went wrong:
Execution failed for task ':app:processDebugGoogleServices'.
> File google-services.json is missing. The Google Services Plugin cannot function without it.
Searched Location:
/Users/xingxing/androidGithubProject/android-app/app/src/nullnull/debug/google-services.json
/Users/xingxing/androidGithubProject/android-app/app/src/debug/nullnull/google-services.json
/Users/xingxing/androidGithubProject/android-app/app/src/nullnull/google-services.json
/Users/xingxing/androidGithubProject/android-app/app/src/debug/google-services.json
/Users/xingxing/androidGithubProject/android-app/app/src/nullnullDebug/google-services.json
/Users/xingxing/androidGithubProject/android-app/app/google-services.json
感觉是缺少了google-services.json文件😂😂
Describe the bug
When attempting to withdraw to a BNB address, and selecting "No Memo", it disallows this, giving an error about the memo format.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The address is added
Smartphone (please complete the following information):
This repo don't contain instructions to build the app and what deps are required, looks like JDK > 11 is needed, also adding MAPBOX_DOWNLOADS_TOKEN=PASTE_YOUR_SECRET_TOKEN_HERE
to gradle.properties
file is needed, otherwise mapbox return "Unauthorized" error, when tried to compile the app, as can be seen at:
https://gitlab.com/walletscrutiny/walletScrutinyCom/-/issues/344#note_683241277
We use Paging2 for page the conversation message, It's use LimitOffsetDataSource for the Datasource, the Datasource need count the whole conversation message, we need use ScrollingCursor for the Datasource, avoid the count.
Describe the bug
Clear storage for a conversation with a large usage(7GB) will run forever.
Smartphone (please complete the following information):
val response = signalKeyService.getSignalKeyCount().execute().body()
if (response != null && response.isSuccess && response.data != null) {
val availableKeyCount = response.data!!.preKeyCount
if (availableKeyCount >= PREKEY_MINI_NUM) {
return
}
refresh()
}
Please update Bouncy Castle
Line 9 in 3943440
See this guide for the steps to ensure it's safe to remove above line android.enableJetifier=true
(check that all deps are already fully migrated to AndroidX, and migrate the ones still not migrated to it)
https://medium.com/dipien/say-bye-bye-to-android-jetifier-a7e0d388f5d6
Also remove line:
Line 115 in 8c4a253
When into the conversation, back to the conversion list page, the unread number did not disappear immediately.
F-Droid URL: https://f-droid.org/
F-Droid Wikipedia: https://www.wikipedia.org/wiki/F-Droid
Contribution/Submit Applications: https://f-droid.org/en/contribute/#submit-applications
Inclusion Policy: https://f-droid.org/en/docs/Inclusion_Policy
Request For Packaging Tickets: https://gitlab.com/fdroid/rfp/issues
F-Droid is application & app store for android apps (alternative to Google Play) that accepts only FLOSS (free/libre and open-source) apps and doesn't require any account creation/login in order to download apps.
The requirements for being included into f-droid are here: https://f-droid.org/en/docs/Inclusion_Policy/
The process for getting an app published to f-droid is outlined here: https://f-droid.org/en/docs/Inclusion_How-To/ https://gitlab.com/fdroid/rfp#submission-queue https://gitlab.com/fdroid/fdroiddata/blob/master/CONTRIBUTING.md
You can open a RFP (Request For Packaging) ticket here: https://gitlab.com/fdroid/rfp or an user can do so, provided you agree to include this app in F-droid (a comment to this issue is enough for it)
Some users don't have play-store on their devices as they are degoogled devices or don't create/use google account (using aurora store app https://auroraoss.com/ in anonymous mode (which is available on f-droid) is solution to still get apps from google-play) or using OS/custom ROMs that don't have it included, such as: (Some bundle f-droid by default)
https://grapheneos.org/ GrapheneOS
https://calyxos.org/ CalyxOS
https://lineageos.org/ LineageOS
https://lineage.microg.org/ LineageOS for microG
https://e.foundation/ /e/
https://www.replicant.us/ Replicant
Downloading APKs from official places like github releases or website, or from unofficial sources like APK downloading sites https://apk.support or https://apkpure.com/ etc... will avoid the play-store/google dependency but it's lack automatic update mechanism unless it's built in into the application, F-Droid solve this.
Once the app is published into f-droid add the below image code into
README.md to show that the app available on f-droid:
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80">](https://f-droid.org/en/packages/org.fdroid.fdroid/)
请问你们的应用是怎么调用tee相关的呢?看到你们相关宣传中有tee介绍相关的,请教下如何在应用层面调用tee相关功能。
通过sheme打开mixin客户端异常,打开的是一个透明页面,只看到系统的status bar发生变化
mixin://users/7000101276
打开mixin客户端android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed (Sqlite code 11 SQLITE_CORRUPT), (OS error - 11:Try again)
Mixin database upgrade related data is stored in SharedPreferences and this data is not reliable. Key-value tables
should be created in the database to store this data.
Contains the following data:
PREF_ATTACHMENT
PREF_ATTACHMENT_LAST
PREF_ATTACHMENT_OFFSET
PREF_FTS4_UPGRADE
PREF_SYNC_FTS4_OFFSET
PREF_BACKUP
We should add QuicInterceptor intercept the QUIC request instead of HTTP/2
https://developer.android.com/guide/topics/connectivity/cronet
The 'kotlin-android-extensions' Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the 'kotlin-parcelize' plugin.
:app: 'kotlin-parcelize' can't be applied together with 'kotlin-android-extensions'
Describe the bug
群公告很长超出显示框时,无法滚动显示.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
可以上下滑动完整查看公告.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
none.
This is done by having ./gradle/verification-metadata.xml
file, more information:
https://docs.gradle.org/current/userguide/dependency_verification.html
When send picture, should allow edit
where to put in the api credentials in the code?
is there no documentation for this app?
10002 error request data has an invalied field, when . i try to signup.
在您的项目中,对于加密这一块, session_id 是做什么的,如何生成的,您在用户登录的时候,获取自己的session_id , 创建会话的时候,拿到对方的sesison_id , 加密的还是传入这个,和通过session_id 生成devices_id ,这个session_id是会改变的,望解答,🙏
https://android-developers.googleblog.com/2020/09/android11-final-release.html
When playing a voice message, approach the phone and switch to the handset. In some unknown cases, you cannot switch to the speaker.
The NDK version used is "21.3.6528147"
Line 16 in 8c4a253
is downloaded from page "Unsupported Downloads" (the "21e")
https://github.com/android/ndk/wiki/Unsupported-Downloads#r21e
Note: these obsolete versions of the NDK are no longer supported. Use a current release instead.
pages that show supported versions are which is "23.0.7599858"
https://developer.android.com/ndk/downloads/#older-downloads
https://github.com/android/ndk/wiki
Describe the bug
在 POST 类型的信息中,以链接形式加入一个 snapshot 的 schema,比如 [Link](mixin://snapshots?trace={{trace_id}})
。点击这个链接,之后点其他地方就没有响应了。间或,系统还会提示 Mixin 停止响应。然后白屏一下,snapshot 依然没有打开。
To Reproduce
Steps to reproduce the behavior:
Expected behavior
希望能在 POST 中直接打开这个 snapshot。iOS 版上就可以。
Smartphone (please complete the following information):
Since Room supports a custom tokenizer for FTS, we can do some follow-ups.
https://android-review.googlesource.com/c/platform/frameworks/support/+/828047/
ShareHelper companion object 的get方法拿到的ShareHelper非单例
不太清楚你们是否接受非开发团队成员的pr
所以提一个issue.
问题明细:
one.mixin.android.util包下的ShareHelper.kt文件
private var INSTANCE: ShareHelper? = null
fun get(): ShareHelper =
INSTANCE ?: synchronized(this) {
INSTANCE ?: ShareHelper()
}
get()方法没有对INSTANCE赋值,每次都会创建一个新的ShareHelper出来,建议改为:
private var INSTANCE: ShareHelper? = null
fun get(): ShareHelper =
INSTANCE ?: synchronized(this) {
INSTANCE ?: ShareHelper().also { INSTANCE = it }
}
Switch to wallet view.
Show the user's profile.
building the app from tag v0.32.6
fail with error:
ninja: error: '/home/appuser/app/mixin/android-app/app/src/main/cpp/opus/lib/x86_64/libopusenc.a', needed by '/home/appuser/app/mixin/android-app/app/build/intermediates/cxx/RelWithDebInfo/5h42116x/obj/x86_64/libmixin.so', missing and no known rule
this happen even on alpine when installing libopusenc-dev
Containerfile debian based to reproduce:
FROM docker.io/debian:sid-slim
RUN set -ex; \
mkdir -p /usr/share/man/man1/; \
apt-get update; \
DEBIAN_FRONTEND=noninteractive apt-get install --yes -o APT::Install-Suggests=false --no-install-recommends \
openjdk-11-jdk git; \
rm -rf /var/lib/apt/lists/*; \
useradd -ms /bin/bash appuser;
USER appuser
ENV ANDROID_SDK_ROOT="/home/appuser/app/sdk" \
ANDROID_HOME="/home/appuser/app/sdk"
RUN set -ex; \
mkdir -p "/home/appuser/app/sdk/licenses" "/home/appuser/app/mixin/"; \
printf "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" > "/home/appuser/app/sdk/licenses/android-sdk-license"; \
cd /home/appuser/app/mixin/; \
git clone https://github.com/MixinNetwork/android-app; \
cd android-app; \
git checkout v0.32.6;
WORKDIR /home/appuser/app/mixin/android-app/
RUN set -ex; \
sed -i 's/PASTE_YOUR_SECRET_TOKEN_HERE/sk.eyJ1Ijoicm9vdHJvb3QxIiwiYSI6ImNrdXZvN3hnODBmeGoydXFmdm1wamZzYWkifQ.2tvLMLnZ2cAI4_yKlYEPCQ/g' ./gradle.properties; \
echo "{ \
\"project_info\": { \
\"project_number\": \"623252783566\", \
\"firebase_url\": \"https://blockchaintest-ecd1c.firebaseio.com\", \
\"project_id\": \"blockchaintest-ecd1c\", \
\"storage_bucket\": \"blockchaintest-ecd1c.appspot.com\" \
}, \
\"client\": [ \
{ \
\"client_info\": { \
\"mobilesdk_app_id\": \"1:623252783566:android:02baff6e6c46ed96232b9f\", \
\"android_client_info\": { \
\"package_name\": \"one.mixin.messenger\" \
} \
}, \
\"oauth_client\": [ \
{ \
\"client_id\": \"623252783566-o6j47jlpan97fnibnr0vosvc4lh71sm1.apps.googleusercontent.com\", \
\"client_type\": 3 \
} \
], \
\"api_key\": [ \
{ \
\"current_key\": \"INSERT KEY HERE\" \
} \
], \
\"services\": { \
\"appinvite_service\": { \
\"other_platform_oauth_client\": [ \
{ \
\"client_id\": \"623252783566-o6j47jlpan97fnibnr0vosvc4lh71sm1.apps.googleusercontent.com\", \
\"client_type\": 3 \
} \
] \
} \
} \
} \
], \
\"configuration_version\": \"1\" \
}" > /home/appuser/app/mixin/android-app/app/google-services.json;
Run ./gradlew assembleRelease
in it.
full error log:
C/C++: ninja: error: '/home/appuser/app/mixin/android-app/app/src/main/cpp/opus/lib/x86_64/libopusenc.a', needed by '/home/appuser/app/mixin/android-app/app/build/intermediates/cxx/RelWithDebInfo/5h42116x/obj/x86_64/libmixin.so', missing and no known rule to make it
> Task :app:buildCMakeRelWithDebInfo FAILED
> Task :app:processReleaseManifestForPackage
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:buildCMakeRelWithDebInfo'.
> Build command failed.
Error while executing process /home/appuser/app/sdk/cmake/3.10.2.4988404/bin/ninja with arguments {-C /home/appuser/app/mixin/android-app/app/.cxx/RelWithDebInfo/5h42116x/x86_64 mixin rlottie}
ninja: Entering directory `/home/appuser/app/mixin/android-app/app/.cxx/RelWithDebInfo/5h42116x/x86_64'
ninja: error: '/home/appuser/app/mixin/android-app/app/src/main/cpp/opus/lib/x86_64/libopusenc.a', needed by '/home/appuser/app/mixin/android-app/app/build/intermediates/cxx/RelWithDebInfo/5h42116x/obj/x86_64/libmixin.so', missing and no known rule to make it
我们的产品非常喜欢Mixin,他对我们提出了分享到Mixin的一个需求
请问Mixin现在是否支持?
Line 110 in 4da5de3
Line 127 in 4da5de3
Jcenter service is closed (currently in read-only mode, no updates for packages will be made)
more details on needed migration:
https://developer.android.com/studio/build/jcenter-migration
https://blog.gradle.org/jcenter-shutdown
and here content on how to migrate:
https://jeroenmols.com/blog/2021/02/04/migratingjcenter/
You can declare specific usages of jcenter like explained in https://jeroenmols.com/blog/2021/02/04/migratingjcenter/#consumed-dependencies-from-bintrayjcenter and like it's done for example in this PR of unstoppable wallet "Gradually migrate from jcenter to mavenCentral"
https://github.com/horizontalsystems/unstoppable-wallet-android/pull/3752/files
For more security, can you change old spongycastle (based on old bouncycastle) to bouncycastle?
Need more detect our code, reduce battery usage.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.