Loading tools/aapt2/java/JavaClassGenerator.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -428,7 +428,7 @@ void JavaClassGenerator::ProcessStyleable(const ResourceNameRef& name, const Res out_rewrite_method->AppendStatement( StringPrintf(" if ((styleable.%s[i] & 0xff000000) == 0) {", array_field_name.data())); out_rewrite_method->AppendStatement( StringPrintf(" styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | (p << 24);", StringPrintf(" styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | packageIdBits;", array_field_name.data(), array_field_name.data())); out_rewrite_method->AppendStatement(" }"); out_rewrite_method->AppendStatement("}"); Loading Loading @@ -487,9 +487,9 @@ void JavaClassGenerator::ProcessResource(const ResourceNameRef& name, const Reso if (out_rewrite_method != nullptr) { const StringPiece& type_str = to_string(name.type); out_rewrite_method->AppendStatement(StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | (p << 24);", type_str.data(), field_name.data(), type_str.data(), field_name.data())); out_rewrite_method->AppendStatement( StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | packageIdBits;", type_str.data(), field_name.data(), type_str.data(), field_name.data())); } } Loading Loading @@ -599,6 +599,7 @@ bool JavaClassGenerator::Generate(const StringPiece& package_name_to_generate, rewrite_method->AppendStatement( StringPrintf("%s.R.onResourcesLoaded(p);", package_to_callback.data())); } rewrite_method->AppendStatement("final int packageIdBits = p << 24;"); } for (const auto& package : table_->packages) { Loading tools/aapt2/java/JavaClassGenerator_test.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -522,9 +522,15 @@ TEST(JavaClassGeneratorTest, GenerateOnResourcesLoadedCallbackForSharedLibrary) ASSERT_TRUE(generator.Generate("android", &out)); out.Flush(); EXPECT_THAT(output, HasSubstr("void onResourcesLoaded")); EXPECT_THAT(output, HasSubstr("com.foo.R.onResourcesLoaded")); EXPECT_THAT(output, HasSubstr("com.boo.R.onResourcesLoaded")); EXPECT_THAT(output, HasSubstr( R"( public static void onResourcesLoaded(int p) { com.foo.R.onResourcesLoaded(p); com.boo.R.onResourcesLoaded(p); final int packageIdBits = p << 24; attr.foo = (attr.foo & 0x00ffffff) | packageIdBits; id.foo = (id.foo & 0x00ffffff) | packageIdBits; style.foo = (style.foo & 0x00ffffff) | packageIdBits; })")); } TEST(JavaClassGeneratorTest, OnlyGenerateRText) { Loading Loading
tools/aapt2/java/JavaClassGenerator.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -428,7 +428,7 @@ void JavaClassGenerator::ProcessStyleable(const ResourceNameRef& name, const Res out_rewrite_method->AppendStatement( StringPrintf(" if ((styleable.%s[i] & 0xff000000) == 0) {", array_field_name.data())); out_rewrite_method->AppendStatement( StringPrintf(" styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | (p << 24);", StringPrintf(" styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | packageIdBits;", array_field_name.data(), array_field_name.data())); out_rewrite_method->AppendStatement(" }"); out_rewrite_method->AppendStatement("}"); Loading Loading @@ -487,9 +487,9 @@ void JavaClassGenerator::ProcessResource(const ResourceNameRef& name, const Reso if (out_rewrite_method != nullptr) { const StringPiece& type_str = to_string(name.type); out_rewrite_method->AppendStatement(StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | (p << 24);", type_str.data(), field_name.data(), type_str.data(), field_name.data())); out_rewrite_method->AppendStatement( StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | packageIdBits;", type_str.data(), field_name.data(), type_str.data(), field_name.data())); } } Loading Loading @@ -599,6 +599,7 @@ bool JavaClassGenerator::Generate(const StringPiece& package_name_to_generate, rewrite_method->AppendStatement( StringPrintf("%s.R.onResourcesLoaded(p);", package_to_callback.data())); } rewrite_method->AppendStatement("final int packageIdBits = p << 24;"); } for (const auto& package : table_->packages) { Loading
tools/aapt2/java/JavaClassGenerator_test.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -522,9 +522,15 @@ TEST(JavaClassGeneratorTest, GenerateOnResourcesLoadedCallbackForSharedLibrary) ASSERT_TRUE(generator.Generate("android", &out)); out.Flush(); EXPECT_THAT(output, HasSubstr("void onResourcesLoaded")); EXPECT_THAT(output, HasSubstr("com.foo.R.onResourcesLoaded")); EXPECT_THAT(output, HasSubstr("com.boo.R.onResourcesLoaded")); EXPECT_THAT(output, HasSubstr( R"( public static void onResourcesLoaded(int p) { com.foo.R.onResourcesLoaded(p); com.boo.R.onResourcesLoaded(p); final int packageIdBits = p << 24; attr.foo = (attr.foo & 0x00ffffff) | packageIdBits; id.foo = (id.foo & 0x00ffffff) | packageIdBits; style.foo = (style.foo & 0x00ffffff) | packageIdBits; })")); } TEST(JavaClassGeneratorTest, OnlyGenerateRText) { Loading