มีหลายวิธีในการเรียกใช้ตัวจัดการ SDK:
SDK Manager.exe ในรูทของ Android SDK
SDK Manager.exeในsdk\tools\libSDK ของ Android
Window -> Android SDK Manager เมนูใน Eclipse
android.batในsdk\toolsSDK ของ Android
ในกรณีของฉันดูเหมือนว่าจะandroid.batล้มเหลวในบรรทัด:
for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
เท่าที่บรรทัดนั้นกำลังทำ ... ถ้าฉันเรียกใช้ด้วยตนเอง: "[path_to_java]java" -jar lib\archquery.jar
มันคืนค่าเรียบร้อยแล้ว: x86_64
แต่เมื่อไฟล์แบตช์รันคำสั่งเดียวกันฉันไม่รู้ว่าทำไม แต่ล้มเหลวด้วยข้อความแสดงข้อผิดพลาด:
Unable to access jarfile lib\archquery.jar
ดังนั้นตัวแปรจึงswt_pathถูกตั้งค่าเป็นสตริงว่าง ทุกอย่างพังทลายลงมาจากที่นั่น
java_exeแฟ้มชุดการตั้งค่าค่าที่ถูกต้องสำหรับตัวแปร คนอื่น ๆ มักรายงานว่านี่เป็นปัญหา แต่วิธีแก้ปัญหาเหล่านั้นไม่เกี่ยวข้องในกรณีของฉัน
ผู้คนได้แนะนำการใส่ความคิดเห็นในบรรทัดปัญหาโดยการเพิ่ม REM ไปที่จุดเริ่มต้นและเพิ่มบรรทัดเพื่อตั้งค่าswt_pathตัวแปรด้วยตนเองซึ่งเป็นวิธีแก้ไขที่ถูกต้อง:
REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=lib\x86
แต่ปัญหาที่สำคัญในกรณีของฉันคือมันเลือกโหลดไฟล์ jar จากlib\x86หรือที่lib\x86_64นี่ ในบางจุดสิ่งต่าง ๆ เริ่มสับสนระหว่างข้อผิดพลาดไฟล์ BAT, JDK 32 บิตและ Android SDK 64 บิต
ดังนั้นวิธีแก้ไขปัญหาในกรณีของฉันคือการ:
- ถอนการติดตั้ง Java ทุกเวอร์ชัน
- ติดตั้ง JDK
- คุณสามารถใช้ Android SDK แบบ 32 บิตและติดตั้ง JDK แบบ 32 บิต
- หรือใช้ Android SDK 64 บิตและติดตั้ง JDK 64 บิต
- แต่ "bitness" ของ JDK ควรตรงกับ Android SDK ดูเหมือนว่าหนึ่งใน 32- บิตหรือ 64- บิตจะทำงานบนคอมพิวเตอร์ 64 บิต AS LONG AS the JDK bitness ตรงกับ Android SDK bitness
แก้ไข "android.bat"
หากใช้ Android SDK / JDK แบบ 32 บิตให้ใช้lib\x86:
REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=lib\x86
หากใช้ Android SDK / JDK 64 บิตให้ใช้lib\x86_64:
REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=lib\x86_64
หลังจากทำสิ่งนี้ฉันสามารถรัน SDK Manager ได้สำเร็จโดยการเรียกใช้android.batหรือจากเมนู Eclipse (แต่ยังไม่ได้โดยการเรียกใช้SDK Manager.exeไฟล์ใดไฟล์หนึ่งโดยตรง)