mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-04-28 12:17:57 +03:00
fixes for android-8 rebase of dalvik_standalone
detect bootclasspath jar path automatically from dalvik_standalone
This commit is contained in:
parent
55098136dc
commit
0baddd9fe8
7 changed files with 34 additions and 25 deletions
|
@ -1,7 +1,6 @@
|
|||
#### directory structure
|
||||
`src/arsc_parser/` - Java .arsc parser I found somewhere, with fixes (should eventually get replaced by C code)
|
||||
`doc/` - documentation
|
||||
`jars/` - contains core-libart-hostdex_classes.jar which we use as compile-time bootclasspath (TODO: have art-dev package install this system-wide)
|
||||
`src/api-impl/` - Java code implementing the android APIs
|
||||
`src/api-impl-jni/` - C code implementing things which it doesn't make sense to do in Java (ideally this would be most things)
|
||||
`src/libandroid/` - C code implementing `libandroid.so` (this is needed by most JNI libs which come with android apps)
|
||||
|
|
10
meson.build
10
meson.build
|
@ -6,6 +6,7 @@ if javac.version() != '1.8.0'
|
|||
endif
|
||||
|
||||
gnome = import('gnome')
|
||||
fs = import('fs')
|
||||
|
||||
incdir_dep = declare_dependency(include_directories: '.')
|
||||
add_project_dependencies(incdir_dep, language: 'c')
|
||||
|
@ -21,6 +22,15 @@ libart_dep = [
|
|||
libdl_bio_dep = [
|
||||
cc.find_library('dl_bio')
|
||||
]
|
||||
if fs.is_file('/usr' / get_option('libdir') / 'java/core-all_classes.jar')
|
||||
bootclasspath = '/usr' / get_option('libdir') / 'java/core-all_classes.jar'
|
||||
elif fs.is_file('/usr/local' / get_option('libdir') / 'java/core-all_classes.jar')
|
||||
bootclasspath = '/usr/local' / get_option('libdir') / 'java/core-all_classes.jar'
|
||||
elif fs.is_file(get_option('prefix') / get_option('libdir') / 'java/core-all_classes.jar')
|
||||
bootclasspath = get_option('prefix') / get_option('libdir') / 'java/core-all_classes.jar'
|
||||
else
|
||||
error('bootclasspath "core-all_classes.jar" not found')
|
||||
endif
|
||||
|
||||
marshal_files = gnome.genmarshal('marshal',
|
||||
sources: 'src/api-impl-jni/widgets/marshal.list',
|
||||
|
|
|
@ -109,7 +109,7 @@ public class ManifestDigest {
|
|||
final int N = mDigest.length;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final byte b = mDigest[i];
|
||||
IntegralToString.appendByteAsHex(sb, b, false);
|
||||
sb.append(String.format("%02x", b));
|
||||
sb.append(',');
|
||||
}
|
||||
sb.append('}');
|
||||
|
|
|
@ -43,7 +43,7 @@ import java.io.InputStream;
|
|||
import java.lang.ref.WeakReference;
|
||||
import java.util.Locale;
|
||||
|
||||
import libcore.icu.NativePluralRules;
|
||||
import android.icu.text.PluralRules;
|
||||
|
||||
class Movie {}
|
||||
class Drawable { class ConstantState {} }
|
||||
|
@ -126,7 +126,7 @@ public class Resources {
|
|||
/*package*/ final AssetManager mAssets;
|
||||
private final Configuration mConfiguration = new Configuration();
|
||||
/*package*/ final DisplayMetrics mMetrics = new DisplayMetrics();
|
||||
private NativePluralRules mPluralRule;
|
||||
private PluralRules mPluralRule;
|
||||
|
||||
private CompatibilityInfo mCompatibilityInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
|
||||
private WeakReference<IBinder> mToken;
|
||||
|
@ -274,9 +274,9 @@ public class Resources {
|
|||
* possibly styled text information.
|
||||
*/
|
||||
public CharSequence getQuantityText(int id, int quantity) throws NotFoundException {
|
||||
NativePluralRules rule = getPluralRule();
|
||||
PluralRules rule = getPluralRule();
|
||||
CharSequence res = mAssets.getResourceBagText(id,
|
||||
attrForQuantityCode(rule.quantityForInt(quantity)));
|
||||
attrForQuantityCode(rule.select(quantity)));
|
||||
if (res != null) {
|
||||
return res;
|
||||
}
|
||||
|
@ -286,36 +286,36 @@ public class Resources {
|
|||
}
|
||||
throw new NotFoundException("Plural resource ID #0x" + Integer.toHexString(id)
|
||||
+ " quantity=" + quantity
|
||||
+ " item=" + stringForQuantityCode(rule.quantityForInt(quantity)));
|
||||
+ " item=" + rule.select(quantity));
|
||||
}
|
||||
|
||||
private NativePluralRules getPluralRule() {
|
||||
private PluralRules getPluralRule() {
|
||||
synchronized (sSync) {
|
||||
if (mPluralRule == null) {
|
||||
mPluralRule = NativePluralRules.forLocale(mConfiguration.locale);
|
||||
mPluralRule = PluralRules.forLocale(mConfiguration.locale);
|
||||
}
|
||||
return mPluralRule;
|
||||
}
|
||||
}
|
||||
|
||||
private static int attrForQuantityCode(int quantityCode) {
|
||||
private static int attrForQuantityCode(String quantityCode) {
|
||||
switch (quantityCode) {
|
||||
case NativePluralRules.ZERO: return 0x01000005;
|
||||
case NativePluralRules.ONE: return 0x01000006;
|
||||
case NativePluralRules.TWO: return 0x01000007;
|
||||
case NativePluralRules.FEW: return 0x01000008;
|
||||
case NativePluralRules.MANY: return 0x01000009;
|
||||
case PluralRules.KEYWORD_ZERO: return 0x01000005;
|
||||
case PluralRules.KEYWORD_ONE: return 0x01000006;
|
||||
case PluralRules.KEYWORD_TWO: return 0x01000007;
|
||||
case PluralRules.KEYWORD_FEW: return 0x01000008;
|
||||
case PluralRules.KEYWORD_MANY: return 0x01000009;
|
||||
default: return ID_OTHER;
|
||||
}
|
||||
}
|
||||
|
||||
private static String stringForQuantityCode(int quantityCode) {
|
||||
private static String stringForQuantityCode(String quantityCode) {
|
||||
switch (quantityCode) {
|
||||
case NativePluralRules.ZERO: return "zero";
|
||||
case NativePluralRules.ONE: return "one";
|
||||
case NativePluralRules.TWO: return "two";
|
||||
case NativePluralRules.FEW: return "few";
|
||||
case NativePluralRules.MANY: return "many";
|
||||
case PluralRules.KEYWORD_ZERO: return "zero";
|
||||
case PluralRules.KEYWORD_ONE: return "one";
|
||||
case PluralRules.KEYWORD_TWO: return "two";
|
||||
case PluralRules.KEYWORD_FEW: return "few";
|
||||
case PluralRules.KEYWORD_MANY: return "many";
|
||||
default: return "other";
|
||||
}
|
||||
}
|
||||
|
@ -1623,7 +1623,7 @@ public class Resources {
|
|||
}
|
||||
synchronized (sSync) {
|
||||
if (mPluralRule != null) {
|
||||
mPluralRule = NativePluralRules.forLocale(config.locale);
|
||||
mPluralRule = PluralRules.forLocale(config.locale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -249,7 +249,7 @@ hax_jar = jar('hax', [
|
|||
declare_dependency(link_with: hax_arsc_parser_jar)
|
||||
],
|
||||
java_args: [
|
||||
'-bootclasspath', join_paths(dir_base, 'jars/core-libart-hostdex_classes.jar'),
|
||||
'-bootclasspath', bootclasspath,
|
||||
'-source', '1.7', '-target', '1.7',
|
||||
'-h', join_paths(dir_base, 'src/api-impl-jni/generated_headers')
|
||||
])
|
||||
|
|
|
@ -20,7 +20,7 @@ hax_arsc_parser_jar = jar('hax_arsc_parser', [
|
|||
'com/hq/arscresourcesparser/stream/PositionInputStream.java'
|
||||
],
|
||||
java_args: [
|
||||
'-bootclasspath', join_paths(dir_base, 'jars/core-libart-hostdex_classes.jar'),
|
||||
'-bootclasspath', bootclasspath,
|
||||
'-source', '1.7', '-target', '1.7'
|
||||
])
|
||||
|
||||
|
|
|
@ -296,7 +296,7 @@ static void open(GtkApplication *app, GFile** files, gint nfiles, const gchar* h
|
|||
|
||||
// some apps need the apk path since they directly read their apk
|
||||
jclass context_class = (*env)->FindClass(env, "android/content/Context");
|
||||
_SET_STATIC_OBJ_FIELD(context_class, "apk_path", "java/lang/String", _JSTRING(apk_classpath));
|
||||
_SET_STATIC_OBJ_FIELD(context_class, "apk_path", "Ljava/lang/String;", _JSTRING(apk_classpath));
|
||||
|
||||
FIXME__WIDTH = d->window_width;
|
||||
FIXME__HEIGHT = d->window_height;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue