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);
|
db.execSQL(CREATE_TABLE_APP_PREFS);
|
||||||
ensureIndexes(db);
|
ensureIndexes(db);
|
||||||
|
|
||||||
|
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(
|
insertRepo(
|
||||||
db,
|
db,
|
||||||
context.getString(R.string.fdroid_repo_name),
|
defaultRepos[offset], // name
|
||||||
context.getString(R.string.fdroid_repo_address),
|
defaultRepos[offset + 1], // address
|
||||||
context.getString(R.string.fdroid_repo_description),
|
defaultRepos[offset + 2], // description
|
||||||
context.getString(R.string.fdroid_repo_pubkey),
|
defaultRepos[offset + 3], // version
|
||||||
context.getResources().getInteger(R.integer.fdroid_repo_version),
|
defaultRepos[offset + 4], // enabled
|
||||||
context.getResources().getInteger(R.integer.fdroid_repo_inuse),
|
defaultRepos[offset + 5], // priority
|
||||||
context.getResources().getInteger(R.integer.fdroid_repo_priority)
|
defaultRepos[offset + 6] // pubkey
|
||||||
);
|
|
||||||
|
|
||||||
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)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void insertRepo(SQLiteDatabase db, String name, String address,
|
private void insertRepo(SQLiteDatabase db, String name, String address,
|
||||||
String description, String pubKey, int version, int inUse,
|
String description, String version, String enabled,
|
||||||
int priority) {
|
String priority, String pubKey) {
|
||||||
|
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(RepoTable.Cols.ADDRESS, address);
|
values.put(RepoTable.Cols.ADDRESS, address);
|
||||||
values.put(RepoTable.Cols.NAME, name);
|
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.SIGNING_CERT, pubKey);
|
||||||
values.put(RepoTable.Cols.FINGERPRINT, Utils.calcFingerprint(pubKey));
|
values.put(RepoTable.Cols.FINGERPRINT, Utils.calcFingerprint(pubKey));
|
||||||
values.put(RepoTable.Cols.MAX_AGE, 0);
|
values.put(RepoTable.Cols.MAX_AGE, 0);
|
||||||
values.put(RepoTable.Cols.VERSION, version);
|
values.put(RepoTable.Cols.VERSION, Utils.parseInt(version, 0));
|
||||||
values.put(RepoTable.Cols.IN_USE, inUse);
|
values.put(RepoTable.Cols.IN_USE, Utils.parseInt(enabled, 0));
|
||||||
values.put(RepoTable.Cols.PRIORITY, priority);
|
values.put(RepoTable.Cols.PRIORITY, Utils.parseInt(priority, Integer.MAX_VALUE));
|
||||||
values.put(RepoTable.Cols.LAST_ETAG, (String) null);
|
values.put(RepoTable.Cols.LAST_ETAG, (String) null);
|
||||||
values.put(RepoTable.Cols.TIMESTAMP, 0);
|
values.put(RepoTable.Cols.TIMESTAMP, 0);
|
||||||
|
|
||||||
@ -542,15 +516,16 @@ class DBHelper extends SQLiteOpenHelper {
|
|||||||
if (!descriptionExists) {
|
if (!descriptionExists) {
|
||||||
db.execSQL("alter table " + RepoTable.NAME + " add column " + RepoTable.Cols.DESCRIPTION + " text");
|
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"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<!-- 1 - https://f-droid.org/repo -->
|
<string-array name="default_repos">
|
||||||
<string name="fdroid_repo_name" formatted="false" translatable="false">F-Droid</string>
|
|
||||||
|
|
||||||
<integer name="fdroid_repo_version">13</integer>
|
<!-- name -->
|
||||||
<integer name="fdroid_repo_inuse">1</integer>
|
<item>F-Droid</item>
|
||||||
<integer name="fdroid_repo_priority">10</integer>
|
<!-- 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>
|
<!-- name -->
|
||||||
<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>
|
<item>F-Droid Archive</item>
|
||||||
<string name="fdroid_repo_pubkey" formatted="false" translatable="false">3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef</string>
|
<!-- 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 -->
|
<!-- name -->
|
||||||
<string name="fdroid_archive_name" formatted="false" translatable="false">F-Droid Archive</string>
|
<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>
|
<!-- name -->
|
||||||
<integer name="fdroid_archive_inuse">0</integer>
|
<item>Guardian Project Archive</item>
|
||||||
<integer name="fdroid_archive_priority">20</integer>
|
<!-- 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-array>
|
||||||
<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>
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -74,49 +74,30 @@ public class RepoProviderTest extends FDroidProviderTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link DBHelper} class populates four default repos when it first creates a database:
|
* The {@link DBHelper} class populates the default repos when it first creates a database.
|
||||||
* * F-Droid
|
|
||||||
* * F-Droid (Archive)
|
|
||||||
* * Guardian Project
|
|
||||||
* * Guardian Project (Archive)
|
|
||||||
* The names/URLs/signing certificates for these repos are all hard coded in the source/res.
|
* The names/URLs/signing certificates for these repos are all hard coded in the source/res.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void defaultRepos() {
|
public void defaultRepos() {
|
||||||
List<Repo> defaultRepos = RepoProvider.Helper.all(context);
|
List<Repo> defaultRepos = RepoProvider.Helper.all(context);
|
||||||
assertEquals(defaultRepos.size(), 4);
|
assertEquals(defaultRepos.size(), 4); // based on app/src/main/res/default_repo.xml
|
||||||
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)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
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(
|
assertRepo(
|
||||||
defaultRepos.get(1),
|
defaultRepos.get(i),
|
||||||
context.getString(R.string.fdroid_archive_address),
|
reposFromXml[offset + 1], // address
|
||||||
context.getString(R.string.fdroid_archive_description),
|
reposFromXml[offset + 2], // description
|
||||||
Utils.calcFingerprint(context.getString(R.string.fdroid_archive_pubkey)),
|
Utils.calcFingerprint(reposFromXml[offset + 6]), // pubkey
|
||||||
context.getString(R.string.fdroid_archive_name)
|
reposFromXml[offset] // 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)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void canAddRepo() {
|
public void canAddRepo() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user