convert default_repo.xml to more flexible format
This is a step towards supporting easy whitelabeling, using gradle flavors. This allows the whitelabel version to set the default repos just by making their own default_repos.xml in app/src/whitelabel/res/values. That one will then override the built-in F-Droid one.
This commit is contained in:
parent
28198dddb4
commit
d34a1285e8
@ -229,55 +229,29 @@ class DBHelper extends SQLiteOpenHelper {
|
||||
db.execSQL(CREATE_TABLE_APP_PREFS);
|
||||
ensureIndexes(db);
|
||||
|
||||
insertRepo(
|
||||
db,
|
||||
context.getString(R.string.fdroid_repo_name),
|
||||
context.getString(R.string.fdroid_repo_address),
|
||||
context.getString(R.string.fdroid_repo_description),
|
||||
context.getString(R.string.fdroid_repo_pubkey),
|
||||
context.getResources().getInteger(R.integer.fdroid_repo_version),
|
||||
context.getResources().getInteger(R.integer.fdroid_repo_inuse),
|
||||
context.getResources().getInteger(R.integer.fdroid_repo_priority)
|
||||
);
|
||||
|
||||
insertRepo(
|
||||
db,
|
||||
context.getString(R.string.fdroid_archive_name),
|
||||
context.getString(R.string.fdroid_archive_address),
|
||||
context.getString(R.string.fdroid_archive_description),
|
||||
context.getString(R.string.fdroid_archive_pubkey),
|
||||
context.getResources().getInteger(R.integer.fdroid_archive_version),
|
||||
context.getResources().getInteger(R.integer.fdroid_archive_inuse),
|
||||
context.getResources().getInteger(R.integer.fdroid_archive_priority)
|
||||
);
|
||||
|
||||
insertRepo(
|
||||
db,
|
||||
context.getString(R.string.guardianproject_repo_name),
|
||||
context.getString(R.string.guardianproject_repo_address),
|
||||
context.getString(R.string.guardianproject_repo_description),
|
||||
context.getString(R.string.guardianproject_repo_pubkey),
|
||||
context.getResources().getInteger(R.integer.guardianproject_repo_version),
|
||||
context.getResources().getInteger(R.integer.guardianproject_repo_inuse),
|
||||
context.getResources().getInteger(R.integer.guardianproject_repo_priority)
|
||||
);
|
||||
|
||||
insertRepo(
|
||||
db,
|
||||
context.getString(R.string.guardianproject_archive_name),
|
||||
context.getString(R.string.guardianproject_archive_address),
|
||||
context.getString(R.string.guardianproject_archive_description),
|
||||
context.getString(R.string.guardianproject_archive_pubkey),
|
||||
context.getResources().getInteger(R.integer.guardianproject_archive_version),
|
||||
context.getResources().getInteger(R.integer.guardianproject_archive_inuse),
|
||||
context.getResources().getInteger(R.integer.guardianproject_archive_priority)
|
||||
);
|
||||
String[] defaultRepos = context.getResources().getStringArray(R.array.default_repos);
|
||||
if (defaultRepos.length % REPO_XML_ARG_COUNT != 0) {
|
||||
throw new IllegalArgumentException(
|
||||
"default_repo.xml array does not have the right number of elements");
|
||||
}
|
||||
for (int i = 0; i < defaultRepos.length / REPO_XML_ARG_COUNT; i++) {
|
||||
int offset = i * REPO_XML_ARG_COUNT;
|
||||
insertRepo(
|
||||
db,
|
||||
defaultRepos[offset], // name
|
||||
defaultRepos[offset + 1], // address
|
||||
defaultRepos[offset + 2], // description
|
||||
defaultRepos[offset + 3], // version
|
||||
defaultRepos[offset + 4], // enabled
|
||||
defaultRepos[offset + 5], // priority
|
||||
defaultRepos[offset + 6] // pubkey
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void insertRepo(SQLiteDatabase db, String name, String address,
|
||||
String description, String pubKey, int version, int inUse,
|
||||
int priority) {
|
||||
|
||||
String description, String version, String enabled,
|
||||
String priority, String pubKey) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(RepoTable.Cols.ADDRESS, address);
|
||||
values.put(RepoTable.Cols.NAME, name);
|
||||
@ -285,9 +259,9 @@ class DBHelper extends SQLiteOpenHelper {
|
||||
values.put(RepoTable.Cols.SIGNING_CERT, pubKey);
|
||||
values.put(RepoTable.Cols.FINGERPRINT, Utils.calcFingerprint(pubKey));
|
||||
values.put(RepoTable.Cols.MAX_AGE, 0);
|
||||
values.put(RepoTable.Cols.VERSION, version);
|
||||
values.put(RepoTable.Cols.IN_USE, inUse);
|
||||
values.put(RepoTable.Cols.PRIORITY, priority);
|
||||
values.put(RepoTable.Cols.VERSION, Utils.parseInt(version, 0));
|
||||
values.put(RepoTable.Cols.IN_USE, Utils.parseInt(enabled, 0));
|
||||
values.put(RepoTable.Cols.PRIORITY, Utils.parseInt(priority, Integer.MAX_VALUE));
|
||||
values.put(RepoTable.Cols.LAST_ETAG, (String) null);
|
||||
values.put(RepoTable.Cols.TIMESTAMP, 0);
|
||||
|
||||
@ -542,15 +516,16 @@ class DBHelper extends SQLiteOpenHelper {
|
||||
if (!descriptionExists) {
|
||||
db.execSQL("alter table " + RepoTable.NAME + " add column " + RepoTable.Cols.DESCRIPTION + " text");
|
||||
}
|
||||
insertNameAndDescription(db, R.string.fdroid_repo_address,
|
||||
R.string.fdroid_repo_name, R.string.fdroid_repo_description);
|
||||
insertNameAndDescription(db, R.string.fdroid_archive_address,
|
||||
R.string.fdroid_archive_name, R.string.fdroid_archive_description);
|
||||
insertNameAndDescription(db, R.string.guardianproject_repo_address,
|
||||
R.string.guardianproject_repo_name, R.string.guardianproject_repo_description);
|
||||
insertNameAndDescription(db, R.string.guardianproject_archive_address,
|
||||
R.string.guardianproject_archive_name, R.string.guardianproject_archive_description);
|
||||
|
||||
String[] defaultRepos = context.getResources().getStringArray(R.array.default_repos);
|
||||
for (int i = 0; i < defaultRepos.length / REPO_XML_ARG_COUNT; i++) {
|
||||
int offset = i * REPO_XML_ARG_COUNT;
|
||||
insertNameAndDescription(db,
|
||||
defaultRepos[offset], // name
|
||||
defaultRepos[offset + 1], // address
|
||||
defaultRepos[offset + 2] // description
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,48 +1,86 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- 1 - https://f-droid.org/repo -->
|
||||
<string name="fdroid_repo_name" formatted="false" translatable="false">F-Droid</string>
|
||||
<string-array name="default_repos">
|
||||
|
||||
<integer name="fdroid_repo_version">13</integer>
|
||||
<integer name="fdroid_repo_inuse">1</integer>
|
||||
<integer name="fdroid_repo_priority">10</integer>
|
||||
<!-- name -->
|
||||
<item>F-Droid</item>
|
||||
<!-- address -->
|
||||
<item>https://f-droid.org/repo</item>
|
||||
<!-- description -->
|
||||
<item>The official F-Droid repository. Applications in this repository are mostly built
|
||||
directory from the source code. Some are official binaries built by the original
|
||||
application developers - these will be replaced by source-built versions over time.
|
||||
</item>
|
||||
<!-- version -->
|
||||
<item>13</item>
|
||||
<!-- enabled -->
|
||||
<item>1</item>
|
||||
<!-- priority -->
|
||||
<item>10</item>
|
||||
<!-- pubkey -->
|
||||
<item>
|
||||
3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef
|
||||
</item>
|
||||
|
||||
<string name="fdroid_repo_address" formatted="false" translatable="false">https://f-droid.org/repo</string>
|
||||
<string name="fdroid_repo_description" formatted="false" translatable="false">The official F-Droid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time.</string>
|
||||
<string name="fdroid_repo_pubkey" formatted="false" translatable="false">3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef</string>
|
||||
<!-- name -->
|
||||
<item>F-Droid Archive</item>
|
||||
<!-- address -->
|
||||
<item>https://f-droid.org/archive</item>
|
||||
<!-- description -->
|
||||
<item>The archive repository of the F-Droid client. This contains older versions of
|
||||
applications from the main repository.
|
||||
</item>
|
||||
<!-- version -->
|
||||
<item>13</item>
|
||||
<!-- enabled -->
|
||||
<item>0</item>
|
||||
<!-- priority -->
|
||||
<item>20</item>
|
||||
<!-- pubkey -->
|
||||
<item>
|
||||
3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef
|
||||
</item>
|
||||
|
||||
<!-- 2 - https://f-droid.org/archive -->
|
||||
<string name="fdroid_archive_name" formatted="false" translatable="false">F-Droid Archive</string>
|
||||
<!-- name -->
|
||||
<item>Guardian Project</item>
|
||||
<!-- address -->
|
||||
<item>https://guardianproject.info/fdroid/repo</item>
|
||||
<!-- description -->
|
||||
<item>The official app repository of The Guardian Project. Applications in this repository
|
||||
are official binaries build by the original application developers and signed by the
|
||||
same key as the APKs that are released in the Google Play store.
|
||||
</item>
|
||||
<!-- version -->
|
||||
<item>13</item>
|
||||
<!-- enabled -->
|
||||
<item>0</item>
|
||||
<!-- priority -->
|
||||
<item>10</item>
|
||||
<!-- pubkey -->
|
||||
<item>
|
||||
308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f
|
||||
</item>
|
||||
|
||||
<integer name="fdroid_archive_version">13</integer>
|
||||
<integer name="fdroid_archive_inuse">0</integer>
|
||||
<integer name="fdroid_archive_priority">20</integer>
|
||||
<!-- name -->
|
||||
<item>Guardian Project Archive</item>
|
||||
<!-- address -->
|
||||
<item>https://guardianproject.info/fdroid/archive</item>
|
||||
<!-- description -->
|
||||
<item>The official repository of The Guardian Project apps for use with F-Droid client. This
|
||||
contains older versions of applications from the main repository.
|
||||
</item>
|
||||
<!-- version -->
|
||||
<item>13</item>
|
||||
<!-- enabled -->
|
||||
<item>0</item>
|
||||
<!-- priority -->
|
||||
<item>20</item>
|
||||
<!-- pubkey -->
|
||||
<item>
|
||||
308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f
|
||||
</item>
|
||||
|
||||
<string name="fdroid_archive_address" formatted="false" translatable="false">https://f-droid.org/archive</string>
|
||||
<string name="fdroid_archive_description" formatted="false" translatable="false">The archive repository of the F-Droid client. This contains older versions of applications from the main repository.</string>
|
||||
<string name="fdroid_archive_pubkey" formatted="false" translatable="false">3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef</string>
|
||||
|
||||
<!-- https://guardianproject.info/fdroid/repo -->
|
||||
<string name="guardianproject_repo_name" formatted="false" translatable="false">Guardian Project</string>
|
||||
|
||||
<integer name="guardianproject_repo_version">13</integer>
|
||||
<integer name="guardianproject_repo_inuse">0</integer>
|
||||
<integer name="guardianproject_repo_priority">10</integer>
|
||||
|
||||
<string name="guardianproject_repo_address" formatted="false" translatable="false">https://guardianproject.info/fdroid/repo</string>
|
||||
<string name="guardianproject_repo_description" formatted="false" translatable="false">The official app repository of The Guardian Project. Applications in this repository are official binaries build by the original application developers and signed by the same key as the APKs that are released in the Google Play store.</string>
|
||||
<string name="guardianproject_repo_pubkey" formatted="false" translatable="false">308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f</string>
|
||||
|
||||
<!-- https://guardianproject.info/fdroid/archive -->
|
||||
<string name="guardianproject_archive_name" formatted="false" translatable="false">Guardian Project Archive</string>
|
||||
|
||||
<integer name="guardianproject_archive_version">13</integer>
|
||||
<integer name="guardianproject_archive_inuse">0</integer>
|
||||
<integer name="guardianproject_archive_priority">20</integer>
|
||||
|
||||
<string name="guardianproject_archive_address" formatted="false" translatable="false">https://guardianproject.info/fdroid/archive</string>
|
||||
<string name="guardianproject_archive_description" formatted="false" translatable="false">The official repository of The Guardian Project apps for use with F-Droid client. This contains older versions of applications from the main repository.</string>
|
||||
<string name="guardianproject_archive_pubkey" formatted="false" translatable="false">308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f</string>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
|
@ -74,48 +74,29 @@ public class RepoProviderTest extends FDroidProviderTest {
|
||||
}
|
||||
|
||||
/**
|
||||
* The {@link DBHelper} class populates four default repos when it first creates a database:
|
||||
* * F-Droid
|
||||
* * F-Droid (Archive)
|
||||
* * Guardian Project
|
||||
* * Guardian Project (Archive)
|
||||
* The {@link DBHelper} class populates the default repos when it first creates a database.
|
||||
* The names/URLs/signing certificates for these repos are all hard coded in the source/res.
|
||||
*/
|
||||
@Test
|
||||
public void defaultRepos() {
|
||||
List<Repo> defaultRepos = RepoProvider.Helper.all(context);
|
||||
assertEquals(defaultRepos.size(), 4);
|
||||
assertRepo(
|
||||
defaultRepos.get(0),
|
||||
context.getString(R.string.fdroid_repo_address),
|
||||
context.getString(R.string.fdroid_repo_description),
|
||||
Utils.calcFingerprint(context.getString(R.string.fdroid_repo_pubkey)),
|
||||
context.getString(R.string.fdroid_repo_name)
|
||||
);
|
||||
assertEquals(defaultRepos.size(), 4); // based on app/src/main/res/default_repo.xml
|
||||
|
||||
assertRepo(
|
||||
defaultRepos.get(1),
|
||||
context.getString(R.string.fdroid_archive_address),
|
||||
context.getString(R.string.fdroid_archive_description),
|
||||
Utils.calcFingerprint(context.getString(R.string.fdroid_archive_pubkey)),
|
||||
context.getString(R.string.fdroid_archive_name)
|
||||
);
|
||||
|
||||
assertRepo(
|
||||
defaultRepos.get(2),
|
||||
context.getString(R.string.guardianproject_repo_address),
|
||||
context.getString(R.string.guardianproject_repo_description),
|
||||
Utils.calcFingerprint(context.getString(R.string.guardianproject_repo_pubkey)),
|
||||
context.getString(R.string.guardianproject_repo_name)
|
||||
);
|
||||
|
||||
assertRepo(
|
||||
defaultRepos.get(3),
|
||||
context.getString(R.string.guardianproject_archive_address),
|
||||
context.getString(R.string.guardianproject_archive_description),
|
||||
Utils.calcFingerprint(context.getString(R.string.guardianproject_archive_pubkey)),
|
||||
context.getString(R.string.guardianproject_archive_name)
|
||||
);
|
||||
String[] reposFromXml = context.getResources().getStringArray(R.array.default_repos);
|
||||
if (reposFromXml.length % DBHelper.REPO_XML_ARG_COUNT != 0) {
|
||||
throw new IllegalArgumentException(
|
||||
"default_repo.xml array does not have the right number of elements");
|
||||
}
|
||||
for (int i = 0; i < reposFromXml.length / DBHelper.REPO_XML_ARG_COUNT; i++) {
|
||||
int offset = i * DBHelper.REPO_XML_ARG_COUNT;
|
||||
assertRepo(
|
||||
defaultRepos.get(i),
|
||||
reposFromXml[offset + 1], // address
|
||||
reposFromXml[offset + 2], // description
|
||||
Utils.calcFingerprint(reposFromXml[offset + 6]), // pubkey
|
||||
reposFromXml[offset] // name
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
x
Reference in New Issue
Block a user