Help us understand the problem. What is going on with this article?

[俺メモ]新しいTitanium SDK がでたらやること

More than 5 years have passed since last update.

当然ダウンロードは済んでいる前提。

Android アプリ作成時の署名方法変更

なんでそんなことが必要なの?は、こちらのページを参照のこと。

android/builder.py
def get_sigalg(self):
    output = run.run([self.keytool,
        '-v',
        '-list',
        '-keystore', self.keystore,
        '-storepass', self.keystore_pass,
        '-alias', self.keystore_alias
    ], protect_arg_positions=(6,))

    # If the keytool encounters an error, that means some of the provided
    # keychain info is invalid and we should bail anyway
    run.check_output_for_error(output, r'RuntimeException: (.*)', True)
    run.check_output_for_error(output, r'^keytool: (.*)', True)

    #
    # ここを変更
    # Edited by sngmr for Error installing apk
    #
    match = re.search(r'Signature algorithm name: (.*)', output)
    if match is not None:
        if match.group(1) == "SHA256withRSA":
            return "SHA1withRSA"
        else:
            return match.group(1)

    # Return the default:
    return "MD5withRSA"
android/cli/commands/_build.js
// 320行目付近
    validate: function (value, callback) {
        // if there's a value, then they entered something, otherwise let the cli prompt
        if (value) {
            var selectedAlias = value.toLowerCase(),
                alias = _t.keystoreAlias = _t.keystoreAliases.filter(function (a) { return a.name && a.name.toLowerCase() == selectedAlias; }).shift();
            if (!alias) {
                return callback(new Error(__('Invalid "--alias" value "%s"', value)));
            }
            if (alias.sigalg && alias.sigalg.toLowerCase() == 'sha256withrsa') {
                logger.warn(__('The selected alias %s uses the %s signature algorithm which will likely have issues with Android 4.3 and older.', ('"' + value + '"').cyan, ('"' + alias.sigalg + '"').cyan));
                logger.warn(__('Certificates that use the %s or %s signature algorithm will provide better compatibility.', '"SHA1withRSA"'.cyan, '"MD5withRSA"'.cyan));

                // ここを追加 for Java 7 で Keystore を作ってしまってるのの対応
                logger.warn(__('Force change %s to %s', ('"' + alias.sigalg + '"').cyan, '"SHA1withRSA"'.cyan));
                alias.sigalg = 'SHA1withRSA';
            }
        }
        callback(null, value);
    }

以下はもう不要だと思う。Titaniumが公式にGenymotion対応したから。

Genymotion対応

対応の詳細はこちら

android/androidsdk.py
def list_devices(self):
    adb = self.get_adb()
    (out, err) = subprocess.Popen([adb, 'devices'], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
    if type(err) != types.NoneType and len(err) > 0:
        raise Exception(err)
    devices = []
    for line in out.splitlines():
        line = line.strip()
        if line.startswith("List of devices"): continue
        elif line.startswith("emulator-"):
            (name, status) = line.split()
            port = int(name[name.index("-")+1:])
            offline = False
            if status == "offline":
                offline = True
            devices.append(Device(name, port, True, offline))
        # Added by sngmr
        elif line.startswith("192.168.56."):
            (name, status) = line.split()
            port = int(name[name.index(":")+1:])
            offline = False
            if status == "offline":
                offline = True
            devices.append(Device(name, port, True, offline))
        elif "device" in line:
            name = line.split()[0]
            devices.append(Device(name))
    return devices
android/cli/commands/_build.js
// 448行目付近
// Changed by sngmr
emulatorProcess = spawn('python', ['--version'], { detached: true, stdio: 'ignore' });
// emulatorProcess = spawn('python', emulatorCmd, { detached: true, stdio: 'ignore' });

///
/// 中略
///

// 465行目付近
devicesProcess.on('exit', function (code, status) {
    if (results.indexOf('emulator') != -1) {
        logger.info(__('Emulator is running') + '\n');
    // Addedn by sngmr
    } else if (results.indexOf('192.168.56.') != -1) {
        logger.info(__('AndroVM Emulator is running') + '\n');
    } else {
        emulatorRunning = false;
        logger.info(__('Emulator process exited successfully') + '\n');
        logcatProcess && logcatProcess.kill('SIGKILL');
        adbProcess && adbProcess.kill('SIGKILL');
        buildProcess && buildProcess.kill('SIGKILL');
        emulatorProcess = buildProcess = logcatProcess = adbProcess = null;
    }
});
sngmr
やぁやぁ。sngmrだよ! コネクションワークスの森 真吾だよ! Blogは近況報告なんかに特化させて、技術的なことはこっちに書いていこうと思うよ。 モトクロスとプログラムと粉砕骨折と: http://d.hatena.ne.jp/sngmr コネクションワークス: http://connectionworks.jp
http://sngmr.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away