michaeljokar / multilanguages Goto Github PK
View Code? Open in Web Editor NEWandroid multi language support (support android O+)
android multi language support (support android O+)
Hello,
Since Transform API is removed. Check here.
What is the alternative to make it work?
Process: com.example.multilanguage2, PID: 22233
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.multilanguage2/com.example.multilanguage2.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:159)
at android.app.FragmentManagerImpl.getTargetSdk(FragmentManager.java:2978)
at android.app.FragmentManagerImpl.attachController(FragmentManager.java:2967)
at android.app.FragmentController.attachHost(FragmentController.java:86)
at android.app.Activity.attach(Activity.java:7366)
/app/build/intermediates/transforms/MultiLanguages/debug/47. jar as removed. Output mapping should
应该是插件混淆问题
FAILURE: Build failed with an exception.
This feature requires ASM6
Failed to resolve: com.github.jokar:multi-languages:0.0.4
我在AndroidManifest.xml文件中配置SplashActivity的theme:
AndroidManifest.xml
<activity
android:name="com.youngwu.test.SplashActivity"
android:resizeableActivity="true"
android:screenOrientation="portrait"
android:theme="@style/splashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
styles.xml
<style name="splashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/welcome_layer</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
/drawable/welcome_layer.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/common_app_welcome_background" />
</item>
<item android:bottom="75dp">
<bitmap
android:gravity="bottom"
android:src="@drawable/common_startup_logo" />
</item>
<item
android:bottom="66dp"
android:gravity="center">
<bitmap
android:gravity="center"
android:src="@drawable/common_startup_slogan" />
</item>
</layer-list>
分别在drawable-xxhdpi文件夹下面放置了:common_app_welcome_background.webp,common_startup_logo.webp,common_startup_slogan.webp。
然后在drawable-zh-rCN-xxhdpi和drawable-zh-rTW-xxhdpi文件夹下面各放置了:common_startup_slogan.webp。
目的是想在英文、简体、繁体下面各自显示不一样的slogan,但是发现如果在Application的onCreate()方法里面执行时间较长,比如debug包可能2.5s,就会出现theme先走系统的Locale然后Application的onCreate()方法执行完后,到了SplashActivity界面出现才显示了以APP内部设置的Locale方案的theme。也就是觉得APP内部配置的Locale方案仍然还没有做到快于系统决定首先显示APP theme的时机。
具体的Demo代码,我写在这里:https://github.com/yinyangwu/Internationalization.git
Hey, I encountered an error when integrating the Firebase pref library. It's showing a
Execution failed for task ':app:transformClassesWithMultiLanguagesForDebug'.
java.lang.SecurityException: SHA-256 digest error for org/conscrypt/AbstractConscryptEngine.class
老哥,我APP的默认语言是英文,手机的系统语言是简体中文。APP设置跟随系统后,APP显示简体中文--正常。但是偶尔用着用着会出现APP内的语言变成了英文,重启APP又恢复了简体中文。这种情况出现了大概3次
如题 接入依赖以后 我运行项目就会报错
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithInstantRunForDebug'
java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.IllegalStateException: java.lang.IllegalStateException
不知道有没有人遇到 我不知道怎么解决
androidx.appcompat:appcompat:1.1.0
设置下边夜间模式AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
这个包 1.0.2 没问题 1.1.0会错乱,情况就是代码设置的可以,xml里直接设置的无效
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); 白天模式下就是正常的
你好,我在项目中使用了这个开源库
但是,有个问题想问一下
plugin的作用是什么,第三方库语言变换么
我之前在使用的过程中就出现集成第三方SDK导致Service创建失败,找了好久才发现是插件的原因,看到#7 升级了插件才解决了问题
所以,希望可以将文档写的更详细些,把改变应用内语言和第三方库分离开,毕竟有些第三方库并不能了解的很清楚,提个小建议
非常感谢开源这个库,这个库是目前来说,比较新并且star也算比较高的,希望能维护的越来越好
如果需要帮助一起维护这个库的话,我也希望可以尽自己的一份力
加油⛽️
Execution failed for task ':app:transformClassesWithMultiLanguagesForDebug'.
@OverRide
protected void attachBaseContext(Context base) {
MultiDex.install(this);
// 保存系统选择语言
LocalManagerUtil.INSTANCE.saveSystemCurrentLanguage();
super.attachBaseContext(LocalManageUtils.setLocal(base));
}
华为荣耀9、小米手机语言切换语言后部分页面会自动变为简体中文 ,首页MainActivity的tab导航+3个Fragment,其中在切换到第三个fragment的时候,此页面自动换为显示简体,此fragmen中打印日志为选中的语言但切换显示始终为跟随系统语言,vivo xplay6手机切换一切正常,即时在basefragment中的重写onHiddenChanged 方法中再次设置LocalManageUtil.setApplicationLanguage(context) 也没用,请问如何解决?
Android target SDK 是Android13:
=============================================================================
#Android SDK依赖
TARGET_SDK_VERSION=33
MIN_SDK_VERSION=21
COMPILE_SDK_VERSION=33
KOTLIN_COROUTINES_VERSION=1.6.1
=============================================================================
gradle tools的版本:
=============================================================================
classpath 'com.android.tools.build:gradle:7.3.1'
classpath "com.github.jokar:multi-languages.plugin:0.1.5"
=============================================================================
gradle.properties文件中的部分内容:
=============================================================================
#gradle提速相关
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=2048m -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.caching=true
#优化kotlin
kotlin.incremental=true
kotlin.incremental.java=true
kotlin.incremental.js=true
kotlin.caching.enabled=true
kotlin.code.style=official
#优化kapt
kapt.incremental.apt=true
kapt.include.compile.classpath=false
#android项目提速相关
android.databinding.incremental=true
android.injected.testOnly=false
android.useAndroidX=true
android.enableJetifier=true
android.enableBuildScriptClasspathCheck=false
android.suppressUnsupportedCompileSdk=33
=============================================================================
执行assembleOfficialRelease命令,编译过程中的部分日志:
=============================================================================
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/853.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/853.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/853.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/853.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/853.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow. In later version of R8, the method may be assumed not reachable.","sources":[{"file":"/Users/yinyangwu/AndroidStudioProjects/miya/app/build/intermediates/transforms/MultiLanguages/official/release/651.jar"}],"tool":"R8"}
File system event consumer thread stopped due to exception
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.base/sun.nio.fs.UnixPath.encode(UnixPath.java:130)
at java.base/sun.nio.fs.UnixPath.(UnixPath.java:69)
at java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:279)
at java.base/java.nio.file.Path.of(Path.java:147)
at java.base/java.nio.file.Paths.get(Paths.java:69)
at org.gradle.internal.watch.registry.impl.DefaultFileWatcherRegistry$1.handleChangeEvent(DefaultFileWatcherRegistry.java:89)
at net.rubygrapefruit.platform.internal.jni.AbstractFileEventFunctions$ChangeEvent.handleEvent(AbstractFileEventFunctions.java:266)
at org.gradle.internal.watch.registry.impl.DefaultFileWatcherRegistry.lambda$createAndStartEventConsumerThread$0(DefaultFileWatcherRegistry.java:84)
at org.gradle.internal.watch.registry.impl.DefaultFileWatcherRegistry$$Lambda$153/0x0000000800355c40.run(Unknown Source)
at java.base/java.lang.Thread.run(Thread.java:829)
Exception in thread "Daemon client event forwarder" java.lang.OutOfMemoryError: GC overhead limit exceeded
Problem in daemon expiration check
java.lang.OutOfMemoryError: GC overhead limit exceeded
Task :app:minifyOfficialReleaseWithR8
AGPBI: {"kind":"error","text":"java.lang.OutOfMemoryError: GC overhead limit exceeded","sources":[{}],"tool":"R8"}
java.lang.OutOfMemoryError: GC overhead limit exceeded
Task :app:minifyOfficialReleaseWithR8 FAILED
=============================================================================
初步怀疑是multi-languages插件中当前的ASM写法存在大量的内存泄露问题,导致了内存OOM了,麻烦大佬抽时间能看看吗?
tvValue.setText(getString(R.string.tv3_value)); //翻译不成功
tvValue2.setText(getApplicationContext().getString(R.string.tv3_value)); //翻译成功
根据文档接入,但是直接赋值翻译不了
继承 Service
错误信息:
2019-10-10 15:28:18.438 31956-31956/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: gqz.pager, PID: 31956
java.lang.NoSuchMethodError: No super method attachBaseContext(Landroid/content/Context;)V in class Landroid/content/ContextWrapper; or its super classes (declaration of 'android.content.ContextWrapper' appears in /system/framework/framework.jar)
at gqz.pager.service.MyService.attachBaseContext(Unknown Source:4)
at android.app.Service.attach(Service.java:761)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3337)
at android.app.ActivityThread.-wrap4(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
报错
java.lang.VerifyError: Verifier rejected class com.github.jokar.multilanguages.MyServices due to bad method void com.github.jokar.multilanguages.MyServices.attachBaseContext(android.content.Context)
是不是插件注入不支持Google Play的aab架构
切换阿语后,动态设置的setText都没问题,但是在xml里面写的都不行,但是这个demo没问题,我的项目就是不行,都是一样的代码
父类activity 使用kotlin 编写 无法进行编译 将会 skip BaseActivity
请问这个只能重启首页才能实现吗?不想重启首页,有没有实现方式呢?
+-----------------------------------------------------------------------------+
| Multi Languages Plugin START |
+-----------------------------------------------------------------------------+
+------------------------isIncremental:false----------------------------------+
add attach method to com/tianxin/downloadcenter/backgroundprocess/RemoteBackgroundProcess
add attach method to com/tianxin/downloadcenter/backgroundprocess/processprotecter/ForegroundAssistService
add attach method to com/tcloud/core/connect/mars/service/MarsServiceNative
add attach method to com/tcloud/core/ui/baseview/SupportActivity
add applyOverrideConfiguration method to com/tcloud/core/ui/baseview/SupportActivity
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithMultiLanguagesForGoogleDebug'.
> Class versions V1_5 or less must use F_NEW frames.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 2m 1s
657 actionable tasks: 444 executed, 213 from cache
我使用的gradle版本如下:
classpath 'com.android.tools.build:gradle:4.0.2'
我使用的multi-languages版本如下:
classpath 'com.github.jokar:multi-languages.plugin:0.1.1'
AGPBI: {"kind":"error","text":"Illegal invoke-super to void android.app.IntentService.attachBaseContext(android.content.Context) from class com.google.firebase.components.ComponentDiscoveryService","sources":[{"file":"F:\\\app\build\intermediates\transforms\MultiLanguages\release\42.jar"}],"tool":"D8"}
Task :app:transformClassesAndResourcesWithR8ForRelease FAILED
FAILURE: Build failed with an exception.
com.android.tools.r8.CompilationFailedException: Compilation failed to complete
请问这种是什么情况???
Android Studio 3.5
Gradle 3.4.2
App的语言是更改成功了,但是第三方的SDK和控件的语言依然和系统一致,这是什么原因?按理说在Application的attachBaseContext(Context base)方法中设置的应该可以更改第三方的啊?
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.