web-dev-qa-db-ja.com

XCodeビルドがJSとHTMLを更新しない

XCode 5.0.2およびCordova 3.4.0-0.1.3を使用しています-を使用してプロジェクトを作成した後、 Cordova CLIおよびXCodeで開く、index.htmlへの変更なし)ファイルとindex.jsファイルは、[実行]をクリックするとシミュレーターに引き継がれます。ターミナルを開いてCordovaビルドコマンドを発行し、シミュレーターを実行すると機能します

私はここのすべての指示に従いました:

Phonegap-シミュレーターでアプリを開発して起動する

xcode 4 + phonegap ...ビルド時にJSを更新しませんか?

そして、それはどれも機能しません!前後に切り替える必要があるので、誰もがこれに対する解決策を持っています。

19
Ksliman

それで、多くの検索の後、私はうまくいく解決策を見つけたようです、これが私がしたことです。他のStackoverflowの質問を見た後、私はこれが彼らのために働いたと言った誰かを見つけました。

Copy-www-build-step.shというファイルを見つけます。

私は[project_folder] /platforms/ios/cordova/lib/copy-www-build-step.shにありました

そのファイルで、rsync -a "..で始まる行を見つけます。

Rsync行に-cを追加して、rsync -a -c ".. ..

さて、私はそれを試しましたが、それだけでは機能しませんでした。私もヴィルからの答えを試しましたが、それは近づきましたが葉巻はありませんでした。最後に、Villeからコマンドを取得して、copy-www-build-step.shファイルに配置しました。

だから私のトップラインは今です

cd /path/to/your/cordova/project/
cordova prepare

SRC_DIR="www/"
DST_DIR="$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME/www"
COPY_HIDDEN=
ORIG_IFS=$IFS
IFS=$(echo -en "\n\b")
.....
.....
.....etc etc 

そして今、私は変更を加え、実行をクリックすると、すべてが更新されます。これが他の誰かに役立つことを願っています。

11
Ksliman

XCodeプロジェクトのビルドにプレアクションスクリプトを追加できます。これをする:

  1. メニューから[製品]> [スキーム]> [スキームの編集]を選択します(またはキーボードの⌘<)
  2. 左から[ビルド]> [事前アクション]を選択します
  3. [+]をクリックして、[新しいスクリプト実行アクション]を選択します
  4. 次のようなスクリプトを追加します。

    cd /path/to/your/cordova/project/
    cordova prepare ios > xcode-prepare-results.txt
    

これで、XCodeはプロジェクトをビルドする前に常にcordova prepareを実行する必要があるため、ターミナルにジャンプする必要はありません。準備の出力は、ファイルxcode-prepare-results.txtで確認できます。

Cordova実行可能ファイルの設定方法と使用するシェルによっては、スクリプトがcordovaを見つけるために、シェルを変更するか、PATHを変更する必要がある場合があることに注意してください。

12
ville

このスレッドの他の回答は、私にとってはうまくいかなかったか、cordovaプラグインを台無しにしました。 InAppBrowser、それで私はついにこれを思いついた:

ファイルを編集しますcopy-www-build-step.shそして最初に次の行を追加します:

cp -fR ../../www/ www/

したがって、次のようになります。

...
cp -fR ../../www/ www/ # new code

SRC_DIR="www/"
...

このようにして、コードが適切に更新されプラグインが機能します

7
Yossi Shasho

copy-www-build-step.shファイルも編集しましたが、ユーザーフォルダーからの絶対パスは使用しません。他の開発者と協力している場合は、コードをチェックアウトするたびに変更する必要があります。

大したことではありません。変更するだけです。

SRC_DIR="www/"

に:

SRC_DIR="../../www/"

[〜#〜] update [〜#〜] CordovaとPhonegapで私のために働いた。

5
Ryan Ore

XCodeの[実行]ボタンをクリックしたときに、ソースファイルがwwwソースディレクトリからplatforms/ios/wwwディレクトリに自動的にコピーされるようにするには:

XCodeで、[製品]-> [スキーム]-> [スキームの編集...]を選択します。
ビルド->プレアクションの三角形を展開します
「+」をクリックして、新しいプレアクションを作成します

「シェル」設定は空白のままにすることができます。
ビルドするプロジェクトに「ビルド設定の提供元」を設定します。これは重要。

スクリプト領域に次のように入力します。

cd ${PROJECT_DIR}/../..
echo "--- Start ---" > xcode-prepare-ios-results.txt
echo "Running cordova prepare ios command..."
pwd >> xcode-prepare-ios-results.txt
cordova prepare ios --verbose >> xcode-prepare-ios-results.txt
echo "--- Finished ---"  >> xcode-prepare-ios-results.txt

これは、XCode8.2およびApacheCordova6.xで機能します。

5
CodeWeenie

cordova prepare ios "構築段階中:

  1. Xcodeを開きます。
  2. プロジェクトを選択します。
  3. 「ビルドフェーズ」に進みます。
  4. 「+」に進み、「新しい実行スクリプトフェーズ」を追加します。
  5. このセクションを「wwwディレクトリのコピー」の前に移動します。
  6. 次の行を追加します(Macの場合):
    • cd /Users/*/YOUR_PROJECT_FOLDER(プロジェクトフォルダを変更する)
    • /Users/*/.nvm/versions/node/v?.?.?/bin/node node_modules/cordova/bin/cordova prepare ios(パスをノードバージョンに変更します)

「再生」後、www-folderは自動的に更新されます!

2
Sbat

@Kslimanシステムで動作するようにコードを少し変更し、少し一般的にしました。

ファイルの先頭コピー-www-build-step.sh

## New Code Begin ###

cd ../../
PATH=${PATH}:/usr/local/bin
cordova prepare ios

## New Code End ###

SRC_DIR="www/"
2
Karman De Lange

Xcodeプロジェクトをビルドする前にクリーンアップすることをお勧めします。そしてもう1つ、xcode内ではなく、cordovaビルドを使用してプロジェクトを再ビルドするようにしてください。これは、まったく異なるためです。

cordova build yourproject
2
Mohammad Nurdin

単に入力してください:

cordova prepare

ターミナルでXcodeでプロジェクトを再実行します

2

簡単な解決策は、以下を使用してコルドバでアプリを構築することです。

Sudo cordova build ios

次に、xcode>製品>クリーンに移動します

次に、xcode>実行(再生ボタン)に移動します

2
Alex Harper

私がしなければならなかったのは、私のプロジェクトの完全な絶対srcパスを含めることだけでした。例えば:

  1. プロジェクトディレクトリから、vim platform/ios/cordova/lib/copy-www-build-step.sh
  2. sRC_DIRをwwwの絶対パスに変更します。SRC_DIR= "/ Users/michael/Documents/Development/SampleMobileApp/www /"
  3. 保存してビルドすれば、準備は完了です。
1
Michael Bordash

Xcodeから直接htmlを変更する場合は、メインフォルダーではなくステージングフォルダーのcode/htmlを変更する必要があります。

ステージングフォルダーでは、メインフォルダーと同じ構造になりますが、xcode(iOS)ビルドに直接反映されます。

ステージングフォルダー

注:xcodeで行った変更は、cordovaビルド/実行から再度ビルドすると置き換えられるため、cordovaコマンドを実行する前に、変更内容をメインフォルダーにコピーしてください。

この回答からより多くの情報を得ることができます:PhoneGap 3.4のステージングフォルダーの目的?このフォルダ内のindex.htmlへの変更のみが認識されますか?

これは、以下から取得した正しい解決策です。

Cordova + Xcode 7.3(html + Javascript)は、ビルドおよびエミュレート時に変更または更新されません

0
KJD

私の場合、コードにエラーがありました。 npm startを実行して見つける必要がありました。

0
Trip

コルドバが混乱することがあることがわかりました...「cordovaplatformrm ios」(プラグインはそのままにしておく)を実行してから、「cordova platform add iOS」を実行すると、すべてのプラグインがプラットフォームに再インストールされます。 ..その後、ビルドを再試行します。

0
Jim Beasley

cordova buildを使用するたびに、プラットフォーム固有のwwwファイルのコンテンツが上書きされます。そのため、代わりにcordova compileを使用します。

ヘルプから:

compile <platforms>は、プラットフォームプロジェクトを準備せずにコンパイルします

多くのプラットフォーム用のモバイルアプリを作成していて、プラットフォーム固有の改善を行う必要がある場合は特に、プロジェクト全体をビルドしないように変更をコンパイルすることが重要です。

0
Adam Faryna