void BuildDynamicRefTable() {
    package_groups_.clear();
//    package_ids_.fill(0xff);
    for (int i = 0; i < package_ids_.length; i++) {
      package_ids_[i] = (byte) 0xff;
    }

    // 0x01 is reserved for the android package.
    int next_package_id = 0x02;
    final int apk_assets_count = apk_assets_.size();
    for (int i = 0; i < apk_assets_count; i++) {
      final LoadedArsc loaded_arsc = apk_assets_.get(i).GetLoadedArsc();
//      for (final std.unique_ptr<final LoadedPackage>& package_ :
      for (final LoadedPackage package_ :
          loaded_arsc.GetPackages()) {
        // Get the package ID or assign one if a shared library.
        int package_id;
        if (package_.IsDynamic()) {
          package_id = next_package_id++;
        } else {
          package_id = package_.GetPackageId();
        }

        // Add the mapping for package ID to index if not present.
        byte idx = package_ids_[package_id];
        if (idx == (byte) 0xff) {
          // package_ids_[package_id] = idx = static_cast<byte>(package_groups_.size());
          package_ids_[package_id] = idx = (byte) package_groups_.size();
          // DynamicRefTable& ref_table = package_groups_.back().dynamic_ref_table;
          // ref_table.mAssignedPackageId = package_id;
          // ref_table.mAppAsLib = package->IsDynamic() && package->GetPackageId() == 0x7f;
          DynamicRefTable ref_table = new DynamicRefTable((byte) package_id,
              package_.IsDynamic() && package_.GetPackageId() == 0x7f);
          PackageGroup newPackageGroup = new PackageGroup();
          newPackageGroup.dynamic_ref_table = ref_table;

          package_groups_.add(newPackageGroup);
        }
        PackageGroup package_group = package_groups_.get(idx);

        // Add the package and to the set of packages with the same ID.
        // package_group->packages_.push_back(ConfiguredPackage{package.get(), {}});
        // package_group.cookies_.push_back(static_cast<ApkAssetsCookie>(i));
        package_group.packages_.add(new ConfiguredPackage(package_));
        package_group.cookies_.add(ApkAssetsCookie.forInt(i));

        // Add the package name . build time ID mappings.
        for (final DynamicPackageEntry entry : package_.GetDynamicPackageMap()) {
          // String package_name(entry.package_name.c_str(), entry.package_name.size());
          package_group.dynamic_ref_table.mEntries.put(
              entry.package_name, (byte) entry.package_id);
        }
      }
    }

    // Now assign the runtime IDs so that we have a build-time to runtime ID map.
    for (PackageGroup iter : package_groups_) {
      String package_name = iter.packages_.get(0).loaded_package_.GetPackageName();
      for (PackageGroup iter2 : package_groups_) {
        iter2.dynamic_ref_table.addMapping(package_name,
            iter.dynamic_ref_table.mAssignedPackageId);
      }
    }
  }
void BuildDynamicRefTable() {
    package_groups_.clear();

    for (int i = 0; i < package_ids_.length; i++) {
      package_ids_[i] = (byte) 0xff;
    }

    
    int next_package_id = 0x02;
    final int apk_assets_count = apk_assets_.size();
    for (int i = 0; i < apk_assets_count; i++) {
      final LoadedArsc loaded_arsc = apk_assets_.get(i).GetLoadedArsc();

      for (final LoadedPackage package_ :
          loaded_arsc.GetPackages()) {
        
        int package_id;
        if (package_.IsDynamic()) {
          package_id = next_package_id++;
        } else {
          package_id = package_.GetPackageId();
        }

        
        byte idx = package_ids_[package_id];
        if (idx == (byte) 0xff) {
          
          package_ids_[package_id] = idx = (byte) package_groups_.size();
          
          
          
          DynamicRefTable ref_table = new DynamicRefTable((byte) package_id,
              package_.IsDynamic() && package_.GetPackageId() == 0x7f);
          PackageGroup newPackageGroup = new PackageGroup();
          newPackageGroup.dynamic_ref_table = ref_table;

          package_groups_.add(newPackageGroup);
        }
        PackageGroup package_group = package_groups_.get(idx);

        
        
        
        package_group.packages_.add(new ConfiguredPackage(package_));
        package_group.cookies_.add(ApkAssetsCookie.forInt(i));

        
        for (final DynamicPackageEntry entry : package_.GetDynamicPackageMap()) {
          
          package_group.dynamic_ref_table.mEntries.put(
              entry.package_name, (byte) entry.package_id);
        }
      }
    }

    
    for (PackageGroup iter : package_groups_) {
      String package_name = iter.packages_.get(0).loaded_package_.GetPackageName();
      for (PackageGroup iter2 : package_groups_) {
        iter2.dynamic_ref_table.addMapping(package_name,
            iter.dynamic_ref_table.mAssignedPackageId);
      }
    }
  }
void BuildDynamicRefTable ( ) { package_groups_ . clear ( ) ; //    package_ids_.fill(0xff); for ( int i = 0 ; i < package_ids_ . length ; i ++ ) { package_ids_ [ i ] = ( byte ) 0xff ; } // 0x01 is reserved for the android package. int next_package_id = 0x02 ; final int apk_assets_count = apk_assets_ . size ( ) ; for ( int i = 0 ; i < apk_assets_count ; i ++ ) { final LoadedArsc loaded_arsc = apk_assets_ . get ( i ) . GetLoadedArsc ( ) ; //      for (final std.unique_ptr<final LoadedPackage>& package_ : for ( final LoadedPackage package_ : loaded_arsc . GetPackages ( ) ) { // Get the package ID or assign one if a shared library. int package_id ; if ( package_ . IsDynamic ( ) ) { package_id = next_package_id ++ ; } else { package_id = package_ . GetPackageId ( ) ; } // Add the mapping for package ID to index if not present. byte idx = package_ids_ [ package_id ] ; if ( idx == ( byte ) 0xff ) { // package_ids_[package_id] = idx = static_cast<byte>(package_groups_.size()); package_ids_ [ package_id ] = idx = ( byte ) package_groups_ . size ( ) ; // DynamicRefTable& ref_table = package_groups_.back().dynamic_ref_table; // ref_table.mAssignedPackageId = package_id; // ref_table.mAppAsLib = package->IsDynamic() && package->GetPackageId() == 0x7f; DynamicRefTable ref_table = new DynamicRefTable ( ( byte ) package_id , package_ . IsDynamic ( ) && package_ . GetPackageId ( ) == 0x7f ) ; PackageGroup newPackageGroup = new PackageGroup ( ) ; newPackageGroup . dynamic_ref_table = ref_table ; package_groups_ . add ( newPackageGroup ) ; } PackageGroup package_group = package_groups_ . get ( idx ) ; // Add the package and to the set of packages with the same ID. // package_group->packages_.push_back(ConfiguredPackage{package.get(), {}}); // package_group.cookies_.push_back(static_cast<ApkAssetsCookie>(i)); package_group . packages_ . add ( new ConfiguredPackage ( package_ ) ) ; package_group . cookies_ . add ( ApkAssetsCookie . forInt ( i ) ) ; // Add the package name . build time ID mappings. for ( final DynamicPackageEntry entry : package_ . GetDynamicPackageMap ( ) ) { // String package_name(entry.package_name.c_str(), entry.package_name.size()); package_group . dynamic_ref_table . mEntries . put ( entry . package_name , ( byte ) entry . package_id ) ; } } } // Now assign the runtime IDs so that we have a build-time to runtime ID map. for ( PackageGroup iter : package_groups_ ) { String package_name = iter . packages_ . get ( 0 ) . loaded_package_ . GetPackageName ( ) ; for ( PackageGroup iter2 : package_groups_ ) { iter2 . dynamic_ref_table . addMapping ( package_name , iter . dynamic_ref_table . mAssignedPackageId ) ; } } }
void BuildDynamicRefTable();
void BuildDynamicRefTable () ;